我想验证我的web应用程序没有路径遍历漏洞。
我正在尝试使用curl
,像这样:
$ curl -v http://www.example.com/directory/../
我希望HTTP请求显式地对/directory/../
URL进行,以测试涉及代理的特定nginx规则不容易受到路径遍历的影响。也就是说,我希望发送这个HTTP请求:
> GET /directory/../ HTTP/1.1
但是curl
正在将请求重写为/
URL,如输出所示:
* Rebuilt URL to: http://www.example.com/
(...)
> GET / HTTP/1.1
是否可以在此测试中使用curl
,强制它在请求中传递确切的URL ?如果没有,什么是合适的方式?
您要查找的curl标志是curl --path-as-is
。
我不知道如何通过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
您可以使用拦截代理捕获对您的应用程序的请求,并重复更改参数的请求,例如从应用程序请求的原始URL。
免费版的Burp Suite将允许使用Repeater。
然而,也有其他的选择,如Zap, WebScarab和Fiddler2。