Обнаружение точек внедрения путем сканирования веб-сайта с помощью sqlmap

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

Введение

SQL-инъекция — это распространенная веб-уязвимость, которая позволяет злоумышленникам вмешиваться в запросы, которые приложение отправляет к своей базе данных. sqlmap — это инструмент тестирования на проникновение с открытым исходным кодом, который автоматизирует процесс обнаружения и эксплуатации уязвимостей SQL-инъекций и захвата серверов баз данных.

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

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

Определение корневого URL целевого веб-сайта

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

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

curl http://127.0.0.1:8000

Вы должны увидеть некоторый HTML-вывод, указывающий на то, что сервер активен. Корневым URL для нашего целевого веб-сайта будет http://127.0.0.1:8000.

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

Использование флага --crawl для обнаружения ссылок и форм

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

Базовый синтаксис использования --crawl следующий:

sqlmap -u < target_url > --crawl

Попробуем запустить sqlmap с флагом --crawl на нашем целевом URL. Эта команда начнет процесс сканирования.

sqlmap -u http://127.0.0.1:8000 --crawl

Вы увидите, как sqlmap начнет сканировать веб-сайт, идентифицируя ссылки и формы. В процессе он задаст вам несколько вопросов. Для целей этой лаборатории вы можете в целом принимать параметры по умолчанию, нажимая Enter или вводя y при запросе.

Например, когда вас спросят "do you want to keep the results in a CSV file?" (хотите ли вы сохранить результаты в CSV-файл?), вы можете ввести n и нажать Enter. Когда вас спросят "do you want to test for other common vulnerabilities?" (хотите ли вы тестировать на другие распространенные уязвимости?), вы можете ввести n и нажать Enter.

Установка глубины сканирования с помощью --crawl-depth=2

На этом шаге вы уточните процесс сканирования, установив определенную глубину сканирования с помощью флага --crawl-depth. Глубина сканирования определяет, на сколько уровней sqlmap будет углубляться при обнаружении новых URL-адресов. Глубина 1 означает, что будут посещаться только ссылки непосредственно с начального URL. Глубина 2 означает, что будут посещаться ссылки с начального URL, а затем ссылки с этих вновь обнаруженных страниц и так далее.

Для нашего небольшого целевого веб-сайта глубины 2 будет достаточно для обнаружения всех доступных страниц.

Синтаксис установки глубины сканирования следующий:

sqlmap -u <target_url> --crawl --crawl-depth=<depth_value>

Выполним sqlmap снова, на этот раз указав глубину сканирования 2.

sqlmap -u http://127.0.0.1:8000 --crawl --crawl-depth=2

Обратите внимание, как изменится вывод sqlmap, потенциально обнаруживая больше ссылок или форм по мере углубления в структуру сайта. Опять же, вы можете принимать параметры по умолчанию, нажимая Enter, или вводить n для дополнительных тестов.

Выполнение операции сканирования и тестирования

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

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

Объединим эти флаги с нашей предыдущей командой:

sqlmap -u http://127.0.0.1:8000 --crawl --crawl-depth=2 --batch --forms

Эта команда будет:

  1. Начинать сканирование с http://127.0.0.1:8000.
  2. Углубляться на два уровня (--crawl-depth=2).
  3. Автоматически отвечать на запросы значениями по умолчанию (--batch).
  4. Специально искать и тестировать HTML-формы (--forms).

Наблюдайте за выводом. sqlmap перечислит обнаруженные URL-адреса и протестированные параметры. Он также укажет, если найдет какие-либо потенциальные точки внедрения.

Просмотр обнаруженных URL-адресов и потенциальных точек внедрения

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

После завершения работы sqlmap предоставит сводку своих результатов. Ищите строки, указывающие на "parameter is vulnerable" (параметр уязвим) или аналогичные сообщения.

Даже если sqlmap не найдет подтвержденной уязвимости SQL-инъекции (что ожидаемо для нашего простого демонстрационного сайта), он все равно покажет вам URL-адреса и параметры, которые он тестировал. Эта информация имеет решающее значение для ручного анализа или дальнейшего автоматизированного тестирования.

Примеры фрагментов вывода, которые вы можете увидеть:

...
[INFO] retrieved new form: 'http://127.0.0.1:8000/search.php' (GET)
...
[INFO] testing GET parameter 'id'
...
[INFO] testing GET parameter 'param'
...
[INFO] testing GET parameter 'query'
...

Ключевой вывод заключается в том, что sqlmap успешно просканировал сайт, идентифицировал index.php, page.php и search.php (через форму), а затем приступил к тестированию их соответствующих параметров (id, name, param, query). Это демонстрирует мощь функции сканирования sqlmap в автоматическом отображении поверхности атаки целевого приложения.

Вы также можете проверить файлы журналов sqlmap (обычно в ~/.sqlmap/output/) для получения более подробного отчета, хотя для этой лаборатории вывод в консоли достаточен.

Резюме

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

Завершив эту лабораторию, вы теперь понимаете, как:

  • Определять начальный URL для сканирования sqlmap.
  • Использовать флаг --crawl для обнаружения ссылок и форм.
  • Контролировать глубину сканирования с помощью --crawl-depth.
  • Выполнять автоматизированную операцию сканирования и тестирования с помощью --batch и --forms.
  • Интерпретировать вывод sqlmap для идентификации обнаруженных URL-адресов, параметров и потенциальных точек внедрения.

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