Forensik, SQL-Injection und leidende Katze: Analyse der Aufgabe Nr. 3 der Online-Phase NeoQUEST-2020



Heute werden wir die umstrittenste Aufgabe von NeoQUEST-2020 betrachten : Der erste Teil ist ein Champion in der Anzahl der Teilnehmer, die ihn bestanden haben, und der zweite Teil hat nur wenigen gehorcht. Was ist das Besondere an ihm? Verstehe den Schnitt!


Mussten Sie jemals einen RAM-Dump untersuchen? Wissen Sie, wie viele interessante Dinge Sie von dort bekommen können? (Spoiler: alles, einschließlich der Ergebnisse der Ausführung von Skripten, der letzten Fotos sowie des Browserverlaufs).
Was ist mit exotischen SQL-Injektionen? Sie laden ein bestimmtes Bild auf die Website hoch und erhalten Informationen aus einer geschlossenen Datenbank. Ist dies nicht ein ideales Verbrechen?
Im ersten Teil des Artikels werden wir die Mittel zum Analysieren des Speicherauszugs betrachten und lernen, wie wir die benötigten Informationen von dort extrahieren können, und im zweiten Teil des Artikels werden wir den Prozess der Manipulation von Bild-Tags für eine knifflige Injektion klar zeigen :)

Die Aufgabe besteht also darin, das Archiv herunterzuladen, die eine 1-GB-Binärdatei mit dem sprechenden Namen memdump.bin enthält, auf deren Grundlage wir davon ausgehen können, dass es sich um einen RAM-Dump handelt. Wir werden das Volatilitäts-Framework für seine Forschung verwenden . Volatility unterstützt verschiedene Plugins, die das Suchen und Extrahieren verschiedener Informationen aus dem Speicherauszug erleichtern, die für die Erpressung eines Analysten nützlich sind . Verwenden Sie zunächst den Befehl imageinfo, um Informationen zum Speicherauszug zu erhalten:



Gemessen an der Ausgabe des Befehls imageinfo handelt es sich um einen Windows 7-Speicherauszug. Als Nächstes sehen wir uns die Liste der laufenden Prozesse im System an, als der Speicherauszug mit dem Befehl pslist entfernt wurde:



In der Liste sehen Sie einige interessante Prozesse. Beginnen wir die Studie mit dem Prozess chrome.exe - im Browser finden Sie immer etwas Interessantes. Es gibt zusätzliche Plugins für die Volatilität, die das Extrahieren von Informationen aus Prozessen automatisieren. Mit dem Chromehistory- Plugin können wir beispielsweise einen Browser-Besuchsverlauf aus einem RAM-Dump extrahieren:



In der Geschichte von Chrome können mehrere interessante Dinge gleichzeitig bemerkt werden. Zunächst ein Link zum zweiten Teil der Aufgabesowie Suchanfragen zu Metadaten in PNG-Bildern, was auch ein Hinweis auf den zweiten Teil ist, aber wir werden später darauf zurückkommen. Gegenwärtig sind wir an Anfragen nach einem Aktionscode für einen Rabatt auf die Website und PDF-Dateien interessiert , der auf den Gegenstand weiterer Suchvorgänge hinweist (das Ausführen von Acrobat Reader`a kann uns auch dazu auffordern). Versuchen wir, PDF-Dokumente in einem Speicherauszug mit dem Befehl filescan zu finden:



Viel Glück! Es sieht so aus, als ob sich in der Müllkippe eine promo.pdf befindet. Versuchen wir es mit dem Befehl dumpfiles zu ziehen:



In diesem Stadium können kleinere Schwierigkeiten auftreten, da einige PDF-Dokument-Viewer die gerade extrahierte Datei möglicherweise nicht erkennen (Sie müssen nur die zusätzlichen Bytes am Ende der Datei löschen). Aber haben wir wirklich Angst vor zusätzlichen Bytes? :) Öffnen Sie am Ende das Dokument und sehen Sie sich den QR-Code an. Nach dem Lesen erhalten wir die Flagge aus dem ersten Teil der Aufgabe (und gleichzeitig den Aktionscode für den Erhalt eines Geschenks vom NeoQUEST-Team - wir geben unvergessliche Preise alle Teilnehmer, die mindestens eine Aufgabe abgeschlossen haben!).



Versuchen Sie als nächstes, die zweite Flagge zu erhalten. Wir kehren zur Site zurück, deren Link im Browserverlauf gefunden wurde. Um auf die Website zugreifen zu können, müssen Sie einen Aktionscode eingeben. Wir erinnern uns an den Suchverlauf im Browser und an die Beschreibung des Dokuments selbst (USE THIS TO JOIN), aus der wir annehmen können, dass die erste Flagge der von uns benötigte Aktionscode ist. Wir geben es in das Feld ein und gelangen zu der Site, auf der wir ein Bild hochladen können:



Anhand der Häufigkeit, mit der die Site einfriert, haben unsere Teilnehmer beschlossen, das Laden aller möglichen Arten von Dokumenten experimentell zu überprüfen. Eine gewisse Zeit später verstehen wir, dass nur PNG-Bilder auf die Site hochgeladen werden können. Das nächste Rätsel ist die Meldung "Nicht genügend Daten, um dieses Bild zu speichern, sorry!", Die auftritt, wenn Sie versuchen, ein Bild hochzuladen.

Zurück zum Verlauf des Browsers erinnern wir uns an Anfragen des Formulars „Metadaten zur PNG-Datei hinzufügen“. Mit einfachen Schlussfolgerungen schließen wir, dass höchstwahrscheinlich bestimmte Werte in die Metadaten eingegeben werden müssen, um ein Bild auf eine Site hochzuladen. Sie können beginnen, indem Sie das PNG-Format erkunden (für eine Beschreibung klicken Sie beispielsweise hier ). Überprüfen Sie zunächst die Liste der Standardschlüsselwörter für Metadaten-PNG-Bilder, z. B. "Autor", "Beschreibung" usw.

Fügen Sie beispielsweise mit dem Konvertierungsprogramm aus dem ImageMagick-Set Metadaten zum Testbild hinzu: convert test.png -set 'Title' '1' -set 'Author' '2' -set 'Description' '3' -set 'Copyright' '4 '-set' Erstellungszeit '' 5 '-set' Software '' 6 '-set' Haftungsausschluss '' 7 '-set 'Warnung' '8' -set 'Quelle' '9' -set 'Kommentar' '0' out.png

Wir versuchen, das resultierende Bild auf die Website hochzuladen und genießen den Erfolg:



Es stellt sich heraus, dass die erforderlichen Metadatenfelder Titel, Beschreibung, Autor und Urheberrecht sind.
Einen Hinweis dazu finden Sie übrigens auch im Speicherauszug: Die Erwähnung der Datei mr_cat.png finden Sie unter Volatility.



Unsere Teilnehmer entschieden, dass es mit Hilfe von Mr. Cat notwendig war, auf der Website zu injizieren (viele Nachrichten kamen mit Mr. Cat in komprimierter, umgekehrter, reflektierter und anderer unansehnlicher Form an unsere Mail ), aber die Katze hatte nichts damit zu tun! Er lenkt einfach ab und deutet die Teilnehmer an: Nun, sieh mich an, da ist etwas Interessantes drin! Innerhalb der Müllkippe blieb das Bild nur teilweise erhalten; In den Resten können Sie jedoch die erforderlichen ausgefüllten Metadatenfelder erkennen:



Fahren Sie fort: Jetzt können wir Dateien auf die Site hochladen. Was gibt es jedoch und wie sucht man nach einer Flagge? Es ist logisch anzunehmen, dass Metadaten, da sie zum Herunterladen erforderlich sind, möglicherweise zum Speichern heruntergeladener Dateien verwendet werden (z. B. als Schlüssel in einer Datenbank). Hurra! Wir nähern uns dem Dessert: Wir müssen die Site auf die Möglichkeit einer SQL-Injektion überprüfen. Wir stellen fest, dass, wenn einer der Parameter durch ein doppeltes Anführungszeichen (") ersetzt wird, die Site uns über einen Fehler benachrichtigt, anstatt das Bild zu laden:



Jetzt sehen wir die SQL-Abfrage selbst und verstehen, welche Felder wir bearbeiten können, um eine Injektion zum Extrahieren von Daten aus der verwendeten Datenbank zu erstellen. In diesem Fall ist es logisch, das erste Bild zu überprüfen, das in die Datenbank hochgeladen wurde. Während des Einspritzvorgangs sollten Sie auch darauf achten, dass INSERT in der Anforderung ausgeführt wird. Dies zwingt uns, bestimmte Abfragen zu erstellen, da es unmöglich ist, eine SELECT-Operation explizit aus derselben Tabelle auszuführen, in die wir gleichzeitig mit der Einfügeoperation (INSERT) einfügen.

Stellen wir eine Anfrage, mit der wir die Beschreibung des ersten Bildes in der Datenbank herausziehen:

convert test1.png -set 'Title' '1' -set 'Author' '", (SELECT Beschreibung FROM (SELECT * FROM Bild) AS x limit 0,1)) - -' -set 'Description' '3' - set 'Copyright' '4' test.png Laden Sie

das empfangene Bild auf die Website hoch und erhalten Sie die Beschreibung im Feld Copyright, das ein Flag ist:



Hurra, Aufgabe erledigt! Wir hoffen, dass wir alle davon überzeugt haben, die Benutzereingaben zum millionsten Mal zu überprüfen und sie auch sicher zu verwahren Apfel deines Auges von der Erstellung eines Dumps deines RAM :)
Beende den Artikel mit einem Zitat der großen Weisen:


All Articles