Nos casos em que eu gostaria de testar vulnerabilidades Path Traversal em aplicativos da web, o URL de destino geralmente é https://example.com/../../path
. Usando o método GET nas solicitações, esse URL será normalizado conforme abaixo. Consequentemente, isso levará a resultados indesejados no teste.
r = requests.get('https://example.com/../../path')
print(r.url)
# https://example.com/path
Com curl
, temos uma opção para ignorar a normalização: --path-as-is
. Então, temos uma opção equivalente para requests
?
@EDjur Obrigado por sua informação. Você conhece uma solução alternativa para resolver isso?
Tente usar o pedido preparado
url = "http://example.com/../something.txt"
s = requests.Session()
req = requests.Request(method='POST' ,url=url, headers=headers, data=data)
prep = req.prepare()
prep.url = url
r = s.send(prep, verify=False)
@akmalhisyam Muito obrigado. Isso funciona bem.
@akmalhisyam está correto aqui. Usar o fluxo de trabalho PreparedRequests normalmente resolverá problemas como este se você DEVE definir algo explicitamente.
Comentários muito úteis
Tente usar o pedido preparado