
Proof-of-concept-Skripte und Docker-Lab zur Reproduktion von CVE-2023-41892, einer vorauthentifizierten Remote-Code-Ausführungs-Schwachstelle in Craft CMS. Enthält Log-Poisoning- und Imagick-MSL-Dateischreib-Exploits.
Dieses Repository enthält Proof-of-Concept-Skripte und ein lokales Vulhub-Lab zur Reproduktion von CVE-2023-41892, einer Schwachstelle für Remote-Codeausführung ohne Authentifizierung in Craft CMS.
Verwenden Sie dieses Projekt nur in einem autorisierten lokalen Lab oder auf anderen Systemen, für die Sie ausdrücklich die Erlaubnis zum Testen haben.
CVE-2323-41892_PoC/
+-- README.md
+-- LFI_to_RCE.py
+-- Imagick_PoC.py
+-- Vulnhub_env/
+-- docker-compose.yml
+-- README.md
+-- README.zh-cn.md
+-- 1.png ... 5.png
| Pfad | Zweck |
|---|
LFI_to_RCE.py | PoC für Log-Poisoning mit anschließender lokaler Dateieinbindung über das Psy\Configuration-Gadget. |
Imagick_PoC.py | PoC für beliebiges Dateischreiben über das Imagick-MSL-Gadget. |
Vulnhub_env/docker-compose.yml | Docker-Compose-Lab, das verwundbares Craft CMS 4.4.14 und MySQL 5.7 startet. |
Vulnhub_env/README.md | Ursprüngliche Reproduktionshinweise im Vulhub-Stil mit Request-Beispielen und Screenshots. |
Vulnhub_env/README.zh-cn.md | Chinesische Version der Vulhub-Reproduktionshinweise. |
Vulnhub_env/*.png | Screenshots, die in der Vulhub-Umgebungsdokumentation verwendet werden. |
CVE-2023-41892 betrifft Craft-CMS-Versionen von 4.0.0-RC1 bis einschließlich 4.4.14. Das Problem wurde in Craft CMS 4.4.15 behoben.
Der von beiden Skripten verwendete verwundbare Endpunkt ist:
/index.php?action=conditions/render
Die PoCs zielen auf die Standard-URL des lokalen Labs:
http://localhost:8088
Wenn Ihr Lab auf einem anderen Host oder Port läuft, aktualisieren Sie den URL-Wert im oberen Teil von LFI_to_RCE.py und Imagick_PoC.py.
requestsInstallieren Sie die Python-Abhängigkeit:
pip install requests
Starten Sie die verwundbare Craft-CMS-Umgebung:
cd Vulnhub_env
docker compose up -d
Öffnen Sie den Craft-CMS-Installationsassistenten:
http://localhost:8088/admin/install
Verwenden Sie während der Installation die folgenden Standard-Datenbankeinstellungen:
| Einstellung | Wert |
|---|---|
| Datenbank-Host | db |
| Datenbankname | craftcms |
| Datenbankbenutzer | root |
| Datenbank-Passwort | root |
Bestätigen Sie nach der Installation, dass die Website unter folgender Adresse erreichbar ist:
http://localhost:8088
Führen Sie die Befehle aus dem Repository-Stammverzeichnis aus:
cd CVE-2323-41892_PoC
Ausführen:
python LFI_to_RCE.py
Was es tut:
Sendet fehlerhaftes JSON mit PHP-Code an das Craft-CMS-Log.
Erstellt einen Log-Dateipfad anhand des aktuellen lokalen Datums:
../storage/logs/web-YYYY-MM-DD.log
Verwendet craft\elements\conditions\users\UserCondition mit
\Psy\Configuration, um die vergiftete Log-Datei einzubinden.
Prüft, ob die Ausgabe von phpinfo() in der Antwort erscheint.
Erwartete Ausgabe bei Erfolg:
[*] Starting Log Poisoning...
[+] Payload sent successfully!
[*] Starting LFI to RCE...
[+] phpinfo() executed successfully!
Ausführen:
python Imagick_PoC.py
Was es tut:
Imagick-Gadget aus.webshell.php in das Web-Root-Verzeichnis zu schreiben.http://localhost:8088/webshell.php an und prüft auf phpinfo().Erwartete Ausgabe bei Erfolg:
[*] Sending multipart/form-data payload to trigger Imagick gadget...
[+] Success: phpinfo() output found.
Der Imagick-Angriffsweg kann den PHP-Worker nach dem Auslösen der Nutzlast zum Absturz bringen. Im Vulhub-Lab kann dies dennoch normal sein, wenn webshell.php vor dem Absturz geschrieben wurde.
Beide Skripte definieren die Ziel-URL am Anfang der Datei:
URL = "http://localhost:8088"
Ändern Sie diesen Wert, wenn das verwundbare Lab unter einer anderen Adresse erreichbar ist.
Imagick_PoC.py prüft die erzeugte Datei unter:
OUTPUT_FILE = "/webshell.php"
Stellen Sie sicher, dass die Container laufen:
cd Vulnhub_env
docker compose ps
Stellen Sie sicher, dass die Website unter http://localhost:8088 erreichbar ist.
Prüfen Sie, ob ein anderer Dienst Port 8088 bereits belegt.
Aktualisieren Sie den URL-Wert in den Python-Skripten, wenn Sie den freigegebenen Port geändert haben.
LFI_to_RCE.py zeigt PHP Version nicht anstorage/logs/ schreibt.web-YYYY-MM-DD.log in LFI_to_RCE.py.Imagick_PoC.py gibt für /webshell.php ein 404 zurück/tmp/php* erstellt werden.Stoppen Sie das Lab:
cd Vulnhub_env
docker compose down
Entfernen Sie Container und das Datenbank-Volume, wenn Sie eine saubere Neuinstallation wünschen:
docker compose down -v
Aktualisieren Sie Craft CMS auf 4.4.15 oder höher.
Wenn eine Ausnutzung vermutet wird, rotieren Sie den Craft-CMS-Sicherheitsschlüssel, die Datenbank-Zugangsdaten, Anwendungsgeheimnisse und alle in der Umgebung gespeicherten Zugangsdaten.