Firefox 从 URL 中删除了点号

Val*_*itz 3 url

当我输入这样的 URL 时, ..

 http://SERVER:8085/../tn/d9dd6c39d71276487ae798d976f8f629_tn.jpg
Run Code Online (Sandbox Code Playgroud)

我在没有..-part 的情况下在我的 Web 服务器中获得了一个请求

Firefox 会默默地删除它吗?URL 中不允许 .. 吗?

PS:wget 删除 .. 也:-(

Cas*_*uus 5

我最近开始看到这一点,尽管标记的答案说明了什么,但将其添加到 URL 确实有意义,并且是 IT 安全领域中的有效文件夹路径,我们故意绕过配置错误的站点中的安全措施,归类为目录遍历攻击。

Web(浏览器、wget、curl 等)工具会默默地评估 URL 路径并去掉“/../”,这使我查找漏洞的工作变得更加困难。为了解决这个问题,我将 Firefox 与 Burpsuite 一起使用,这是一种代理评估工具,可以捕获请求并允许我在发送到服务器之前对其进行修改。

这样做,我可以输入:

https://example.com/vpn/../vpns/cfg/etc
Run Code Online (Sandbox Code Playgroud)

在我的浏览器 URL 中,当我使用 Burpsuite 捕获它时,它看起来像:

https://example.com/vpns/cfg/etc
Run Code Online (Sandbox Code Playgroud)

向我展示了 Firefox 实际上已经改变了我原来想要的 URL 字符串。因此,在 Burpsuite 中,我将请求修改为:

GET /vpn/../vpns/cfg/etc HTTP/1.1
Run Code Online (Sandbox Code Playgroud)

将它发送到服务器,瞧,路径保持不变并导航到正确的位置。是的,在具有适当请求处理的正常配置良好的应用程序中,不需要这样做。这个特定的字符串在这 2 种格式中的行为不同,因此有必要修改它以使服务器以我们想要显示的方式处理它,应用程序如何处理请求存在配置问题(目录遍历漏洞)。

这也可以使用 curl 来证明。如果您发送一个像下面这样的普通 curl 命令,curl 将执行与 Firefox 相同的操作并评估路径,在发送到服务器之前从中删除“/vpn/..”:

curl -i -s -k "https://example.com/vpn/../vpns/cfg/etc"
Run Code Online (Sandbox Code Playgroud)

但是,如果您添加“--path-as-is”参数,curl 将不会修改它并按原样发送,并且“/vpn/..”保持不变:

curl -i -s -k "https://example.com/vpn/../vpns/cfg/etc" --path-as-is
Run Code Online (Sandbox Code Playgroud)

经过一些额外的阅读,我发现这种行为部分是由于 URI 规范化标准 ( https://en.wikipedia.org/wiki/URI_normalization )。

这指向用于定义 URI 语法https://tools.ietf.org/html/rfc3986#section-5.2.4 的RFC 3986 。


Psy*_*tho 2

“..”表示相对路径,用于在层次结构中向上移动。因此“..”不是文件夹的有效名称,因此您不能在 URL 中间使用它。这毫无意义。

所以回答你的问题: url 中允许使用“..”,但只能在开头。