无法读取文件的路径披露

信息安全 视窗 渗透测试 文件系统 目录遍历
2021-08-18 02:03:01

所以我是一个渗透测试者,我在服务器上发现了“特性”,它允许我基本上盲目地遍历 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 的想法,那也没关系!


2个回答

您所描述的可以称为信息泄露漏洞。您可以将此技术用作一种指纹识别方法(查找特定的操作系统文件、常见的 Web 框架文件夹和文件等),并且可以证明对识别系统上易受单独漏洞影响的某个版本很有用。正如您所指出的,它是一个 Web 服务器,它可以帮助探索 Web 应用程序漏洞,例如任意文件上传(如果该功能存在)或其他。

您可以按照建议获取重要文件。例如,web.config 文件或其他应用程序配置文件可能包含敏感信息,例如密码。

您也可以尝试获取 SAM 和 SYSTEM 文件——唯一的问题是这些文件几乎肯定会被锁定。repair在这种情况下,您可以从文件夹中获取备份。看到这个答案然后,您可以对它们进行离线破解攻击,以获取 Windows 帐户凭据。