Среда: PHP 5.6.40 | Apache mod_php
Memory Limit: 16M
session.upload_progress.enabled: ВЫКЛЮЧЕНО (БЕЗОПАСНО)
Механизм: Отправляем огромный POST-запрос с тысячами полей. PHP пытается создать гигантский HashTable (словарь) для этих данных. Память заканчивается (OOM) посередине создания словаря. Словарь остается полуразрушенным. При уборке памяти (PHP_RSHUTDOWN_FUNCTION) PHP обращается к мусору как к коду.
▶️ Запустить OOM-тест (замедленное время) 💀 Запустить PoC-эксплойтБезопасный тест: мы вызовем OOM и увидим corrupted state без реального выполнения кода
Механизм: Отправляем крошечный запрос (~450 байт) с особым заголовком. PHP запускает session.upload_progress (слежение за загрузкой). Создается глобальный указатель на данные запроса. Запрос завершается с ошибкой, но указатель НЕ освобождается. Следующий запрос обращается к уже очищенной памяти (Use-After-Free).
▶️ Шаг 1: Создать UAF-состояние ▶️ Шаг 2: Использовать stale-указательДва запроса подряд демонстрируют утечку состояния между воркерами
После применения патча эти тесты должны показать SAFE вместо VULNERABLE
🔍 Проверить состояние системы