Найти тему

#14 SQL-инъекции. Обходим защиту и получаем доступ ко всем записям.

Здравствуйте, дорогие друзья.
Рассмотрим ситуацию, при которой я сталкиваюсь при тестировании на проникновение, примерно в 50% сайтов.

Перейдем на страницу веб-приложения DVWA, которое называется «SQL Injection», и рассмотрим уже использованное нами выражение, только измененное: «+uNiOn/**/sEleCt/**/table_name, 2+fRom information_schema.tables%23». Вставим это выражение в адресную строку URL:

-2

Все сработало, и мы видим все таблицы, которые существуют в этой базе данных.

Хотелось бы затронуть один вариант развития событий, а именно, при уязвимом веб-сайте происходит запуск выражения, то Вы можете видеть только один результат, в конкретный момент времени. Это происходит из-за того, что страница запрограммирована отображать один результат.

Можем рассмотреть это наглядно, на низком уровне безопасности, изменив код в уязвимой машине Metasploitable 2, в частности DVWA.

Переходим на машину Metasploitable 2, и отредактируем файл на низком уровне безопасности, чтобы потом вернуться и увидеть результат наших манипуляций.

Metasploitable 2 выгдядит вот так:

-3

Введем команду «sudo nano /var/www/dvwa/vulnerabilities/sqli/source/low.php»:

-4

Nano — это удобный текстовый редактор, и далее идет путь к файлу «low.php». Осталось ввести пароль администратора и начать просматривать код:

-5

Нам нужно поработать с циклом while, и закомментировать его. Этот цикл проходит по всем символам, что нам не нужно.

Закомментируем начало цикла while, и его конец:

-6

Вам не обязательно вдаваться в подробности кода, если Вы не программист, так как нас интересует тестирование на проникновение.

Для сохранения файла, нужно нажать комбинации клавиш: Ctrl+O, далее Enter и Ctrl+X для выхода из редактора.

Переходим в DVWA, и протестируем то же выражение:

-7

Выражение не работает, из-за наших исправлений в коде.

Произошел вывод записи администратора.

Продолжим исследование и введем вместо цифры 1, значение -1, и посмотрим, что получится:

-8

Вновь отображается один результат. Это происходит потому, что мы откорректировали код на этом уровне безопасности.

Обратите внимание, что на сервере, Вы можете выбрать любое SQL-выражение. Мы можем выбрать определенные записи в базе данных.

Попробуем перебрать все таблицы на веб-сайте. Воспользуемся новым выражением «limit». Выражение примет вид:«1'+uNiOn/**/sEleCt/**/table_name, 2+fRom information_schema.tables+limit+1,2%23».

Сущность выражения limit заключается в выборке между первым и вторым значением.

Введем значение в адресную строку URL:

-9

Видим отображение другой таблицы.

Таким образом, можно изменять значение таблиц, сделав выборку в базе данных.

Также можем воспользоваться выражением «where». Запись примет вид: «1'+uNiOn/**/sEleCt/**/table_name, 2+fRom information_schema.tables+where+table_schema='dvwa'+limit+1,2%23»:

-10

Мы можем перебрать все таблицы, используя выражение «limit».

​На этом все. Всем хорошего дня!