
PoC exploit for CVE-2018-11736 affecting Pluck CMS versions prior to 4.7.7-dev2 with a File Upload Vulnerability
Haftungsausschluss ⚠️: Dieser Exploit wurde in Rust hauptsächlich als einleitende Programmierübung entwickelt. Bitte entschuldigen Sie etwaige fehlende technische Strenge oder unidiomatische Codemuster. Dies ist auch nicht meine Entdeckung; ich habe mich bei der Erstellung dieses Exploits auf offizielle Berichte gestützt.
PoC-Exploit für CVE-2018-11736, der Pluck CMS-Versionen vor 4.7.7-dev2 betrifft. Die Sicherheitslücke befindet sich in /data/inc/images.php, die es einem Angreifer ermöglicht, beliebige Dateien hochzuladen. Durch das Hochladen einer bösartigen .htaccess-Datei, die als image/jpeg-MIME-Typ getarnt ist, kann der Webserver gezwungen werden, .jpg-Dateien als PHP-Skripte zu interpretieren, was zur Ausführung beliebigen PHP-Codes führt.
Sie müssen Cargo installiert haben, um main.rs zu kompilieren.
cargo build
Und ein gültiges authentifiziertes Sitzungs-Cookie von der Ziel-Pluck-CMS-Instanz ist erforderlich:
./CVE-2018-11736 -h
CVE-2018-11736 exploit. Uploads a malicious .htaccess to force the web server to interpret .jpg files as PHP scripts, leading to Remote Code Execution (RCE)
Usage: CVE-2018-11736 --cookie <COOKIE> --base-url <BASE_URL> --hta-path <HTACCESS> --image-path <IMAGE>
Options:
-c, --cookie <COOKIE> Session Cookie (Once you have logged in succesfully). Format: xxxxxxxxxxxx
-u, --base-url <BASE_URL> Base URL (e.g. http://localhost)
-H, --hta-path <HTACCESS> Path to the .htaccess file
-i, --image-path <IMAGE> Path to the fake image file
-h, --help Print help
-V, --version Print version
Um Reproduzierbarkeit und sicheres Testen zu gewährleisten, kann eine anfällige Instanz von Pluck CMS v4.7.4-dev5 mit Docker bereitgestellt werden. Dazu müssen Sie das .zip der anfälligen Version herunterladen:
wget https://github.com/pluck-cms/pluck/archive/refs/tags/4.74-dev5.zip
Führen Sie dann den folgenden Befehl im selben Verzeichnis der Docker-Dateien aus:
docker-compose up -d
Die Webanwendung wird unter http://localhost:8080 verfügbar sein. Wenn Sie eine TTY im Container starten möchten:
docker exec -it pluck-cms bash
Hier ist der PoC in Aktion, der das Hochladen der bösartigen Konfiguration und die RCE demonstriert.