所以我是一个渗透测试者,我在服务器上发现了“特性”,它允许我基本上盲目地遍历 Web 服务器的文件(不执行或读取它们)。问题是我无法找到一种方法来证明这是一个漏洞。一般的问题是:哪些文件,就其知道其名称的性质而言,代表漏洞(如果有的话)?
在我的具体场景中,操作系统是Windows,我可以这样提出请求。
http://example.com?site=file://C:\Users\Administrator
服务器将返回一个页面,指示它无法加载此文件,而如果我发出这样的请求:
http://example.com?site=file://C:\Users\namethatwouldneverexist,它会告诉我找不到文件。
本质上,服务器会先检查文件是否存在,然后再检查我是否有权读取它。
以下是我尝试过的一些事情:
../../../(等)这只会产生一个有效的目录,这意味着它会告诉我这是被禁止的。没有帮助。%appdata%这会导致另一种错误,应用程序不喜欢路径中的百分号,所以它不会为我扩展它。C:\Windows\system32\ping.exe 8.8.8.8这将导致“未找到”错误,因为它不传递参数(或执行文件)。file://x这会将密码暴露给我,但这在我的场景中并不是特别有趣。
我能够枚举映射了哪些网络驱动器,但这并不是特别有用。我也可以从本地网络对服务器进行端口扫描以公开私有端口,但我现在对文件系统更感兴趣。
从本质上讲,我的问题归结为:积极识别服务器上存在的文件的能力是否构成漏洞,如果是,如何?显然,如果您有将其转变为 RCE 的想法,那也没关系!