2014-07-24 10 views
9

Chcę sprawdzić, czy moja aplikacja internetowa nie ma usterki path traversal.Sprawdzanie podatności na traversal path w serwerze WWW

Próbuję użyć curl za to tak:

$ curl -v http://www.example.com/directory/../ 

Chciałbym żądanie HTTP do wyraźnie zaznaczonych do /directory/../ URL, aby sprawdzić, czy konkretny przepis nginx udziałem pełnomocnika nie jest narażone na przemierzanie ścieżki. To znaczy, chciałbym to żądanie HTTP do wysłania:

> GET /directory/../ HTTP/1.1 

Ale curl jest przepisywanie wniosek co do / URL, jak widać na wyjściu:

* Rebuilt URL to: http://www.example.com/ 
(...) 
> GET/HTTP/1.1 

Czy jest możliwe użyć testu curl, zmuszając go do podania dokładnego adresu URL w żądaniu? Jeśli nie, jaki byłby odpowiedni sposób?

+0

Potrzebujesz więcej informacji, dodając do mojej odpowiedzi? – SilverlightFox

+1

fernando, czy kiedykolwiek dostałeś odpowiedź na to pytanie, które używa tylko curl? –

+0

Którą wersję 'curl' używasz? Nie mogę replikować tego zachowania, przynajmniej nie kiedy "zwijam" adres URL lokalnego hosta. – alexw

Odpowiedz

1

Można użyć numeru intercepting proxy, aby przechwycić żądanie do aplikacji i powtórzyć żądanie przy zmienionych parametrach, takich jak nieprzetworzony adres URL żądany z aplikacji.

Darmowa wersja Burp Suite pozwoli na to za pomocą wzmacniacza.

Istnieją jednak alternatywy, które powinny również zezwalać na takie, jak Zap, WebScarab i Fiddler2.

1

Nie jestem świadomy sposobu, aby to zrobić poprzez curl, ale zawsze można użyć telnet. Spróbuj tego polecenia:

telnet www.example.com 80

Zobaczysz:

Trying xxx.xxx.xxx.xxx... Connected to www.example.com. Escape character is '^]'.

Teraz masz otwarte połączenie www.example.com. Teraz wystarczy wpisać polecenie, aby pobrać na stronie:

GET /directory/../ HTTP/1.1

i powinieneś zobaczyć swój wynik. na przykład

HTTP/1.1 400 Bad Request

11

Zawinięcie flag szukasz jest curl --path-as-is.

Powiązane problemy