Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
cve-2026-100671-poc — CVE-2026-100671 के लिए केवल-स्थानीय प्रूफ-ऑफ-कॉन्सेप्ट सत्यापनकर्ता, जो लूपबैक लक्ष्यों के विरुद्ध Grav Twig पेज-कैश सत्र-कुकी प्रकटीकरण और पुनःप्ले को पुनरुत्पादित करता है। | Kitploit
उपकरण/GitHubGitHub/canhieu/cve-2026-100671-poc
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणसुरक्षा वर्चुअलाइजेशनवेब सुरक्षापेनिट्रेशन टेस्टिंग
GitHubcanhieu/cve-2026-100671-poc

cve-2026-100671-poc

CVE-2026-100671 के लिए केवल-स्थानीय प्रूफ-ऑफ-कॉन्सेप्ट सत्यापनकर्ता, जो लूपबैक लक्ष्यों के विरुद्ध Grav Twig पेज-कैश सत्र-कुकी प्रकटीकरण और पुनःप्ले को पुनरुत्पादित करता है।

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

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

सभी देखें →

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

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

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

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

CVE-2026-100671 — Grav Twig सत्र-कुकी प्रकटीकरण

Grav 2.0.25 में ठीक किए गए Grav content-Twig/page-cache सत्र अधिग्रहण के लिए न्यूनतम, लक्ष्य-सीमित आक्रामक-पक्ष सत्यापनकर्ता।

सलाहकार सूचनाएँ:

  • CVE-2026-100671
  • GHSA-pp89-h475-7gj6
  • Grav 2.0.25 रिलीज़

महत्वपूर्ण: कोई व्यवस्थापक क्रेडेंशियल नहीं

आक्रामक के पास व्यवस्थापक उपयोगकर्ता नाम या पासवर्ड नहीं है।

वास्तविक श्रृंखला यह है:

  1. एक निम्न-विशेषाधिकार वाला पेज लेखक Twig पेलोड प्रकाशित करता है।
  2. एक व्यवस्थापक एक बार सार्वजनिक पेज पर जाता है।
  3. आक्रामक उसी पेज का अनाम रूप से अनुरोध करता है।
  4. साझा पेज कैश व्यवस्थापक सत्र कुकी लौटाता है।
  5. आक्रामक उस कुकी को API के विरुद्ध पुनः प्रस्तुत करता है।

व्यवस्थापक क्रिया इस स्क्रिप्ट के बाहर होती है। exploit.py कोई GRAV_ADMIN_USERNAME या GRAV_ADMIN_PASSWORD सेटिंग स्वीकार नहीं करता।

दायरा

लूपबैक डिफ़ॉल्ट सुरक्षा सीमा है। गैर-लूपबैक लक्ष्य के लिए स्पष्ट --allow-remote फ़्लैग आवश्यक है, जो किसी अधिकृत HTB, TryHackMe, या स्वयं के लैब मशीन के लिए है।

क्लाइंट रीडायरेक्ट का पालन केवल तब करता है जब वे चयनित लक्ष्य ओरिजिन पर ही रहें, Python मानक-लाइब्रेरी HTTP क्लाइंट का उपयोग करता है, अनुरोध टाइमआउट लागू करता है, और कैप्चर की गई कुकी केवल तब प्रिंट करता है जब --show-cookie स्पष्ट रूप से दिया गया हो।

केवल उस Grav इंस्टेंस के विरुद्ध उपयोग करें जो आपका हो या जिसे परीक्षण करने के लिए आपको स्पष्ट रूप से अधिकृत किया गया हो। स्क्रिप्ट एक सार्वजनिक प्रमाण पेज बनाती है। यदि लक्ष्य रन के बीच सामग्री रखता है तो परीक्षण के बाद उस पेज को हटा दें।

भेद्यता श्रृंखला

  1. एक निम्न-विशेषाधिकार वाला पेज लेखक सैंडबॉक्स्ड Twig वाली सामग्री प्रकाशित करता है।
  2. get_cookie() सर्वर-साइड पर आने वाले व्यवस्थापक की सत्र कुकी पढ़ता है।
  3. Grav पोस्ट-Twig पेज आउटपुट को सत्र पहचान के बिना कैश में संग्रहीत करता है।
  4. एक अप्रमाणित अनुरोध कैश की गई कुकी का नाम और मान प्राप्त करता है।
  5. उस मान को लक्ष्य API के विरुद्ध पुनः प्रस्तुत करने पर व्यवस्थापक के रूप में प्रमाणीकरण होता है।

पेज-लेखन खाते को केवल निम्न-विशेषाधिकार लेखन पथ की आवश्यकता होती है। इसे api.pages.read, admin.*, सुपर-एडमिन पहुँच, या व्यवस्थापक क्रेडेंशियल की आवश्यकता नहीं है।

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

  • Grav 2.0.19 से 2.0.24 तक: शिप किए गए डिफ़ॉल्ट content-Twig कॉन्फ़िगरेशन के साथ भेद्य।
  • Grav 2.0.0 से 2.0.18 तक, और 1.7.x: केवल तब प्रभावित जब content Twig स्पष्ट रूप से सक्षम किया गया हो।
  • Grav 2.0.25: ठीक किया गया।

लैब आवश्यकताएँ

Grav लक्ष्य को इनके साथ चलाएँ:

  • Grav API प्लगइन सक्षम;
  • एक निम्न-विशेषाधिकार लेखक खाता जो API टोकन प्राप्त कर सके और पेज बना सके;
  • पीड़ित क्रिया के लिए एक व्यवस्थापक खाता;
  • लक्ष्य पेज रूट सार्वजनिक रूप से पठनीय।

यह दो-फ़ाइल रिपॉज़िटरी Grav, PHP, प्लगइन, खाते, या व्यवस्थापक बॉट प्रदान नहीं करती। पीड़ित का विज़िट एक बाहरी क्रिया ही रहता है।

एक-बार इंटरैक्टिव रन

केवल निम्न-विशेषाधिकार लेखक क्रेडेंशियल या टोकन सेट करें:

export GRAV_TARGET=http://127.0.0.1:8080
export GRAV_WRITER_USERNAME=low
export GRAV_WRITER_PASSWORD='local-writer-password'

python3 exploit.py

स्क्रिप्ट एक यादृच्छिक सार्वजनिक रूट बनाती है, उसका URL प्रिंट करती है, और प्रतीक्षा करती है। व्यवस्थापक से एक बार उस URL पर जाने को कहें, फिर Enter दबाएँ। स्क्रिप्ट अनाम संग्रह और स्थानीय API रीप्ले करती है।

इसके बजाय किसी मौजूदा writer API टोकन का उपयोग करें:

export GRAV_WRITER_TOKEN='local-low-privilege-token'
python3 exploit.py

दो-चरणीय रन

गैर-इंटरैक्टिव टर्मिनल या अलग विक्टिम ब्राउज़र के लिए उपयोगी।

पेज तैयार करें:

python3 exploit.py --prepare-only

किसी व्यवस्थापक से मुद्रित URL पर जाने के लिए कहें। फिर मुद्रित रूट का उपयोग करके एकत्र करें और पुनः चलाएँ; इस दूसरे चरण के लिए किसी क्रेडेंशियल की आवश्यकता नहीं है:

python3 exploit.py --collect-only --route /cookie-proof-XXXXXXXX --show-cookie

--show-cookie स्थानीय/अधिकृत लैब डिबगिंग के लिए कैप्चर किया गया सत्र कुकी प्रिंट करता है:

captured_cookie=grav-site-<hash>=<session-value>

यह मान एक लाइव क्रेडेंशियल है। इसे GitHub, issues, चैट, स्क्रीनशॉट या लॉग में न चिपकाएँ। --show-cookie के बिना, स्क्रिप्ट replay स्थिति के माध्यम से वही प्रभाव सिद्ध करती है और मान को आउटपुट से बाहर रखती है।

यदि संग्रह व्यवस्थापक के दौरे से पहले चलता है, तो हमलावर का अनुरोध कैश को खाली मान से भर सकता है। एक नया यादृच्छिक रूट तैयार करें और दोहराएँ।

रिपॉज़िटरी में मशीन IP को हार्डकोड न करें। रनटाइम पर वर्तमान लक्ष्य प्रदान करें:

export GRAV_WRITER_USERNAME=low
export GRAV_WRITER_PASSWORD='writer-password'

python3 exploit.py \
  --target http://10.10.10.25:8080 \
  --allow-remote \
  --prepare-only

प्रिंट किए गए URL पर व्यवस्थापक/बॉट के जाने के बाद, एकत्र करें और पुनः चलाएँ:

python3 exploit.py \
  --target http://10.10.10.25:8080 \
  --allow-remote \
  --collect-only \
  --route /cookie-proof-XXXXXXXX \
  --show-cookie

--base-url अभी भी --target के लिए एक संगतता उपनाम बना हुआ है। रिमोट HTTP एक क्लीयरटेक्स्ट चेतावनी प्रिंट करता है; जहाँ मशीन इसका समर्थन करती है वहाँ HTTPS का उपयोग करें।

अपेक्षित भेद्य परिणाम

page_create_status=201
victim_action_url=http://127.0.0.1:8080/cookie-proof-XXXXXXXX
anonymous_page_status=200
cookie_name_disclosed=yes
cached_cookie_visible_to_attacker=yes
captured_cookie=grav-site-<hash>=<session-value>
replayed_cookie_api_status=200
result=VULNERABLE

captured_cookie पंक्ति केवल --show-cookie के साथ दिखाई देती है।

फ़िक्स्ड-संस्करण जाँच

Grav 2.0.25 या उसके बाद के संस्करण के विरुद्ध वही दो-चरणीय प्रवाह चलाएँ, फिर इसके साथ एकत्र करें:

python3 exploit.py --collect-only --route /cookie-proof-XXXXXXXX --expect fixed

अपेक्षित निश्चित व्यवहार: कोई हमलावर-दृश्यमान सत्र मान नहीं और कोई सफल सत्र पुनःप्ले नहीं। एक स्वच्छ निश्चित परिणाम --expect fixed के साथ 0 पर समाप्त होता है।

उपचार

Grav 2.0.25 या बाद के संस्करण में अपग्रेड करें। पुराने परिनियोजन के लिए, सलाहकार इन अस्थायी नियंत्रणों को सूचीबद्ध करता है:

  • security.twig_content.process_enabled: false के साथ सामग्री Twig अक्षम करें; या
  • system.pages.never_cache_twig: true सेट करें;
  • मौजूदा Grav कैश साफ़ करें;
  • व्यवस्थापक सत्रों को रोटेट करें।

HttpOnly, Secure, या SameSite को समाधान न मानें: भेद्य कुकी पढ़ना Twig रेंडरिंग के दौरान सर्वर-साइड होता है।

प्रकटीकरण

canhieu द्वारा रिपोर्ट किया गया। यह रिपॉज़िटरी पहले से सार्वजनिक सलाहकार के लिए एक पुनरुत्पादन सहायता है, न कि कोई रिमोट स्कैनर या क्रेडेंशियल-हार्वेस्टिंग टूल।

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