
प्रूफ-ऑफ-कॉन्सेप्ट स्क्रिप्ट्स और CVE-2023-41892 को दोबारा प्रस्तुत करने के लिए डॉकर लैब, जो Craft CMS में एक प्री-ऑथेंटिकेटेड रिमोट कोड एक्ज़ीक्यूशन कमजोरी है। इसमें log poisoning और Imagick MSL फ़ाइल राइट एक्सप्लॉइट शामिल हैं।
इस रिपॉजिटरी में CVE-2023-41892 को पुनः उत्पन्न करने के लिए प्रूफ-ऑफ-कॉन्सेप्ट स्क्रिप्ट और एक स्थानीय Vulhub लैब शामिल है, जो Craft CMS में एक पूर्व-प्रमाणित रिमोट कोड निष्पादन भेद्यता है।
इस प्रोजेक्ट का उपयोग केवल एक अधिकृत स्थानीय लैब या अन्य सिस्टम पर करें जहां आपको परीक्षण करने की स्पष्ट अनुमति हो।
CVE-2323-41892_PoC/
+-- README.md
+-- LFI_to_RCE.py
+-- Imagick_PoC.py
+-- Vulnhub_env/
+-- docker-compose.yml
+-- README.md
+-- README.zh-cn.md
+-- 1.png ... 5.png
| पथ | उद्देश्य |
|---|
LFI_to_RCE.py | Psy\Configuration गैजेट के माध्यम से लॉग पॉइज़निंग और फिर स्थानीय फ़ाइल समावेशन का PoC। |
Imagick_PoC.py | Imagick MSL गैजेट के माध्यम से मनमानी फ़ाइल लेखन का PoC। |
Vulnhub_env/docker-compose.yml | Docker Compose लैब जो भेद्य Craft CMS 4.4.14 और MySQL 5.7 प्रारंभ करता है। |
Vulnhub_env/README.md | मूल Vulhub-शैली पुनरुत्पादन नोट्स जिसमें अनुरोध उदाहरण और स्क्रीनशॉट हैं। |
Vulnhub_env/README.zh-cn.md | Vulhub पुनरुत्पादन नोट्स का चीनी संस्करण। |
Vulnhub_env/*.png | Vulhub वातावरण दस्तावेज़ीकरण द्वारा उपयोग किए गए स्क्रीनशॉट। |
CVE-2023-41892, Craft CMS के 4.0.0-RC1 से 4.4.14 तक के संस्करणों को प्रभावित करता है। यह समस्या Craft CMS 4.4.15 में ठीक की गई थी।
दोनों स्क्रिप्ट द्वारा उपयोग किया जाने वाला भेद्य एंडपॉइंट है:
/index.php?action=conditions/render
PoCs डिफ़ॉल्ट स्थानीय लैब URL को लक्षित करते हैं:
http://localhost:8088
यदि आपकी लैब किसी अन्य होस्ट या पोर्ट पर चल रही है, तो LFI_to_RCE.py और Imagick_PoC.py के शीर्ष के पास URL मान अपडेट करें।
requestsPython निर्भरता स्थापित करें:
pip install requests
भेद्य Craft CMS वातावरण प्रारंभ करें:
cd Vulnhub_env
docker compose up -d
Craft CMS इंस्टॉलर खोलें:
http://localhost:8088/admin/install
इंस्टॉलेशन के दौरान निम्नलिखित डिफ़ॉल्ट डेटाबेस सेटिंग्स का उपयोग करें:
| सेटिंग | मान |
|---|---|
| डेटाबेस होस्ट | db |
| डेटाबेस नाम | craftcms |
| डेटाबेस उपयोगकर्ता | root |
| डेटाबेस पासवर्ड | root |
इंस्टॉलेशन के बाद, पुष्टि करें कि साइट यहाँ पहुंच योग्य है:
http://localhost:8088
रिपॉजिटरी रूट से कमांड चलाएँ:
cd CVE-2323-41892_PoC
चलाएँ:
python LFI_to_RCE.py
यह क्या करता है:
Craft CMS लॉग में PHP कोड युक्त विकृत JSON भेजता है।
वर्तमान स्थानीय दिनांक का उपयोग करके एक लॉग फ़ाइल पथ बनाता है:
../storage/logs/web-YYYY-MM-DD.log
ज़हरीली लॉग फ़ाइल को शामिल करने के लिए \Psy\Configuration के साथ craft\elements\conditions\users\UserCondition का उपयोग करता है।
जाँचता है कि प्रतिक्रिया में phpinfo() आउटपुट दिखाई देता है या नहीं।
अपेक्षित सफलता आउटपुट:
[*] Starting Log Poisoning...
[+] Payload sent successfully!
[*] Starting LFI to RCE...
[+] phpinfo() executed successfully!
चलाएँ:
python Imagick_PoC.py
यह क्या करता है:
Imagick गैजेट के साथ ऑब्जेक्ट निर्माण ट्रिगर करता है।webshell.php लिखने का प्रयास करता है।http://localhost:8088/webshell.php का अनुरोध करता है और phpinfo() की जाँच करता है।अपेक्षित सफलता आउटपुट:
[*] Sending multipart/form-data payload to trigger Imagick gadget...
[+] Success: phpinfo() output found.
Imagick पथ पेलोड ट्रिगर होने के बाद PHP वर्कर को क्रैश कर सकता है। Vulhub लैब में यह अभी भी सामान्य हो सकता है यदि क्रैश से पहले webshell.php लिखा जाता है।
दोनों स्क्रिप्ट फ़ाइल के शीर्ष पर लक्ष्य URL परिभाषित करती हैं:
URL = "http://localhost:8088"
यदि भेद्य लैब किसी अन्य पते पर उजागर होती है तो इस मान को बदलें।
Imagick_PoC.py उत्पन्न फ़ाइल की जाँच करता है:
OUTPUT_FILE = "/webshell.php"
पुष्टि करें कि कंटेनर चल रहे हैं:
cd Vulnhub_env
docker compose ps
पुष्टि करें कि साइट http://localhost:8088 पर पहुंच योग्य है।
जाँचें कि कोई अन्य सेवा पोर्ट 8088 का उपयोग तो नहीं कर रही है।
यदि आपने उजागर पोर्ट बदला है, तो Python स्क्रिप्ट में URL मान अपडेट करें।
LFI_to_RCE.py में PHP Version नहीं दिखताstorage/logs/ के अंतर्गत लॉग लिख रहा है।LFI_to_RCE.py में उत्पन्न web-YYYY-MM-DD.log पथ अपडेट करें।Imagick_PoC.py /webshell.php के लिए 404 लौटाता है/tmp/php* के अंतर्गत बनाई गई हैं।लैब बंद करें:
cd Vulnhub_env
docker compose down
एक साफ पुनर्स्थापना के लिए कंटेनर और डेटाबेस वॉल्यूम हटाएँ:
docker compose down -v
Craft CMS को 4.4.15 या बाद के संस्करण में अपग्रेड करें।
यदि शोषण का संदेह हो, तो Craft CMS सुरक्षा कुंजी, डेटाबेस क्रेडेंशियल्स, एप्लिकेशन रहस्य, और वातावरण में संग्रहीत कोई भी क्रेडेंशियल्स बदलें।