我想验证我的网络应用程序没有路径遍历漏洞。
我正在尝试使用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
进行此测试,强制它传递请求中的确切网址?如果没有,那么什么是合适的方式?
答案 0 :(得分:17)
您正在寻找的卷曲标志是curl --path-as-is
。
答案 1 :(得分:1)
您可以使用intercepting proxy捕获对您的应用程序的请求,并重复更改参数的请求,例如从应用程序请求的原始URL。
免费版Burp Suite将允许使用Repeater。
答案 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