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

时间:2014-07-24 14:24:42

标签: security curl directory-traversal

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

我正在尝试使用curl,就像这样:

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

我希望将HTTP请求显式地发送到/directory/../ URL,以测试涉及代理的特定nginx规则不容易受到路径遍历的影响。即,我希望发送此HTTP请求:

> GET /directory/../ HTTP/1.1

curl正在重写/网址的请求,如输出中所示:

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

是否可以使用curl进行此测试,强制它传递请求中的确切网址?如果没有,那么什么是合适的方式?

3 个答案:

答案 0 :(得分:17)

您正在寻找的卷曲标志是curl --path-as-is

答案 1 :(得分:1)

您可以使用intercepting proxy捕获对您的应用程序的请求,并重复更改参数的请求,例如从应用程序请求的原始URL。

免费版Burp Suite将允许使用Repeater。

但是,有些替代方案也应该允许这样做,例如ZapWebScarabFiddler2

答案 2 :(得分:1)

我不知道如何通过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

你应该看到你的结果。 e.g。

HTTP/1.1 400 Bad Request