Проверка уязвимости обхода пути на веб-сервере

Я хочу убедиться, что мое веб-приложение не имеет уязвимости обхода пути.

Я пытаюсь использовать 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 --path-as-is,

Я не знаю способ сделать это через 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.

Другие вопросы по тегам