
PoC für CVE-2024-23997
Ein Proof-of-Concept für die Schwachstelle CVE-2024-23997.
Hinweis: Ein Proxy, insbesondere ein Web-Proxy, fungiert als Vermittler in der Webkommunikation, der Anfragen und Antworten im Auftrag anderer empfängt und weiterleitet. Daher kann ein Proxy die Kommunikation unabhängig von dem von YANA verwendeten Port abfangen. Während Proxys aus Sicherheitsgründen oder zur Erhöhung der Suchgeschwindigkeit durch Caching eingesetzt werden, nutzen viele Schadprogramme sie, um die von Benutzern gesendete Webkommunikation abzuhören.
Sehen wir uns ein Beispiel mit YANA an. Ich habe Burp Suite, ein Proxy-Tool, das wie Schadsoftware agiert, auf meinem Windows 10 installiert, um eine Übungsumgebung einzurichten. Burp Suite ist ein Netzwerksicherheits-Diagnosetool von PortSwigger, und die Community-Version ist kostenlos erhältlich. Wenn Sie diesem Beispiel folgen möchten, beachten Sie bitte, dass für die Übung Änderungen an den Netzwerkeinstellungen erforderlich sind, sodass eine Wiederherstellung notwendig ist.
Schritt 1) Echte Schadsoftware ändert die Interneteinstellungen nicht, sondern belauscht Pakete mithilfe der Windows-API, Linux-API usw. Aufgrund der Komplexität werden die Optionen jedoch manuell aktiviert. Drücken Sie die Windows-Taste und suchen Sie nach „Internetoptionen“.
Schritt 2) Gehen Sie zur Registerkarte „Verbindungen“ und klicken Sie auf die Schaltfläche „LAN-Einstellungen“.
Schritt 3) Aktivieren Sie das Kontrollkästchen „Proxyserver für LAN verwenden“, und klicken Sie auf die Schaltfläche „Erweitert“. Um die Einstellungen wiederherzustellen, deaktivieren Sie die Option einfach.
Schritt 4) Ändern Sie im Bereich „Server“ den Inhalt des HTTP-Felds auf „127.0.0.1“, „8080“ und die Ausnahmen auf „<-loopback>“ und klicken Sie zum Speichern der Option auf die OK-Schaltflächen.
Schritt 5) Öffnen Sie Burp Suite.
Schritt 6) Da wir lediglich verifizieren wollen, aktivieren Sie die Option „Temporary project in memory“ und klicken Sie auf die Schaltfläche „Next“.
Schritt 7) Wählen Sie „Use Burp defaults“ und klicken Sie auf die Schaltfläche „Start Burp“.
Schritt 8) Gehen Sie zur Registerkarte „Proxy“ und klicken Sie dann auf „Proxy settings“, um zu prüfen, ob der Proxy unter „Proxy listeners“ auf 127.0.0.1:8080 gesetzt ist, und stellen Sie sicher, dass „Running“ aktiviert ist. Gehen Sie außerdem unter „Proxy listeners“ zu den „Response interception rules“ und aktivieren Sie „Intercept response based on the following rules“. Wenn Sie das Einstellungsfenster schließen, werden die Optionen automatisch übernommen.
Schritt 9) Gehen Sie zur Registerkarte „Intercept“ im Proxy und vergewissern Sie sich, dass „Intercept is on“ angezeigt wird, und öffnen Sie dann Yana. Wenn Intercept aktiviert ist, werden alle HTTP/HTTPS-Kommunikationen zurückgehalten und nicht an die Gegenseite gesendet, bis Intercept deaktiviert oder „Forward“ gedrückt wird.
Schritt 10) Suchen Sie, während Sie die Schaltfläche „Forward“ drücken, in den vom Yana-Hintergrundserver empfangenen Antworten nach HTML-Antworten. Sie sind leicht zu unterscheiden, da das title-Tag des HTML-Dokuments als „Yana“ geschrieben ist.
Schritt 11) Fügen Sie den JS-Code(“<script>require('child_process').exec('C:/Windows/System32/calc.exe')</script>”) mithilfe eines script-Tags unter dem body-Tag des HTML-Dokuments ein.
Schritt 12) Deaktivieren Sie dann „Intercept is on“, und das Yana-Electron-Programm empfängt die Pakete und führt das Skript aus, wodurch das Rechnerprogramm gestartet wird.
Schritt 13) Wenn die Übung abgeschlossen ist, gehen Sie zu den Internetoptionen und deaktivieren Sie die Verwendung des Proxyservers.
Der Grund dafür ist, dass die Option nodeIntegration in Yana aktiviert ist. Selbst wenn diese Option deaktiviert ist, wird die Ausführung von Node.js-Code aus HTML mithilfe verschiedener anderer Methoden möglich. Wird er mit den Berechtigungen von Yana ausgeführt und läuft Yana mit Administrator- oder Root-Rechten, kann der injizierte Schadcode mit diesen Rechten ausgeführt werden. Daher ist es, wie bereits erwähnt, sicherer, HTML-Seiten über Protokolle wie das File-Protokoll abzurufen und anzuzeigen, die in der Kommunikation zwischen Programmen schwieriger abzufangen sind, anstatt das HTTP-Protokoll zu verwenden.