Requests: Ignorar URL de normalização

Criado em 10 dez. 2019  ·  4Comentários  ·  Fonte: psf/requests

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 ?

Comentários muito úteis

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)

Todos 4 comentários

@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.

Esta página foi útil?
0 / 5 - 0 avaliações