Büchse der Pandora: Wir analysieren die Ausnutzung der WinRAR-Sicherheitsanfälligkeit am Beispiel des Jobs NeoQUEST-2019


Wie oft kommt uns der gute alte WinRAR zu Hilfe! Von Zeit zu Zeit packt er unsere Archive sorgfältig und selbstlos aus und packt sie zurück. Aber wir sind älter geworden und jetzt möchte ich etwas Interessanteres ausprobieren, oder? In diesem Moment fanden sie eine 19 Jahre alte Sicherheitslücke, mit der aus dem Archiv extrahierte Malware an einem beliebigen Ort gespeichert werden kann. Lassen Sie uns am Beispiel der Aufgabe Nr. 9 aus der Online-Phase von NeoQUEST-2019 sehen, wie dies getan werden kann .

Der Legende nach haben wir zwei Server. Mit dem ersten Server (http://213.170.100.213:800/) können Sie ein Geschenk an Pandora senden, die es liebt, alle nicht identifizierten Objekte auszupacken, die ihr aufgefallen sind. Das "Geschenk" -Format ist bekannt: Der Server lädt nur seltene Archive herunter. Laden Sie ein beliebiges rar-Archiv herunter. Als Antwort sehen wir Folgendes:


Es ist nicht sehr wahrscheinlich, dass Pandora an unserem Archiv interessiert war. Versuchen wir, mit nmap etwas mehr über den Server zu erfahren:


Jetzt wissen wir, dass der erste Server:

  • ermöglicht das Laden von rar-Archiven;
  • unter Windows ausgelöst.

Win + rar = WinRar! Wahrscheinlich werden Archive von diesem Archivierer verarbeitet, in dem sie (genauer gesagt - in der UNACEV2.DLL-Bibliothek) eine Sicherheitslücke gefunden haben, die seit 19 Jahren besteht. Mit dieser "Lücke" können Sie den Inhalt des Archivs in ein beliebiges Verzeichnis entpacken, unabhängig davon, wo der Benutzer Dateien extrahiert. Eine detaillierte Beschreibung des Mechanismus zur Ausnutzung von Sicherheitslücken finden Sie hier . Wir fahren mit der Erstellung des Archivs fort, das von selbst geht und selbst entscheidet, wo es ausgepackt werden soll.

Holen Sie sich zunächst das Dienstprogramm WinAceArchiver. Gemäß den Anweisungen unter dem obigen Link erstellen wir ein primitives Archiv, das die Datei hello.txt enthält. Klicken Sie in WinAceArchiver auf die Schaltfläche Erstellen, setzen Sie auf der Registerkarte Optionen die Option Komprimierung auf Speichern, kehren Sie dann zur Registerkarte Auswahl zurück, wählen Sie die Datei hello.txt aus, geben Sie den Pfad zum Speichern unseres Archivs an und vor allem! - Setzen Sie die Option "Vollständigen Pfad speichern":


Klicken Sie anschließend auf die Schaltfläche "Hinzufügen" und rufen Sie das Hello.ace-Archiv auf. Es bleibt, den Pfad leicht anzupassen und die Prüfsumme zu korrigieren. Jeder binäre Editor und jedes acefile.py- Skript helfen uns dabei, die tatsächlichen Werte selbst zu berechnen.

Um die Sicherheitsanfälligkeit auszunutzen, müssen Sie vor dem absoluten Pfad der Datei eine Datenträgerbezeichnung hinzufügen, die vom Archivierer gelöscht wird. Dann wird der Rest des Pfades als "sicherer" Verwandter angesehen. Öffnen Sie also den Editor und ändern Sie den Pfad so, dass er mit C: \ C: \ beginnt.

Es war:


Es wurde:


Überprüfen Sie nun die Prüfsummen mit dem Skript acefile.py:


Korrigieren Sie den Wert auf den aktuellen Wert:


Es bleibt nur, unser Archiv in Hello.rar umzubenennen. Fertig. Überprüfen Sie, wie Pandore so ein Geschenk?


Großartig! Die Erwartungen stimmten mit der Realität überein, und WinRar verarbeitete das Archiv genau so, wie wir es brauchten. Es bleibt eine Sache herauszufinden: Welchen Weg brauchen wir?

Der Legende nach wissen wir, dass Schätze auf dem zweiten Server "angezeigt" werden können (http://213.170.100.213:900/). Wie ist das am einfachsten? Natürlich, indem Sie Ihr PHP-Skript ausführen, das beispielsweise das Server-Stammverzeichnis auflistet. Wir bestätigen unsere Vermutung:


Großartig, der Server ist bereit, unser PHP-Skript auszuführen! Es ist Zeit, genau herauszufinden, wo dieses Skript abgelegt werden soll. Bisher wissen wir, dass der Server unter Windows aktiv ist. Daher beginnt der Pfad höchstwahrscheinlich mit C: \ . Und weiter? Erfahren Sie etwas mehr über den Schatzserver.


Auf dem Server wird Nginx aufgehoben. Sicherlich folgt die Umgebung von Pandora dem letzten Wort des technologischen Fortschritts (in allem, was keine Archivierer betrifft) und verwendet die neueste Version von nginx, nämlich 1.15.9 (Sie können dies hier überprüfen). Es bleibt das Stammverzeichnis des Servers hinzuzufügen, das in der Standard-Nginx-Konfigurationsdatei angegeben ist:


Das Ergebnis lautet wie folgt: C: \ nginx-1.15.9 \ html . Was wird Pandora diesmal beantworten?

Der Zugriff auf das Verzeichnis ist verboten ... Aber wir konnten uns nicht irren! Wir sind definitiv auf dem richtigen Weg, da der Zugriff verweigert wird, aber das Verzeichnis existiert. Es gibt wahrscheinlich etwas, von dem wir noch nichts wissen. Wir sammeln weiterhin Informationen über den Server mithilfe des Verzeichnisscanners:


Ja, da ist es. Das admin / Verzeichnis klingt vielversprechend. Versuchen wir, Pandore ein Ass-Archiv zu senden, in dem C: \ nginx-1.15.9 \ html \ admin als absoluter Pfad fungiert:


Erfolg! Schließlich führen wir unser Skript aus, in dem das Server-Stammverzeichnis aufgeführt ist: 213.170.100.213 : 800 / admin / test34852ED2-8996-4F81-A919-30B6FE9F03AB.php . Das Skript könnte ungefähr so ​​aussehen:

<?php if ($handle = opendir('C:\nginx-1.15.9\html')) { while (false !== ($entry = readdir($handle))) { if ($entry != "." && $entry != "..") { echo "$entry <br>"; } } closedir($handle); } ?> 

Das Ergebnis ist wie folgt:


Eureka! Pandorica! Lassen Sie uns in ähnlicher Weise sehen, mit welcher Art von „Schatz“ -Pandorica / sie gefüllt ist , und die lang erwartete key.txt sehen , die nicht mehr schwer zu lesen ist. Fertig!

In naher Zukunft werden Artikel mit einer Analyse der verbleibenden verschiedenen Aufgaben veröffentlicht. Und bald findet NeoQUEST 2019 statt! Alle Neuigkeiten - auf der Event- Website nicht verpassen!

Source: https://habr.com/ru/post/de448742/


All Articles