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

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.

Vergangene Teile: Teil 1 , Teil 2 und Teil 3 .

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.

Level 22


Nach der Analyse des Quellcodes wird deutlich, dass das Kennwort angezeigt wird, wenn der Parameter lovio GET nicht leer ist.

Bild

Wenn die Administrationssitzung bei der ersten Überprüfung nicht installiert ist, werden wir ohne Parameter auf diese Seite umgeleitet.

Bild

Sie müssen nur den Web-Agenten verwenden, keinen Browser, zum Beispiel Curl.

Bild

Bild

Wir nehmen das Passwort weg.

Level 23


Wir analysieren den Quellcode. Die Funktion strstr (s1, s2) gibt einen Teilstring von s1 zurück, der mit s2 beginnt. Auch PHP wirft automatisch Typen. Das heißt, wenn Sie es vergleichen, führt es die Zeichenfolge zu einer Zahl und verwirft zusätzliche Zeichen.

Bild

Die Saite "11iloveyou" ist für unseren Zustand geeignet. Bei der ersten Überprüfung wird "iloveyou" zurückgegeben, dh "True". Bei der zweiten Prüfung 11> 10, d. H. Wahr.

Bild

Level 24


Diese Ebene enthält auch einen logischen Fehler. Die Bedingung ist trotzdem wahr, wenn strcmp FALSE zurückgibt. Aber strcmp gibt auch im Fehlerfall FALSE zurück.

Bild

Obwohl PHP Typen automatisch umwandelt, ist es nicht möglich, ein Array in einen String umzuwandeln. Öffnen Sie dazu den Seitenquellcode und ändern Sie den Feldnamen von "passwd" in "passwd []".

Bild

Wir senden jede Zeile.

Bild

Wir nehmen das Passwort weg.

Level 25


Am interessantesten bei der Analyse des Quellcodes ist die Funktion logRequest (), die Felder verarbeitet, die der Benutzer steuern kann. Dies ist der HTTP-Header von User_Agent und Cookie session_id.

Bild

Bild

Bild

Es ist zu beachten, dass alle Sequenzen "../" aus der Zeichenfolge gelöscht werden. Dies kann jedoch erfolgen durch: "... /. /" => "../".

Lösungsidee: Da der Pfad zum Aufzeichnen von Protokollen von session_id abhängt, die wir steuern können, und durch Auswahl der Anzeigesprache der Pfad auf dem Server ausgewählt wird - aufgrund von LFI können wir die Protokolldatei lesen.

Bild

Bild

Bild

Bild

Jetzt muss das Passwort aus / etc / natas_webpass / natas26 in unsere Protokolldatei geschrieben werden. Da unser Web-Agent zuerst aufgezeichnet und dann aus der Datei ausgegeben wird, fügen wir diesem Feld den PHP-Code hinzu.

Bild

Bild

Wir bekommen das Passwort.

Stufe 26


In diesem Beispiel liegt eine sehr schwerwiegende Sicherheitsanfälligkeit vor - die ungefilterte Deserialisierung von Objekten. Die Funktion unserialize () nimmt eine serialisierte Variable und konvertiert sie zurück in ein PHP-Objekt.

Bild

Der konvertierte Wert wird zurückgegeben. Dies kann eine Ganzzahl, ein Float, ein String, ein Array oder ein Objekt sein. Das heißt, Sie können jeden Code ausführen. Die Logger-Klasse schreibt beim Erstellen bestimmte Informationen in die Datei.

Bild

Die Idee ist wie folgt:

  1. Schreiben Sie die Logger-Klasse neu, wobei anstelle einer der Nachrichten ein PHP-Code enthalten ist, der ein Kennwort ausgibt.
  2. Codieren Sie es in Base64.
  3. In den Keks einfügen.
  4. Greifen Sie auf die Protokolldatei zu.
  5. Passwort wegnehmen.

<?php class Logger{ private $logFile; private $initMsg; private $exitMsg; function __construct($file){ $this->initMsg="<? passthru('cat /etc/natas_webpass/natas27'); ?>"; $this->exitMsg="<? passthru('cat /etc/natas_webpass/natas27'); ?>"; $this->logFile = "img/phpobjinj.php"; } function log($msg){ ; } function __destruct(){ ; } } $obj = new Logger("obj"); echo urlencode(base64_encode(serialize($obj))); ?> 

Bild

Bild

Bild

Wir bekommen das Passwort.

Level 27


Dieser Dienst stellt Benutzerdaten bereit. Wenn der Benutzer jedoch nicht vorhanden ist, erstellt er ihn mit dem angegebenen Benutzernamen und Kennwort.

Bild

Das Problem ist, dass der Dienst nach dem Erstellen des Benutzers sein Kennwort beim Anmelden nicht überprüft. Gleichzeitig fallen nur die ersten 64 Zeichen des Logins und des Passworts nach dem Filtern in die Datenbank. Darüber hinaus kennen wir den Benutzernamen: natas28.

Bild

Erstellen Sie einen Benutzer mit einem leeren Kennwort und Namen: "natas28_60-Leerzeichen_ beliebiges Zeichen". (Während der Überprüfung gibt es keine Übereinstimmung mit dem Benutzer natas28, aber während der Erstellung wird es gefiltert und der Datenbank hinzugefügt. Das heißt, das Kennwort wird beim nächsten Aufruf nicht überprüft.)

Bild

Bild

Wir gehen unter dem Namen natas28 und einem leeren Passwort. Wir bekommen die Benutzerdaten natas28.

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

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


All Articles