验证Web服务器中的路径遍历漏洞

23

我希望验证我的网络应用程序没有路径遍历漏洞。

我尝试使用curl来实现,如下所示:

$ curl -v http://www.example.com/directory/../

我希望明确地向/directory/../ URL 发送HTTP请求,以测试涉及代理的特定nginx规则是否容易受到路径遍历的攻击。也就是说,我想发送以下HTTP请求:

> GET /directory/../ HTTP/1.1

但是curl正在将请求重写为/ URL,如输出中所示:

* Rebuilt URL to: http://www.example.com/
(...)
> GET / HTTP/1.1

是否可以使用 curl 进行此测试,强制在请求中传递完整的 URL?如果不行,有什么适当的方法呢?


需要在我的回答中添加任何进一步的信息吗? - SilverlightFox
1
Fernando,你是否曾经得到过一个只使用curl的答案? - Irvin Zhan
你使用的是哪个版本的 curl?我似乎无法复制这种行为,至少在我 curl 本地主机 URL 时没有出现。 - alexw
3个回答

38
您所需的curl标志是curl --path-as-is

3
我不知道如何使用curl进行操作,但你可以尝试使用telnet。执行以下命令: telnet www.example.com 80
你会看到: Trying xxx.xxx.xxx.xxx... Connected to www.example.com. Escape character is '^]'.
现在你已经连接到了www.example.com。输入以下命令来获取页面: GET /directory/../ HTTP/1.1
然后你应该会看到结果。例如: HTTP/1.1 400 Bad Request

1
你可以使用拦截代理来捕获对应用程序的请求,并重复请求以更改参数,例如从应用程序请求的原始URL。 Burp Suite的免费版本将允许使用Repeater进行此操作。
但是,还有其他替代方案,例如ZapWebScarabFiddler2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接