PHP filter chains — крутые векторы атак, которые позволяют реализовывать разные типы эксплойтов: маскировку файлов, манипуляции с содержимым, побайтовую выгрузку файлов через memory exhaustion и многое другое.
Помните старую добрую тулзу php_filter_chains_oracle_exploit? Да, ту самую, что помогала выцеживать PHP-файлы по байтам через blind file read + memory exhaustion.
Так вот. Пора её отпустить. Есть Lightyear, и это прям next level в эксплуатации примитивов слепого чтения файлов в PHP.
Файлы дампятся быстрее, чище и больше по размеру. Вроде бы та же цепочка фильтров, но будто на стероидах.
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱5❤4👍2
API-разведка — это искусство, особенно когда работаешь с RESTful или GraphQL API, где интроспекция ограничена или отключена. Без документации можно запутаться, но на помощь приходит разведка.
Многие API используют уникальные структуры и эндпоинты. Стандартные словари не всегда помогут. Используй специализированные инструменты вроде
ffuf для брутфорса, а для более глубокого анализа отправляй рабочие эндпоинты в Burp.Мобильные приложения часто используют API, которые могут быть недоступны в веб-версии.
Параметры в ответах могут скрывать дополнительные данные или эндпоинты. Пробуй манипулировать этими параметрами, чтобы выявить скрытые фичи или эндпоинты.
Иногда старые версии API остаются доступными для обратной совместимости. Если API имеет версионность, попробуй обратиться к предыдущим версиям, чтобы найти дополнительные возможности.
Не полагайся только на инструменты автоматизации. Часто решение лежит во внимании к деталям: попробуй нажать все кнопки, изучить доступные фичи приложения и элементы интерфейса.
Если документация есть, начни с неё (Swagger, Postman, GraphQL-схему и другие). Внимательно проанализируй все эндпоинты, запросы и параметры. Не ограничивайся только описанным функционалом — проверь все возможные значения параметров и тестируй нестандартные запросы. Часто документация может быть неполной.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤2
🎯 Как найти реальный IP, скрытого за CDN
Content Delivery Network — штука нужная и полезная. Но кроме ускорения загрузки и уменьшения нагрузки, она даёт ещё один жирный плюс — скрывает реальный IP-адрес сервера.
❓ Чтобы что?
▪️ Ускорение загрузки сайта
▪️ Улучшение UX
▪️ Снижение нагрузки на основной сервер
▪️ Повышение надежности и отказоустойчивости
▪️ Защита от DDoS-атак
💡 Зачем багхантеру знать реальный IP?
▪️ Сканирование открытых портов и сервисов
▪️ Тестирование уязвимостей, которые не проходят через прокси
▪️ Обход WAF и так далее
🧠 Боевой чек-лист:
✅ Дергать исторические DNS-записи (SecurityTrails, DNSDumpster)
✅ Копаться в SSL-сертификатах на crt.sh, Censys, Shodan
✅ Искать хосты с идентичными favicon-хэшами
✅ Анализировать заголовки email-писем на наличие исходных IP (самый простой способ отправить себе письмо — форма обратной связи )
✅ Брутить/искать поддомены/vhost’ы, т. к. рядом может быть целевой хост
✅ Глубокий вдох, погрузиться в HTML-комменты и JS-файлы — там бывает всякое… даже захардкоженный IP 🙃
✅ Использовать CF-Hero для автоматизации процесса. Он собирает информацию из множества источников с помощью разных методов, включая описанные выше.
💬 Какие способы еще знаете? Ждем в комментариях 👇
Content Delivery Network — штука нужная и полезная. Но кроме ускорения загрузки и уменьшения нагрузки, она даёт ещё один жирный плюс — скрывает реальный IP-адрес сервера.
🧠 Боевой чек-лист:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
JavaScript скрывает множество проблем в безопасности — скрытые эндпоинты, захардкоженные креды, «опасные» фичи и устаревшие зависимости.
Вот быстрый гайд, чтобы начать статический анализ. Всё можно автоматизировать в Burp Suite или комбинировать с любимыми CLI-тулзами.
.jswget/curl, или через DevToolsИспользуй LinkFinder или JSLinkFinder в Burp:
python linkfinder.py -i 'js/*' -o result.html
jsluice urls jquery.js | jq
{
"url": "/api/v1/posts",
"queryParams": [],
"bodyParams": [
"postId"
],
"method": "PUT",
"headers": {
"Content-Type": "application/json",
"x-backend": "prod"
},
"type": "$.ajax",
"filename": "jquery.js"
}
Прогоняй код через TruffleHog:
trufflehog filesystem ~/Downloads/js --no-verification --include-detectors="all"
Можно использовать и JS Miner в Burp для поиска секретов и эндпоинтов.
Применяй Semgrep и обращай особое внимание на sink’и:
semgrep scan --config auto
Типичный пример —
jQuery. Проверяй библиотеки на уязвимости через snyk.io или Retire.js в Burp.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14
Burp Suite Pro поставляется с ~50 предустановленными словарями, которые можно использовать всего в два клика. Они поддерживают различные типы пэйлоада, включая
Simple list, Character substitution, Case modification, Illegal Unicode, — всё это важно для комплексного тестирования.Методологию создания кастомных словарей мы разбирали ранее. Встроенные тоже надо использовать с умом.
Intruder > Configure predefined payload lists
Некоторые из словарей содержат плейсхолдеры, но стандарты именования могут отличаться (например,
{FILE} vs {KNOWNFILE}, {domain} vs <yourservername>). Используй правила обработки, чтобы заменить плейсхолдеры на реальные значения:
{base} —> payload position
{domain} —> collaborator interaction id
Match/replace (для {FILE}, ‹youremail>, ...)Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥2
Традиционные инструменты разведки — это хорошо, но что если комбинировать их возможности с LLM? Вайб
Вот как можно объединить мощь LLM с традиционными методами обработки естественного языка:
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👎2
📦 Archive Alchemist: уязвимости, основанные на архивах
Mathias Karlsson представил инструмент Archive Alchemist, чтобы автоматизировать работу, связанную с уязвимостями архивов. Он возник после частых встреч с ошибками в архивах, которые требовали создания кастомных архивов и глубокого погружения в документацию.
💡 Три основных вектора атак:
▪️ Path Traversal (классический zip slip), позволяющий извлекать файлы за пределы целевых директорий с помощью путей вроде
▪️ Link-Based Overwrites, где символические или жесткие ссылки могут привести к размещению файлов за пределами путей извлечения, что может привести к RCE;
▪️ Parser Differential Bugs, когда различия в парсерах позволяют обходить проверки безопасности.
Archive Alchemist автоматизирует и упростит эксплуатацию основных уязвимостей👇
🤔 Несоответствия имен файлов в ZIP
Различия в Central Directory Header, Local File Header и Unicode Path создают возможности для атак. Проверка может использовать Central Directory Header, показывающий
Дополнительные векторы атак включают проблемы с UTF-16, несоответствия CRC и ошибки обработки NULL-байтов, а также скрытие слэшей в многобайтовых последовательностях.
🏃 Усечение длины пути
В Linux максимальная длина пути — 4096 символов. При превышении этого лимита ошибки могут быть проигнорированы, что позволяет создавать архивы с длинными фальшивыми путями, оставляющими вредоносные файлы.
Эту технику можно использовать для утечки информации, постепенно раскрывая структуру директорий сервера.
🤕 Фингерпринт системы
Загрузка файлов с именами CON, NUL или <> помогает выявить Windows-системы. Также можно определить операционную систему по длине пути: 4096 символов — это Linux, 260 — Windows.
Тестирование симлинков в свою очередь помогает определить поддержку симлинков системой и проверить их на чувствительные пути.
Одно из главных отличий между успешными и не очень успешными багхантерами заключается в том, что последние не видят закономерности в приложении.
Пример: ты находишь багу, а затем начинаешь размышлять о ней и замечать закономерности в разработке этого конкретного приложения. Суть в том, что выбранный стиль разработки может привести к другим багам.
Mathias Karlsson представил инструмент Archive Alchemist, чтобы автоматизировать работу, связанную с уязвимостями архивов. Он возник после частых встреч с ошибками в архивах, которые требовали создания кастомных архивов и глубокого погружения в документацию.
../;Archive Alchemist автоматизирует и упростит эксплуатацию основных уязвимостей
Различия в Central Directory Header, Local File Header и Unicode Path создают возможности для атак. Проверка может использовать Central Directory Header, показывающий
file.json, в то время как извлечение полагается на поле Unicode Path с содержимым ../../../../etc/passwd.Дополнительные векторы атак включают проблемы с UTF-16, несоответствия CRC и ошибки обработки NULL-байтов, а также скрытие слэшей в многобайтовых последовательностях.
В Linux максимальная длина пути — 4096 символов. При превышении этого лимита ошибки могут быть проигнорированы, что позволяет создавать архивы с длинными фальшивыми путями, оставляющими вредоносные файлы.
Эту технику можно использовать для утечки информации, постепенно раскрывая структуру директорий сервера.
Загрузка файлов с именами CON, NUL или <> помогает выявить Windows-системы. Также можно определить операционную систему по длине пути: 4096 символов — это Linux, 260 — Windows.
Тестирование симлинков в свою очередь помогает определить поддержку симлинков системой и проверить их на чувствительные пути.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7
Они с виду похожи, но происходят на совершенно разных этапах. Вот как их различить
ATO нацелен на этап аутентификации (до или во время входа). Ошибки контроля доступа появляются после аутентификации, когда приложение должно применять разрешения. Знание момента возникновения ошибки помогает определить её причину.
В первом случае ты захватываешь аккаунт, во втором — байпасишь правила.
ATO возникает из-за слабых потоков аутентификации:
Access control возникает из-за ошибок в логике разрешений, таких как:
ATO обычно имеет критический или высокий уровень опасности, особенно с доказательствами захвата сессии.
Access control варьируется:
Для тестирования ATO сосредоточься на входе, сбросе, сессиях. Для тестирования Access control проверяй эндпоинты, ID объектов и административные фичи.
Знание того, что тестировать, сэкономит время и повысит успех в получении вознаграждений. А понимание различий и соответствующее тестирование максимизирует твой вклад.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍2
Статические веб-приложения находят применение в самых разных сферах: от блогов и одностраничных лендингов до документации по продуктам и API.
И хотя они не обрабатывают пользовательский ввод и в целом устойчивы к инъекциям, списывать их со счётов при анализе безопасности точно не стоит.
• Брутфорс забытых директорий, панелей, бэкапов, конфигов и файлов
• Анализ
robots.txt и sitemap.xml — возможный источник интересных путей• Анализ JavaScript-файлов и комментариев в исходниках — может раскрыть скрытые эндпоинты
• Проверка заголовков ответа на наличие информации о версии веб-сервера
P. S. Не стоит недооценивать «простые» сайты. Даже без логики на сервере они могут содержать чувствительную информацию — от исходников до ключей и административных точек входа.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥2
Простые, но действенные методы:
Match: Content-Type: application/json
Replace: Content-Type: application/xml
Match: https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)
Replace: https://{YOUR_SERVER}/Match: ^Referer.*$
Replace: Referer: {BLIND_XSS_PAYLOAD}
Они могут быть уязвимы к SQLi, XSS, SSRF и другие баги.
Match: type\=(\"|')hidden(\"|')
Replace: type="text"
Веб-приложения, использующие JavaScript, часто полагаются на ответ сервера для рендеринга определённых представлений страниц. Смело используй следующие правила автозамены:
"false" —> "true"
"error" —> "success"
"400" —> "200"
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍3❤1
Если хочешь ускорить и повысить эффективность поиска багов в API auth flaw, присмотрись к инструменту Autoswagger. Он еще молодной, но уже много чего умеет:
Инструмент обнаруживает спецификации OpenAPI тремя способами:
1. Прямая спецификация: если предоставлен полный URL с путём, заканчивающимся на
.json, .yaml или .yml, файл парсится напрямую.2. Swagger UI: парсит известные пути Swagger UI (например,
/swagger-ui.html) и извлекает спецификацию из HTML или JavaScript.3. Прямая спецификация с использованием брутфорса: попытка обнаружения с использованием общих местоположений схем OpenAPI (
/swagger.json, /openapi.json и т. д.). Этот метод используется только в случае, если первые два не дали результата.Многозадачное параллельное тестирование множества эндпоинтов с учётом настраиваемого ограничения по скорости (
-rate).Если используется
-b или --brute, инструмент попытается применить различные типы данных с несколькими примерами значений для попытки обойти проверки, специфичные для параметров.Проверка вывода на наличие номеров телефонов, email-адресов, адресов и имён (с контекстной валидацией для снижения фолсов). Также парсит строки CSV и строки вида «ключ: значение».
Используется набор регулярных выражений для обнаружения токенов, ключей и артефактов отладки (например, переменных окружения).
В стандартном режиме результаты выводятся в таблице. С опцией
-json выводится структура в формате JSON. Режим -product фильтрует вывод, показывая только те результаты, которые содержат PII, секреты или большие ответы.Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤🔥2❤1🔥1
Open redirect — это когда уязвимое веб-приложение небезопасно обрабатывает вводимые пользователем данные, что позволяет перенаправлять его с доверенного хоста на внешний (недоверенный).
Существует server- и client-side (DOM-based) редирект (DOM-based). В первом кейсе ты управляешь заголовком
Location HTTP-ответа. Второй кейс — это редирект, инициируемый браузером (с помощью клиентского JS-кода).Простой редирект, от которого легко защититься, создав белый список разрешённых редиректов:
GET /logout.php?redirect_url=http://attacker.com/ HTTP/2
Легко байпасится:
//attacker.com
/%0A/attacker.com
/%0D/attacker.com
https://example.comattacker.com
...
DOM-based open redirect → XSS
Если в ответе нет заголовка
Location, но редирект работает (после небольшой задержки), значит был выполнен редирект на основе DOM. Ты стал еще ближе к DOM based XSS:GET /signin?redirectURL=javanoscript:alert() HTTP/2
Наш пэйлоад залетает в
window.location.href и отрабатывает.Более сложные примеры на случай, если пэйлоад фильтруется:
jav%0Dascri%0Dpt:alert(1)
javanoscript://https://example.com%0Aalert(1)
...
Open redirect → GET-based CSRF
Измени имя пользователя и био любого пользователя, перешедшего по нашей ссылке:
GET /redirect?url=/api/account/profile/username=test&bio=test HTTP/1.1
Open redirect → Account takeover через OAuth
Если приложение позволяет использовать сторонние учетки для входа в систему, то, скорее всего, она использует OAuth 2.0. Если видишь что-то вроде:
/api/oauth/apple?client_id=1234&redirect_uri=https://example.com/api/oauth/callback&response_type=token&scope=openid profile&state=random-state
Просто измени
redirect_uri на подконтрольный хост и лови токен.Open redirect → SSRF
GET/api/image-loader?url=https://example.com/redirect?url=http://169.254.169.254/... HTTP/2
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍3