
Proof-of-concept-Exploit für CVE-2024-23724: Privilegieneskalation durch Upload eines bösartigen SVG-Profilfotos in Ghost CMS. Enthält automatisiertes Setup und Angriffsskript.
Um die Schwachstelle zu testen, benötigen wir zwei Konten: ein Konto mit der Rolle eines Administrators (Eigentümer) und ein Konto mit der Rolle eines Beitragenden. In Ghost CMS müssen Sie zuerst auf das Admin-Panel zugreifen, um das Eigentümerkonto zu erstellen. Von diesem Konto aus laden Sie dann einen Beitragenden ein, damit dieser sein eigenes Konto erstellt. In Ghost besteht die einzige Möglichkeit, einen Beitragenden einzuladen, darin, einen Einladungslink per E-Mail zu senden, was einen E-Mail-Zustellungsdienst erfordert, um die E-Mail an das Konto des Beitragenden zu senden. Um die Sache zu vereinfachen, haben wir ein Mailgun-Konto erstellt, einen Beitragenden zu Ghost hinzugefügt und dann eine Datenbank-Dump-Datei im Zustand erstellt, in dem wir sie hatten. In unserer Docker-Compose-Konfiguration stellen wir zunächst sicher, dass die Datenbank aus dem Dump wiederhergestellt wird, bevor wir Ghost starten, sodass Sie keinen E-Mail-Zustellungsdienst benötigen, um diese Schwachstelle zu testen. Wenn Sie jedoch mit einer sauberen Installation beginnen möchten und den bereitgestellten Datenbank-Dump nicht verwenden möchten, können Sie das Docker Compose im Ordner manual-setup verwenden, um eine saubere Ghost-Installation zu starten. Im Folgenden finden Sie die Schritte zum Einrichten von Mailgun (einem von uns verwendeten E-Mail-Zustellungsdienst) und zum Funktionieren mit Ghost.
Für diese Installation finden Sie hier die Anmeldedaten für Administrator und Beitragenden:
Zunächst müssen Sie ein Mailgun-Konto erstellen. Sobald Ihr Konto erstellt ist, erhalten Sie Ihre SMTP-Anmeldedaten. Nachdem Sie Ihre Anmeldedaten erhalten haben, fügen Sie sie in die Datei config.development.json ein, wobei Sie dasselbe Format wie in der Datei config.example.json verwenden.
Hier eine Schritt-für-Schritt-Anleitung:
config.example.json und benennen Sie sie in config.development.json um.config.development.json ein. Dadurch wird sichergestellt, dass Ihre Entwicklungsumgebung korrekt konfiguriert ist, um E-Mails über Mailgun zu senden.Sie können die von Ihnen gewählte Installation mit dem folgenden Befehl starten:
docker-compose up
Um den Angriff zu testen, befolgen Sie die folgenden Schritte:
generate-malicious-svg.py. Führen Sie dazu den folgenden Befehl aus und ersetzen Sie dabei [USERNAME] und [PASSWORD] durch die Anmeldedaten des von Ihnen erstellten Beitragendenkontos:python generate-malicious-svg.py -u [USERNAME] -p [PASSWORD] -t http://localhost
Für die automatische Installation lautet der Befehl:
python generate-malicious-svg.py -u [email protected] -p ZtXfMq2FaRHGm@! -t http://localhost
Dieser Befehl generiert eine bösartige SVG-Datei mit dem Namen tenant-takeover.svg im aktuellen Verzeichnis.
Melden Sie sich an der Ghost-Admin-Oberfläche mit den Anmeldedaten des von Ihnen erstellten Beitragendenkontos an. Besuchen Sie dazu http://localhost:3001/ghost und melden Sie sich mit den Anmeldedaten des Beitragendenkontos an.
Gehen Sie zur Profilbearbeitungsseite, indem Sie auf Ihr Profilbild unten links auf dem Bildschirm klicken und dann auf die Schaltfläche "Your profile" klicken.
Klicken Sie auf das Profilsymbol, um Ihr Profilbild zu ändern. Wählen Sie die bösartige SVG-Datei aus, die Sie in Schritt 1 generiert haben.
Speichern Sie die Änderungen, indem Sie auf die Schaltfläche "Save & close" klicken. Sie können die Seite aktualisieren, um zu überprüfen, ob das Profilbild geändert wurde.
Sie können sich nun vom Beitragendenkonto abmelden und mit dem Administratorkonto anmelden. Unter http://localhost:3001/ghost/#/settings/staff?tab=contributors können Sie sehen, dass das Profilbild des Beitragenden geändert wurde. Wenn Sie mit der rechten Maustaste auf das Profilbild klicken und das Bild in einem neuen Tab öffnen, wird der Angriff ausgelöst. Sie können nun zu http://localhost:3001/ghost/#/settings/staff zurückkehren und sehen, dass der Beitragende jetzt Eigentümer des Blogs ist und Sie zum Administrator geworden sind.
Wir haben ein Video erstellt, das den gesamten Prozess und die erforderlichen Schritte zur Implementierung der CVE detailliert beschreibt. Dieses Video dient als visuelle Anleitung, um unser Vorgehen und die durchgeführten Aktionen besser zu verstehen.
Link zum Video: Klicken Sie hier, um das Video anzusehen
Zögern Sie nicht, dieses Video anzusehen, um einen vollständigen Überblick über das Projekt und die befolgten technischen Schritte zu erhalten.