Введение
В этой лабораторной работе вы изучите, как использовать мощные скрипты-обфускаторы (tamper scripts) sqlmap для обхода распространенных фильтров веб-приложений. Многие веб-приложения реализуют базовую проверку и фильтрацию ввода для предотвращения атак SQL-инъекций. Эти фильтры могут блокировать распространенные SQL-ключевые слова, пробелы или другие символы. Скрипты-обфускаторы sqlmap могут автоматически изменять полезные нагрузки SQL-инъекций для обхода этих фильтров, делая ваши атаки более эффективными. Вы научитесь определять сценарии, где требуется обход, просматривать доступные скрипты-обфускаторы, применять конкретный скрипт и наблюдать его влияние на генерируемые полезные нагрузки.
Определение сценария, требующего обхода
На этом этапе вы поймете, почему необходимы скрипты-обфускаторы. Веб-приложения часто используют базовые фильтры для предотвращения распространенных шаблонов SQL-инъекций. Например, фильтр может блокировать пробелы или заменять их другими символами, либо блокировать ключевые слова, такие как UNION или SELECT. Когда стандартные полезные нагрузки sqlmap блокируются, вам необходимо модифицировать их для обхода этих фильтров.
Рассмотрим гипотетический сценарий, в котором веб-приложение фильтрует пробелы во вводе пользователя. Если sqlmap попытается внедрить полезную нагрузку типа ' OR 1=1--, фильтр может преобразовать ее в 'OR1=1--, делая полезную нагрузку неэффективной. Скрипты-обфускаторы помогают sqlmap генерировать альтернативные полезные нагрузки, которые могут обойти такие ограничения.
Чтобы смоделировать базовое сканирование sqlmap без каких-либо техник обхода, мы будем использовать фиктивный URL. Это поможет нам в дальнейшем сравнить полезные нагрузки, сгенерированные со скриптами-обфускаторами и без них.
Выполните следующую команду sqlmap для начала базового сканирования фиктивной цели. Обратите внимание, что эта цель на самом деле не уязвима, но она позволяет нам наблюдать за поведением sqlmap и генерируемыми полезными нагрузками.
sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" --dump --batch --forms --level 1 --risk 1 --parse-errors --technique=U --eta --output-dir=/tmp/sqlmap_output_no_tamper
Эта команда попытается выполнить базовое сканирование SQL-инъекций. Опция --dump используется для дампа данных, --batch запускает в неинтерактивном режиме, --forms проверяет формы, --level 1 --risk 1 устанавливают уровень обнаружения и риск, --parse-errors анализирует сообщения об ошибках, --technique=U указывает на SQL-инъекцию с использованием UNION-запроса, --eta отображает предполагаемое время прибытия, а --output-dir указывает каталог вывода.
Наблюдайте за выводом. Хотя эта конкретная команда может не найти уязвимостей по указанному URL (поскольку это общий тестовый сайт и он не настроен специально для целей данной лабораторной работы), цель состоит в том, чтобы увидеть первоначальную попытку sqlmap и понять, что иногда эти попытки могут быть заблокированы фильтрами.
Список доступных скриптов-обфускаторов с --list-tampers
На этом этапе вы узнаете, как вывести список всех доступных скриптов-обфускаторов в sqlmap. sqlmap поставляется с большим разнообразием скриптов-обфускаторов, каждый из которых предназначен для обхода определенных типов фильтров или WAF (Web Application Firewalls). Знание доступных скриптов имеет решающее значение для выбора подходящего для ваших нужд обхода.
Чтобы вывести список всех доступных скриптов-обфускаторов, используйте опцию --list-tampers с sqlmap.
sqlmap --list-tampers
Эта команда выведет список всех файлов .py, расположенных в каталоге tamper sqlmap. Каждый файл представляет собой отдельный скрипт-обфускатор. Например, вы можете увидеть такие скрипты, как space2comment.py, unionalltostring.py, apostrophemask.py и т.д. Каждый скрипт имеет определенную цель, такую как замена пробелов комментариями, преобразование UNION ALL в конкатенацию строк или маскировка апострофов.
Просмотрите список и попытайтесь понять назначение нескольких скриптов на основе их названий. Например, space2comment.py предназначен для замены пробелов SQL-комментариями, что может помочь обойти фильтры, блокирующие пробелы.
Выбор и применение скрипта-обфускатора с --tamper=space2comment
На этом этапе вы выберете и примените конкретный скрипт-обфускатор к вашему сканированию sqlmap. Для этой лабораторной работы мы будем использовать скрипт-обфускатор space2comment. Этот скрипт заменяет пробелы в полезной нагрузке SQL-инъекции последовательностями /**/ (многострочный комментарий). Этот метод эффективен против фильтров, которые блокируют или удаляют пробелы, но разрешают SQL-комментарии.
Чтобы применить скрипт-обфускатор, используйте опцию --tamper, за которой следует имя скрипта (без расширения .py).
Выполните следующую команду sqlmap, на этот раз включив скрипт-обфускатор space2comment:
sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" --dump --batch --forms --level 1 --risk 1 --parse-errors --technique=U --eta --tamper=space2comment --output-dir=/tmp/sqlmap_output_with_tamper
Обратите внимание на добавление --tamper=space2comment. Это указывает sqlmap обрабатывать все сгенерированные полезные нагрузки через этот конкретный скрипт-обфускатор перед отправкой их цели.
Хотя вывод может выглядеть похоже на предыдущий шаг, внутри sqlmap теперь модифицирует свои полезные нагрузки. На следующем шаге мы рассмотрим разницу в сгенерированных полезных нагрузках.
Выполнение сканирования с выбранным скриптом-обфускатором
На предыдущем шаге вы уже выполнили команду sqlmap со скриптом-обфускатором space2comment. Цель этого шага — закрепить выполнение и подготовиться к сравнению полезных нагрузок.
Выполненная вами команда:
sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" --dump --batch --forms --level 1 --risk 1 --parse-errors --technique=U --eta --tamper=space2comment --output-dir=/tmp/sqlmap_output_with_tamper
Эта команда предписывает sqlmap выполнить сканирование, но на этот раз он будет модифицировать свои полезные нагрузки с помощью скрипта-обфускатора space2comment. Например, полезная нагрузка вроде UNION SELECT может быть преобразована в UNION/**/SELECT. Это незначительное изменение часто может обойти простые механизмы фильтрации пробелов.
Опция --output-dir=/tmp/sqlmap_output_with_tamper гарантирует, что вывод sqlmap, включая любые сгенерированные полезные нагрузки или журналы, будет сохранен в отдельном каталоге. Это будет полезно для сравнения полезных нагрузок на следующем шаге.
Позвольте сканированию sqlmap завершиться. Даже если оно не обнаружит уязвимости на фиктивной цели, главное, что sqlmap попытался использовать обфусцированные полезные нагрузки.
Сравнение полезных нагрузок с использованием скрипта-обфускатора и без него
На этом заключительном шаге вы сравните полезные нагрузки, сгенерированные sqlmap с использованием скрипта-обфускатора space2comment и без него. Это сравнение наглядно продемонстрирует, как скрипты-обфускаторы модифицируют полезные нагрузки для обхода фильтров.
sqlmap регистрирует свою деятельность, включая отправляемые полезные нагрузки, в выходном каталоге. Мы указали разные выходные каталоги для сканирований в Шаге 1 и Шаге 3.
Сначала давайте попробуем найти файлы журналов, которые могут содержать полезные нагрузки. sqlmap обычно сохраняет HTTP-запросы в файлах внутри своего выходного каталога.
Перейдите в выходные каталоги и найдите журналы запросов. Точные имена файлов могут отличаться, но обычно они находятся в каталоге log/ или непосредственно в каталоге цели.
Давайте попробуем найти общий файл журнала, содержащий запросы. sqlmap часто создает файл session.log или аналогичные файлы.
Используйте grep для поиска распространенных SQL-ключевых слов в файлах журналов из обоих запусков.
Сравните полезные нагрузки, обратив внимание на различия в обработке пробелов.
echo "--- Payloads without tamper script ---"
grep -r "UNION" /tmp/sqlmap_output_no_tamper/ | head -n 5
echo ""
echo "--- Payloads with tamper script ---"
grep -r "UNION" /tmp/sqlmap_output_with_tamper/ | head -n 5
Вы должны заметить, что в выводе "Payloads with tamper script" пробелы в SQL-ключевых словах (например, UNION SELECT) заменены комментариями /**/, тогда как в выводе "Payloads without tamper script" используются обычные пробелы. Это наглядно демонстрирует эффект скрипта-обфускатора space2comment.
Это сравнение подчеркивает эффективность скриптов-обфускаторов в модификации полезных нагрузок для обхода базовых механизмов фильтрации, что делает sqlmap более универсальным инструментом для тестирования на проникновение.
Резюме
В этой лабораторной работе вы успешно научились использовать скрипты-обфускаторы sqlmap для обхода базовых фильтров веб-приложений. Вы начали с понимания необходимости техник обхода при столкновении с фильтрами ввода. Затем вы изучили, как перечислить доступные скрипты-обфускаторы с помощью --list-tampers, и выбрали скрипт space2comment для практической демонстрации. Наконец, вы выполнили sqlmap со скриптом-обфускатором и без него, а также сравнили сгенерированные полезные нагрузки, наглядно наблюдая, как скрипт space2comment преобразует пробелы в комментарии /**/. Этот практический опыт вооружил вас фундаментальным навыком для повышения ваших возможностей тестирования SQL-инъекций путем обхода распространенных механизмов фильтрации.
