21

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

我正在尝试使用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?如果没有,什么是合适的方法?

4

3 回答 3

36

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

于 2016-03-18T09:19:28.980 回答
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

于 2016-01-22T14:58:06.113 回答
1

您可以使用拦截代理来捕获对应用程序的请求,并在更改参数的情况下重复请求,例如从应用程序请求的原始 URL。

Burp Suite的免费版本将允许使用中继器进行此操作。

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

于 2014-07-25T13:09:04.230 回答