
POC для CVE-2023-32681
Это реализация CVE-2023-32681 на Python 3, затрагивающая клиентов, использующих библиотеку requests версии <= 2.30.0.
Согласно https://www.rfc-editor.org/rfc/rfc9110.html#section-15.4, когда сервер выдает перенаправление 3xx, пользовательский агент должен изменить запрос, удалив из него определенные заголовки и поля.
Подробности об этих полях можно найти по адресу https://www.rfc-editor.org/rfc/rfc9110.html#section-15.4-5. Применительно к этому CVE я выделил соответствующую часть здесь.

Версия requests <= 2.30.0 не удаляла заголовок "Proxy-Authorization" при обработке перенаправления на "https", что приводило к утечке учетных данных прокси-сервера на перенаправленный сервер.
Более подробную информацию можно найти по адресам
/redirect, который перенаправляет трафик на второй сервер, работающий на порту 4431./echoHeaders. Этот маршрут возвращает клиенту заголовки, полученные в запросе.Proxy-Authorization, то версия requests считается уязвимой к "CVE-2023-32681".certFile и keyFile в файле server/main.go.go run server/main.go. Это запустит два сервера, слушающих порты 443 и 4431.go run proxy/main.go. Это запустит прокси-сервер на порту 8080.pip3 install -r script/requirements_request_2_30_0.txtpython3 script/poc.py и посмотрите вывод. Вы увидите, что сервер возвращает заголовок "Proxy-Authorization" в ответе. Сервер также выводит полученные заголовки в журналы.pip3 install -r script/requirements_request_2_31_0.txtpython3 script/poc.py и посмотрите вывод. Вы увидите, что заголовок "Proxy-Authorization" теперь отсутствует в ответе сервера. Это также можно проверить в журналах сервера.



