HTTP/HTTPS-proxy по курсу Безопастность интернет-приложений в образовательном проекте Технопарк (3 семестр)
Нужно написать http прокси-сервер, через который можно будет отправлять трафик из браузера. Необходимо сохранять запросы в произвольном хранилище (БД, текстовые файлы и тп) и иметь возможность заново отправлять сохраненные запросы (примерно как history burp proxy и burp repeater) Нужно поддержать:
- Проксирование HTTP запросов (Соединение устанавливается подобным образом https://en.wikipedia.org/wiki/Proxy_server#Web_proxy_servers) - 3 балла
- Проксирование HTTPS запросов (Необходимо создать свой корневой сертификат, на лету при обработке sni https://en.wikipedia.org/wiki/Server_Name_Indication генерировать сертификаты для запрашиваемого домена https://gist.github.com/fntlnz/cf14feb5a46b2eda428e000157447309, само соединение с прокси устанавливается с помощью метода connect https://en.wikipedia.org/wiki/HTTP_tunnel#HTTP_CONNECT_method ) - 3 балла
- Возможность отправки сохраненных запросов (как burp repeater) - 4 балла Реализацию можно делать на любом языке программирования. Можно использовать встроенны или сторонние библиотеки для работы с сетью, парсинга http, tls. Нельзя использовать библиотеки, которые уже реализовали http proxy (например, https://mitmproxy.org/)
- git clone
- npm i && npm start (Если у вас уже установлен Node.js && npm)
- Сервер запускаеться на порт 9000
node app.js -rr={{Integer}}
-rr нужео передать Id запроса внутри Бд которого надо повторить, если ничего не передано повторяются все запросы (результат выведиться в консоль)