
PoC-эксплойт для Apache Struts S2-072 (CVE-2026-73633), демонстрирующий истощение CPU и памяти путём отправки специально сформированных JSON-запросов к JSON-плагину Struts.
JSON-заполнение, выполняемое на стороне сервера при включённом плагине JSON body («JSON-заполнение» — это ключевая функция, предоставляемая JSON-плагином в Struts 2; её можно просто понимать как автоматический механизм преобразования данных).
Парсер функции JSON-заполнения при обработке JSON-массива единовременно считывает всё JSON-содержимое тела запроса в память (загружая его поэлементно).
Это вызывает потребление памяти (и потребление CPU).
Я развернул приложение Struts с помощью WSL2 и Tomcat и сделал страницу входа: имя пользователя — admin, пароль — 123456.
В реальных тестах наиболее заметно растёт загрузка CPU, затем — память; после завершения обработки запроса загрузка CPU снижается.
Как только память достигает состояния OOM, срабатывает GC-сборка, так что память никогда не заполняется целиком и до краха дело не доходит.
Это лишь создаёт нехватку серверных ресурсов контейнера: после достижения фиксированного значения потребления памяти (точки срабатывания OOM) рост прекращается, и GC многократно освобождает память, затем она снова занимается, снова освобождается…………
Рост CPU пропорционален значению заполнения (--size).
git clone https://github.com/CuteeCat/CVE-2026-73633.git
cd CVE-2026-73633
cd docker
docker-compose build
docker-compose up -d
cd ..
python poc.py --url http://127.0.0.1:8080/login.action --local