Поиск распространённых ошибок
IDOR, XSS и SSRF
«Поиск распространённых ошибок» — бесплатный урок Ethical Hacking Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Ethical Hacking Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Ethical Hacking Academy содержит 4 уроков всего.
Основные уязвимости
Несколько классов уязвимостей приносят большую часть вознаграждений за ошибки, поскольку встречаются часто и имеют серьёзные последствия. Сначала освойте эти три:
- IDOR — получение данных других пользователей через предсказуемые идентификаторы
- XSS — внедрение скрипта в страницу
- SSRF — заставить сервер запросить выбранные атакующим URL
В этом уроке показано, как методично искать каждую из них.
Понимание IDOR
Небезопасная прямая ссылка на объект (IDOR) возникает, когда приложение использует предоставленный пользователем идентификатор для получения объекта, не проверяя, принадлежит ли этот объект пользователю.
Измените ID — и получите доступ к чужим данным. Это ошибка контроля доступа, а не внедрение.
# Your own invoice
GET /api/invoices/1001 Authorization: Bearer <your-token>
# Change the ID - do you get someone else's?
GET /api/invoices/1002 Authorization: Bearer <your-token>Эффективный поиск IDOR
Чтобы найти IDOR, создайте две учётные записи и сравните их поведение. Любой объект, на который ссылаются по ID, может быть уязвим.
- Перехватите запрос из учётной записи A, который получает данные A
- Повторите его с сеансом учётной записи B, но с ID объекта A
- Если B видит данные A, это IDOR
Ищите ID в URL, телах JSON, заголовках и даже в формах base64/UUID.
# Original (account A)
POST /api/profile/update
{ "user_id": 5001, "email": "a@example.com" }
# Tamper: use account B's session, keep A's user_id
# If A's profile changes, broken object-level authorization.Понимание XSS
Межсайтовый скриптинг (XSS) — это внедрение JavaScript, который выполняется в браузере другого пользователя. Существует три основных типа:
- Отражённый — полезная нагрузка возвращается в непосредственном ответе
- Сохранённый — полезная нагрузка сохраняется и отправляется другим пользователям (наибольшая опасность)
- На основе DOM — клиентский JS небезопасно записывает пользовательский ввод в DOM
Проверка на XSS
Сначала внедрите уникальный маркер, чтобы понять, где и как отражается Ваш ввод, а затем создайте полезную нагрузку, подходящую для данного контекста (тело HTML, атрибут или скрипт).
Именно контекст определяет, какая полезная нагрузка выйдет за пределы текущего контекста и выполнится.
# Probe reflection with a unique canary
?q=xss7391canary
# Basic HTML-context payload
<script>alert(document.domain)</script>
# Attribute breakout
" onmouseover=alert(1) x="Доказательство опасности XSS
Простой alert(1) доказывает выполнение, но проверяющим нужна опасность. Покажите, что именно атакующий может украсть или сделать.
- Прочитайте токен CSRF или сведения о сеансе, доступные JS
- Покажите
document.domain, чтобы доказать источник - Для сохранённого XSS покажите его выполнение в учётной записи жертвы
Никогда не крадите сеансы реальных пользователей — только демонстрируйте такую возможность.
Понимание SSRF в приложениях
SSRF в контексте поиска ошибок означает обнаружение функции, которая получает URL под Вашим контролем. Вероятные кандидаты:
- URL веб-перехватчиков и обратных вызовов
- Генераторы изображений/PDF, загружающие удалённые ресурсы
- Функции предварительного просмотра URL и разворачивания ссылок
- Функции импорта по URL
Укажите для них внутренние конечные точки или конечные точки метаданных, чтобы доказать опасность.
Подтверждение SSRF вне основного канала
Если ответ не показывает полученное содержимое, используйте внеполосный сервер, чтобы подтвердить, что цель выполнила запрос. Обратный вызов с фиксацией взаимодействия доказывает слепой SSRF.
Такие инструменты, как Burp Collaborator или interactsh, предоставляют уникальный URL, обращения к которому регистрируются.
# Give the app your unique OOB URL
POST /api/webhook
{ "callback": "http://abc123.oast.fun/" }
# If abc123.oast.fun logs a DNS/HTTP hit, the server fetched it = SSRF.Поиск уязвимостей через прокси
Все три класса уязвимостей находят, перехватывая и изменяя запросы. Перехватывающий прокси — основной инструмент.
- Burp Suite или OWASP ZAP для перехвата и изменения трафика
- Repeater для повторной отправки и изменения отдельных запросов
- Intruder/fuzzer для проверки множества ID или полезных нагрузок
Глубокое освоение прокси принесёт больше пользы, чем изучение любой отдельной техники.
Объединение уязвимостей для усиления последствий
Самые крупные вознаграждения получают за объединение уязвимостей. Уязвимость средней серьёзности вместе с другой может стать критической.
- SSRF с доступом к облачным метаданным приводит к краже учётных данных и захвату учётной записи
- IDOR, раскрывающая токены, приводит к полной компрометации учётной записи
- Сохранённый XSS в панели администратора приводит к захвату учётной записи администратора
Всегда спрашивайте себя: с чем можно объединить эту уязвимость?
Проверяйте осторожно и в пределах области действия
Эти уязвимости затрагивают реальные данные и реальных пользователей. Действуйте этично:
- Используйте собственные тестовые учётные записи и не просматривайте данные реальных пользователей сверх необходимого для доказательства
- Избегайте сохранённых полезных нагрузок XSS, которые могут выполниться у реальных пользователей; ограничьте их своей учётной записью
- При SSRF не углубляйтесь во внутренние системы; докажите сам факт уязвимости и остановитесь
Ответственная демонстрация опасности позволяет Вам оставаться в рамках безопасной гавани.
Быстрая проверка
Вы вошли как пользователь B, повторили запрос с сеансом B, но с ID объекта пользователя A, и получили личные данные A. Какая это уязвимость?
Итоги: поиск распространённых уязвимостей
Вы научились искать три наиболее ценных класса уязвимостей.
- IDOR: сравнивайте две учётные записи, изменяйте ID объектов и проверяйте контроль владения
- XSS: проверяйте отражение, подбирайте полезную нагрузку под контекст и доказывайте реальную опасность
- SSRF: находите функции получения URL и подтверждайте слепые случаи внеполосным способом
- Объединяйте уязвимости для критических последствий (например, SSRF с доступом к облачным метаданным)
- Используйте перехватывающий прокси и оставайтесь в пределах области действия
Далее: превращение находок в отчёты, за которые выплачивают вознаграждение.
Часто задаваемые вопросы
Урок «Поиск распространённых ошибок» бесплатный?
Да — полный текст урока «Поиск распространённых ошибок» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Ethical Hacking Academy, подпишись на CoddyKit PRO. Курс Ethical Hacking Academy содержит 4 уроков всего.
Чему я научусь в уроке «Поиск распространённых ошибок»?
IDOR, XSS и SSRF Ты практикуешь Ethical Hacking Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Ethical Hacking Academy?
Предыдущий опыт не требуется. Ethical Hacking Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Поиск распространённых ошибок»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Ethical Hacking Academy?
Да. Каждый урок Ethical Hacking Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Выбор целей
- Масштабная разведка
- Поиск распространённых ошибок
- Написание отличных отчётов