Добавить в корзинуПозвонить
Найти в Дзене
B0rn2beR00T

Как докрутить SQLi-уязвимость до LFI и прочитать файлы сервера

Приветствую! В данной статье мы рассмотрим интересный кейс, где мы доведём уязвимость SQLi до LFI и тем самым прочитаем конфигурационный файл сервера. Охотимся на SQL-инъекцию Для начала сохраняем запрос с Burp Suite в файл burp.txt, где создан запрос на авторизацию на веб-ресурсе. Выставляем уровень и риск поиска SQLi и ждём. Параметр id я приметил в Burp Suite и передал его во флаге -p. С него и начнём тестирование. Запускаем sqlmap следующим образом: sqlmap -r burp.txt --level=5 --risk=3 -p id Sqlmap что-то находит, а это значит, что удача на нашей стороне! Тулза нашла Time-Based blind SQL-инъекцию. Здорово! Крутим дальше! Наш найденный пейлоад выглядит следующим образом: Разведываем базу данных Добавим флаг --current-user, чтобы узнать под каким пользователем выполняются запросы к БД. sqlmap -r burp.txt --current-user Нам продолжает везти и пользователем оказывается root@localhost. Теперь при помощи флага --privileges просмотрим привилегии пользователя в текущей БД. sqlmap -r b

Приветствую!

В данной статье мы рассмотрим интересный кейс, где мы доведём уязвимость SQLi до LFI и тем самым прочитаем конфигурационный файл сервера.

Охотимся на SQL-инъекцию

Для начала сохраняем запрос с Burp Suite в файл burp.txt, где создан запрос на авторизацию на веб-ресурсе.

Выставляем уровень и риск поиска SQLi и ждём. Параметр id я приметил в Burp Suite и передал его во флаге -p. С него и начнём тестирование.

Запускаем sqlmap следующим образом:

sqlmap -r burp.txt --level=5 --risk=3 -p id

-2
-3

Sqlmap что-то находит, а это значит, что удача на нашей стороне! Тулза нашла Time-Based blind SQL-инъекцию. Здорово! Крутим дальше!

Наш найденный пейлоад выглядит следующим образом:

-4

Разведываем базу данных

Добавим флаг --current-user, чтобы узнать под каким пользователем выполняются запросы к БД.

sqlmap -r burp.txt --current-user

-5

Нам продолжает везти и пользователем оказывается root@localhost. Теперь при помощи флага --privileges просмотрим привилегии пользователя в текущей БД.

sqlmap -r burp.txt --privileges

-6

Судя по выводу, у нас есть все права (чтение, удаление таблиц и т.д.), но нет записи. В таком случае, пробуем прочитать /etc/passwd, чтобы доказать возможность чтения системных файлов.

Дергаем системные файлы (LFI)

Чтобы процесс не затянулся ставим --threads=10, для многопоточной работы инструмента.

sqlmap -r burp.txt –file-read/etc/passwd –threads=10

-7

В итоге получаем вот такой hex:

-8

Обычно sqlmap сама может расшифровать hex и выдать его в приличном виде, однако сессия тулзы была прервана. Теперь придётся руками закидывать что имеем в декодер.

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

-9

Так мы преодолели небольшой путь от уязвимости SQLi и при помощи неё развили атаку до LFI. Конечно, поковырявшись ещё можно было найти и креды к каким-то сервисам или же что-то ещё интереснее, но для этого следует знать конечный путь к файлу. Это легко указать, если он дефолтный.

Выводы

Важно учитывать, что неверные настроенные права в БД могут привести к подобным проблемам. SQLi, будучи одной проблемой на хосте, ещё бы повлекла утечку информации, но мисконфиг с правами позволил сделать со всего этого LFI. Если бы у нас были права и на запись, то RCE долго не заставила себя ждать.

Спасибо за внимание! Не забывайте оценивать мой труд лайком и, по возможности, комментарием. Всех благ!