Задача о поиске следов взлома в дампе трафика
Делимся интересной задачкой об анализе дампа трафика и показываем решение.
Условие
На одном сервере находятся два уязвимых веб-приложения — к слову, очень популярных среди специалистов в сфере ИБ, наверняка вы уже пытались их взломать. В сети этого сервера размещен второй хост, с которого зафиксированы попытки эксплуатации уязвимостей веб-приложений.
Задача
Определите по дампу трафика:
- на каких портах отвечают веб-приложения,
- какая нагрузка в SQL-инъекции использована для обхода авторизации в первом приложении,
- какая нагрузка в SQL-инъекции использована для получения логинов и хэшей паролей во втором приложении,
- решение задач каких известных приложений отражено в дампе?
Файл dump.pcap.
Решение
Открываем .pcap — файл в Wireshark:
В задании говорится о веб-приложениях, значит, нас интересует HTTP. Убедимся, что кроме него не использовалось протоколов.
В Wireshark перейдем в Статистика → Иерархия протоколов:
Отфильтруем трафик. В Wireshark в поле фильтра добавим «HTTP» и посмотрим статистику по портам: Статистика → IPv4 Statistics → Destinations and Ports:
По TCP информацией обменивались два адреса: 192.168.0.3 и 192.168.0.5.
Добавляем фильтр «http and ip.src == 192.168.0.5» и смотрим, что запросы GET и POST идут как раз от 192.168.0.5 к 192.168.0.3 по портам 80/TCP и 5000/TCP.
Меняем фильтр на «ip.src == 192.168.0.3» и видим ответы (с портов 80/TCP и 5000/TCP) на запросы. Можно сделать вывод, что сайты опубликованы на 192.168.0.3:80 и 192.168.0.3:5000.
Добавляем фильтр «http and tcp.port == 5000 and ip.src == 192.168.0.5». Видим обращения методом POST на URI /rest/user/login.
Меняем фильтр на «http and tcp.port == 5000 and http contains «login»» и смотрим запросы к странице авторизации.
В теле запроса видно, что происходил перебор паролей для учетной записи admin:
Если отследить ответ на запрос (правая кнопка мыши на строке запроса → Отслеживать → HTTP Stream), то можно понять, что приложение отвечало «Invalid email or password» на все запросы, кроме этого:
Авторизация прошла успешно, то есть для обхода авторизации использовалась нагрузка SQL-инъекции «‘ or 1 — -» в поле email.
Теперь необходимо найти инъекцию, используемую для приложения на порту 80/TCP. Добавляем фильтр «http and tcp.port == 80 and ip.src == 192.168.0.5» и видим обращения на URI /login.php и на /sqli_1.php. Из HTTP-заголовков понятно, что происходило сканирование с помощью sqlmap:
Из запросов можно сделать вывод, что уязвимым был параметр title на странице sqli_1.php. В него выполнялись подстановки нагрузок SQL-инъекций. Текст отображается в URL ASCII кодировке.
Применив фильтр «http and tcp.port == 80 and http contains «200»» и просмотрев запросы/ответы, можно найти ответ сервера с учетными записями пользователей и хэшами их паролей:
Отследив пакет, находим нагрузку SQL-инъекции:
Man%27+union+select+1%2Cuser%28%29%2Cdatabase%28%29%2C%28select+GROUP_CONCAT%28login%2C+%27%5Cn%27%2C+password%2C+%27%5Cn%27%29+from+users%29%2C5%2C6%2C7+—+-
Он позволил получить учетные записи и хэши паролей.
Наверняка вы узнали задания или увидели наименование в HTML-страницах:
- bWAPP по адресу 192.168.0.3:80;
- OWASP JuiceShop (например, по URI http://192.168.0.3:5000/assets/public/images/JuiceShop_Logo.png) по адресу 192.168.0.3:5000.
Ответ
На каких портах отвечают веб-приложения?
80/TCP, 5000/TCP
Какую нагрузка в SQL-инъекции использовал злоумышленник для обхода авторизации в первом приложении?
‘ or 1 — —
Какую нагрузку в SQL-инъекции он использовал для получения логинов и хэшей паролей во втором приложении?
Man%27+union+select+1%2Cuser%28%29%2Cdatabase%28%29%2C%28select+GROUP_CONCAT%28login%2C+%27%5Cn%27%2C+password%2C+%27%5Cn%27%29+from+users%29%2C5%2C6%2C7+—+-
Решение задач каких известных приложений отражено в дампе?
bWAPP, OWASP JuiceShop