Проверка уязвимости обхода пути на веб-сервере
Я хочу убедиться, что мое веб-приложение не имеет уязвимости обхода пути.
Я пытаюсь использовать curl
для этого, вот так:
$ curl -v http://www.example.com/directory/../
Я хотел бы, чтобы HTTP-запрос был явно сделан на /directory/../
URL, чтобы проверить, что конкретное правило nginx, включающее прокси, не уязвимо для обхода пути. Т.е. я хотел бы, чтобы этот HTTP-запрос был отправлен:
> GET /directory/../ HTTP/1.1
Но curl
переписывает запрос на /
URL, как видно из вывода:
* Rebuilt URL to: http://www.example.com/
(...)
> GET / HTTP/1.1
Можно ли использовать curl
для этого теста, заставляя его передавать точный URL в запросе? Если нет, что было бы подходящим способом?
3 ответа
Я не знаю способ сделать это через curl
, но вы всегда можете использовать telnet
, Попробуйте эту команду:
telnet www.example.com 80
Вот увидишь:
Trying xxx.xxx.xxx.xxx...
Connected to www.example.com.
Escape character is '^]'.
Теперь у вас есть открытое соединение с www.example.com. Теперь просто введите вашу команду, чтобы получить страницу:
GET /directory/../ HTTP/1.1
И вы должны увидеть свой результат. например
HTTP/1.1 400 Bad Request
Вы можете использовать перехватывающий прокси-сервер для захвата запроса к вашему приложению и повторения запроса с измененными параметрами, такими как необработанный URL-адрес, запрашиваемый из приложения.
Бесплатная версия Burp Suite позволит это использовать Repeater.
Тем не менее, есть альтернативы, которые также должны позволять это, такие как Zap, WebScarab и Fiddler2.