目录遍历:这有什么影响?和 '。' 网址上有吗?

信息安全 Web应用程序 Python
2021-08-26 02:14:58

我在这个网站上问了一个问题 -无法理解为什么网络应用程序容易受到目录遍历攻击,在那里我得到了一份报告,说明我的网络应用程序易受攻击。
我从报告中发布了几个样本,比如Testing Path: http://127.0.0.1:80/??/etc/issue <- VULNERABLE!,现在有人问我/??发布的网址中这两个是什么。

我跑了几个测试:
http://127.0.0.1:80/??/etc/issue 返回主页。
http://127.0.0.1:80/.?/etc/issue 返回主页。
http://127.0.0.1:80/?./etc/issue 返回主页。

因此,下面的模式返回主页:
http://127.0.0.1:80/Position1Position2Anything/Anythingcouldbehere
如果Position1= ?,则返回主页,而与 处的内容无关Position2

If Position1= .thenPosition2必须是?, 用于主页。
Anything也可以是空字符串。

现在,任何与上述模式不匹配的东西都会返回 400/404。
而且,我跑了上面的测试security.stackexchange.com/,它也返回相同的结果(遵循相同的模式.?)和浏览器返回它的主页。

请解释?.在网址中的作用

编辑:
根据渗透测试人员发送的报告,只有这种模式(上面的模式,带有?.)使网络应用程序容易受到目录遍历攻击。

1个回答

在 HTTP URL 中,符号后面的所有内容都是 GET 请求数据?的一部分。

  • 所以 Inhttp://127.0.0.1:80/??/etc/issuehttp://127.0.0.1:80/.?/etc/issue 部分?/etc/issue本质上是对 URL 的 GET 请求中的数据http://127.0.0.1:80/

请注意,这?/etc/issue不是有效的文件路径。

  • http://127.0.0.1:80/?./etc/issue部分./etc/issue本质上是对 URL 的 GET 请求中的数据http://127.0.0.1:80/

注意这./etc/issue 是一个有效的路径。(可能./etc/passwd更好)

在最后一种情况下,由于扫描仪得到了 (HTTP/1.1 200)它,它假设它已经读取了服务器上的文件并将其标记为易受攻击。

扫描程序期望该页面不会受到攻击,例如HTTP/1.1 404(未找到)或HTTP/1.1 302(URL 重定向)。