Natas Web. Passage der CTF-Plattform zur Ausnutzung von Web-Schwachstellen

Bild

In diesem Artikel werden wir uns am Beispiel des Natas- Kriegsspiels mit der Funktionsweise einiger WEB-Identitäten befassen. Jede Ebene hat Zugriff auf das Passwort der nächsten Ebene. Alle Passwörter werden auch in den Dateien / etc / natas_webpass / gespeichert. Beispielsweise wird das Kennwort für natas5 in der Datei / etc / natas_webpass / natas5 gespeichert und ist für die Benutzer natas4 und natas5 schreibgeschützt.

Organisationsinformationen
Speziell für diejenigen, die etwas Neues lernen und sich in einem der Bereiche Informations- und Computersicherheit entwickeln möchten, werde ich über die folgenden Kategorien schreiben und sprechen:

  • PWN;
  • Kryptographie (Krypto);
  • Netzwerktechnologien (Netzwerk);
  • Reverse (Reverse Engineering);
  • Steganographie (Stegano);
  • Suche und Ausnutzung von WEB-Schwachstellen.

Darüber hinaus werde ich meine Erfahrungen in den Bereichen Computerforensik, Analyse von Malware und Firmware, Angriffe auf drahtlose Netzwerke und lokale Netzwerke, Durchführung von Pentests und Schreiben von Exploits teilen.

Damit Sie sich über neue Artikel, Software und andere Informationen informieren können, habe ich in Telegram einen Kanal und eine Gruppe eingerichtet, um alle Probleme im Bereich ICD zu diskutieren . Außerdem werde ich Ihre persönlichen Anfragen, Fragen, Vorschläge und Empfehlungen persönlich prüfen und alle beantworten .

Alle Informationen werden nur zu Bildungszwecken bereitgestellt. Der Autor dieses Dokuments übernimmt keine Verantwortung für Schäden, die jemandem durch die Verwendung von Kenntnissen und Methoden entstehen, die durch das Studium dieses Dokuments erworben wurden.

Stufe 0


Wir schauen uns den Quellcode der Seite an und überprüfen die Kommentare.

Bild

Wir finden das Passwort.
Sehr oft kommentieren Entwickler bei der Entwicklung von Websites verschiedene Zusatzinformationen für sich selbst, einschließlich Autorisierungsdaten.

Stufe 1


Wir sehen uns den Quellcode der Seite noch einmal an, aber einem Javascript-Ereignis wird ein Mausklick mit der rechten Maustaste zugewiesen, wodurch verhindert wird, dass das Kontextmenü angezeigt wird.

Bild

Zum Anzeigen der Seite können Sie die Browser-Hotkeys verwenden. Das Drücken der rechten Maustaste funktioniert dann nicht.

Bild

Wir finden das Passwort.
Optional (manchmal vorrangig) können Sie einfach die gesamte Seite herunterladen und den Code anzeigen.
wget --http-user=natas1 --http-password=gtVrDuiDfck831PqWsLEZy5gyDz1clto http://natas1.natas.labs.overthewire.org 

Bild

Stufe 2


Wir sehen uns den Quellcode der Seite noch einmal an und stellen fest, dass das Bild auf die Seite geladen wird.

Bild

Gehen wir zu dem Verzeichnis, aus dem das Bild heruntergeladen wird. Wir stellen fest, dass dieses Verzeichnis nicht indiziert und für Benutzer verfügbar ist.

Bild

Wir nehmen das Passwort weg.

Bild
Um zu vermeiden, dass Dateien im Verzeichnis angezeigt werden, sollten die Servereinstellungen (in diesem Fall /etc/apche2/httpd.conf) die Dateiindizierung verbieten. Oder in diesem Verzeichnis sollte sich die Datei index.html befinden.

Stufe 3


Wir schauen uns noch einmal den Quellcode der Seite an, da gibt es nichts Interessantes. Das zweite Element nach dem Anzeigen des Quellcodes ist das Scannen von Dateien und Verzeichnissen. Geben Sie den Benutzer und das Kennwort für die http-Authentifizierung als Parameter des Dienstprogramms dirb an.

Bild

Die Datei robots.txt enthält eine Liste von Verzeichnissen und Dateien, die von Suchmaschinenrobotern (z. B. Google und Yandex) nicht angezeigt werden dürfen.

Bild

Gehen wir in das versteckte Verzeichnis auf der Site, suchen die Datei und holen das Passwort ab.

Bild

Bild
Als Analog können Sie das Dienstprogramm dirsearch oder burpsuite verwenden.

Stufe 4


Der Server informiert, von welcher Seite sie gegangen sind, und sagt, zu welcher Seite sie gehen sollen. Er kann diese Daten nur im HTTP-Protokoll-Header überprüfen.

Bild

Wählen Sie im Browser die Symbolleiste → Netzwerk → Letzte Anfrage und „Ändern und Senden“. Sie sollten das Feld Referer ändern - es zeigt genau, woher wir kommen.

Bild

Es bleibt das Passwort abzuholen.

Bild
Diese Aktion ist Burpsuite.

Es muss ständig überprüft werden, welche HTTP-Felder der Webserver anzeigt. Dies sind die am seltensten gefilterten Benutzerdaten.

Stufe 5


Der Service meldet, dass wir nicht angemeldet sind. Das heißt, es speichert die Daten unserer Autorisierung. Der einzige Ort, an dem dies übertragen werden kann, ist die Cookiesitzung.

Bild

Sehen wir uns die Cookies an (der Einfachheit halber ist es besser, Erweiterungen im Browser zu installieren) und ändern Sie den Wert des angemeldeten Parameters in 1.

Bild

Laden Sie die Seite neu und sammeln Sie das Passwort.

Bild
Diese Sicherheitsanfälligkeit wird als fehlerhafte Authentifizierung und Sitzungsverwaltung klassifiziert.

Stufe 6


Dieser Service stellt uns den Quellcode zur Analyse zur Verfügung.

Bild

Das Geheimnis, das wir eingeben müssen, ist enthalten (verbunden mit der Datei).

Bild

Gehen Sie zur Adresse dieser Datei auf dem Server und holen Sie
ein Geheimnis. Da diese Dateien PHP-Code enthalten, sind sie
wird nur angezeigt, wenn Sie sie herunterladen.

Bild

Senden Sie ein Geheimnis, erhalten Sie ein Passwort.

Stufe 7


Wenn Sie auf beide Links klicken, stellen wir fest, wie sie geladen werden. Der Dateiname auf dem Server wird auf den GET-Parameterseiten übergeben.

Bild

Versuchen wir, den Pfad zur Datei / etc / passwd als Parameter anzugeben.

Bild

Und sie sagen uns, wo wir das Passwort bekommen können.

Bild
Die Sicherheitsanfälligkeit wird als LFI klassifiziert.

Stufe 8


Der Quellcode des Dienstes wird bereitgestellt. Die codierte Zeichenfolge und die Codierungsmethode werden gespeichert.

Bild

Es ist notwendig, in umgekehrter Reihenfolge zu dekodieren:

  1. Konvertieren von Hex-Ansicht in Binärdarstellung;
  2. drehe die Linie um;
  3. decodiere base64.

 <?php $secret = "3d3d516343746d4d6d6c315669563362"; echo base64_decode(strrev(hex2bin($secret)))."\n"; ?> 

Bild

Senden Sie ein Geheimnis und erhalten Sie ein Passwort.

Bild

Stufe 9


Aus der Analyse des Quellcodes wird deutlich, dass Benutzerdaten an die Befehlszeile übertragen werden, um nach Daten in der Datei zu suchen.

Bild

Da die Daten nicht gefiltert werden, können Sie die Pipeline erfassen und andere Betriebssystembefehle ausführen. Wenn Sie der Anforderung eine Zeichenfolge übergeben, zum Beispiel: "|| ls # ", dann wird die vollständige Anfrage" grep -i || ls # dictionary.txt. " Alles nach || - wird mit einem Fehler ausgeführt und nach # - wird es auskommentiert, dh wir erhalten nur die Ausgabe des Befehls ls.

Bild

Daher lesen wir die Datei: „|| cat / etc / natas_webpass / natas10 # ".

Bild
Die Sicherheitsanfälligkeit wird als OS Command Injection klassifiziert.

Stufe 10


Aus der Analyse des Quellcodes wird deutlich, dass Benutzerdaten an die Befehlszeile übertragen werden, um nach Daten in der Datei zu suchen.

Bild

Die Aufgabe ist die gleiche wie auf Stufe 9, nur dass es jetzt einen Filter gibt. T.O. Zeichen verschwinden aus der Anfrage: ";", "|", "&". Sie können die Datei legitim lesen! Angenommen, unser Passwort hat das Symbol "z": "z / etc / natas_webpass / natas11 #".

Bild

Fortsetzung folgt. Sie können sich uns per Telegramm anschließen .

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


All Articles