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-2023-27163-lab — Laboratorio basado en Docker que reproduce la SSRF CVE-2023-27163 en Request-Baskets, con verificación de explotación, script de detección y remediación mediante aislamiento de red. | Kitploit
Herramientas/GitHubGitHub/amulyakaushik/cve-2023-27163-lab
Herramientas DefensivasSeguridad de ContenedoresAnálisis de VulnerabilidadesExplotaciónSeguridad WebSeguridad de RedesPruebas de PenetraciónAprendizaje y EducaciónLabs y Práctica

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 →
GitHubamulyakaushik/cve-2023-27163-lab

CVE-2023-27163-lab

Laboratorio basado en Docker que reproduce la SSRF CVE-2023-27163 en Request-Baskets, con verificación de explotación, script de detección y remediación mediante aislamiento de red.

Ver Repositorio
3hace 1 díaAún no revisado
Compartir

CVE-2023-27163 — Laboratorio de SSRF en Request-Baskets

Proyecto: Laboratorio de Investigación y Reproducción de Vulnerabilidades — CVE-2023-27163
Autor: Amulya Kaushik
Rol: Candidato a Prácticas en I+D de Ciberseguridad y Desarrollo de Contenido para Laboratorios

Server-Side Request Forgery en Request-Baskets ≤ 1.2.1
Un laboratorio de investigación local autocontenido para reproducir, detectar y remediar CVE-2023-27163 con una arquitectura de defensa en profundidad.


Perfil del CVE

CampoValor
ID CVECVE-2023-27163
CWECWE-918 — Server-Side Request Forgery (SSRF)
Producto AfectadoRequest-Baskets
Versiones Afectadas≤ 1.2.1
Versión Corregida1.2.2 (Código fuente upstream) / Aislamiento de Red con Defensa en Profundidad
Puntuación CVSS v3.16.5 (Media)
Vector CVSSAV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
Complejidad del AtaqueBaja — una única llamada a la API sin autenticación

Limitaciones del Upstream y Estrategia de Remediación

Nota sobre Limitaciones del Upstream y Remediación:
Si bien CVE-2023-27163 rastrea la validación arbitraria de URL de reenvío, las compilaciones públicas de contenedores de darklynx/request-baskets no aplican filtrado de loopback o subredes privadas de forma predeterminada. Siguiendo las mejores prácticas reales de DevSecOps, nuestro laboratorio demuestra la remediación mediante Aislamiento de Red de Contenedores con Defensa en Profundidad. Al aislar los backends internos sensibles en una red Docker solo interna (secure-internal-net con internal: true), se corta la ruta de retransmisión, mitigando la explotabilidad de la vulnerabilidad SSRF incluso cuando se ejecutan reenviadores de webhooks no confiables.


Descripción General de la Arquitectura del Laboratorio

Este laboratorio proporciona dos topologías discretas de Docker Compose:

  1. Configuración Vulnerable (docker-compose.yml): Request-Baskets y un servicio interno de eco de secretos comparten la red bridge lab-net. Request-Baskets está mapeado al puerto del host 55556 (mapeado desde el puerto del contenedor 55555).
  2. Configuración Remediada (docker-compose.patched.yml): Request-Baskets está conectado exclusivamente a public-net, mientras que el servicio de eco interno está conectado a secure-internal-net (internal: true).

Arquitectura Vulnerable (docker-compose.yml)

root@kitploit:~
┌─────────────────────────────────────────────────────────┐
│                    Docker: lab-net                       │
│                                                         │
│  ┌─────────────────────┐    ┌────────────────────────┐  │
│  │  request-baskets     │───▶│  internal-service      │  │
│  │  (v1.2.1)           │    │  (http-echo:5678)      │  │
│  │  Port 55556 ◀──HOST │    │  NOT exposed to host   │  │
│  └─────────────────────┘    └────────────────────────┘  │
└─────────────────────────────────────────────────────────┘
         ▲
         │  HTTP (port 55556)
         │
    ┌────┴─────┐
    │ Attacker │
    └──────────┘

Arquitectura Remediada (docker-compose.patched.yml)

root@kitploit:~
┌─────────────────────────┐        ┌─────────────────────────┐
│       public-net        │        │   secure-internal-net   │
│                         │        │     (internal: true)    │
│  ┌───────────────────┐  │        │  ┌───────────────────┐  │
│  │  request-baskets   │  │   ✕    │  │ internal-service  │  │
│  │  Port 55556◀─HOST │  │ ──/──▶ │  │ (http-echo:5678) │  │
│  └───────────────────┘  │        │  └───────────────────┘  │
└─────────────────────────┘        └─────────────────────────┘

Requisitos Previos

RequisitoVersión MínimaNotas
Docker Engine20.10+Entorno de ejecución de virtualización de contenedores
Docker Composev2.0+Orquestación multi-contenedor
Python3.8+Herramientas de verificación y detección por CLI

Configurar el entorno virtual de Python y las dependencias:

root@kitploit:~
python3 -m venv .venv
source .venv/bin/activate
pip install requests fpdf2

Instrucciones Paso a Paso

1. Iniciar el Entorno de Laboratorio Vulnerable

Iniciar el entorno vulnerable (Request-Baskets v1.2.1 accesible en http://localhost:55556):

root@kitploit:~
docker compose up -d

Verificar que ambos contenedores estén en ejecución:

root@kitploit:~
docker compose ps

Salida esperada:

root@kitploit:~
NAME                         IMAGE                             COMMAND                  SERVICE            STATUS   PORTS
isolated-internal-service    hashicorp/http-echo:latest        "/http-echo -text=CO…"   internal-service   Up       5678/tcp
vulnerable-request-baskets   darklynx/request-baskets:v1.2.1   "/bin/sh -c /bin/ent…"   request-baskets    Up       0.0.0.0:55556->55555/tcp

Confirmar que el servicio interno no es accesible directamente desde el host:

root@kitploit:~
curl http://localhost:5678 2>&1 || echo "Connection refused — internal service isolated as expected"

2. Ejecutar la Reproducción de la Vulnerabilidad (Exfiltración de Datos)

Ejecutar el script automatizado de verificación de SSRF:

root@kitploit:~
python3 scripts/verify_vulnerability.py

Qué ocurre:

  1. La herramienta llama a /api/baskets/ssrf-verification-basket estableciendo forward_url: "http://internal-service:5678" y proxy_response: true.
  2. Envía un HTTP GET a la URL del basket.
  3. Captura el payload retransmitido CONFIDENTIAL_DATA{INTERNAL_SSRF_DEMONSTRATION_SUCCESS} y muestra RESULT: VULNERABLE.
  4. Elimina el basket de prueba.

3. Ejecutar la Herramienta de Detección Defensiva

Ejecutar la sonda de auditoría no destructiva:

root@kitploit:~
python3 scripts/detect.py

Qué ocurre:

  1. Fase 1: Coincide con las firmas web de Request-Baskets.
  2. Fase 2: Sondea si se acepta el reenvío a loopback (http://127.0.0.1:80).
  3. Fase 3: Informa AUDIT RESULT: VULNERABLE tras la aceptación (HTTP 201) y limpia el basket de sondeo.

4. Cambiar al Laboratorio Remediado y Verificar la Defensa

Cambiar a la topología remediada segmentada:

root@kitploit:~
docker compose down
docker compose -f docker-compose.patched.yml up -d
python3 scripts/verify_vulnerability.py

Salida esperada:

root@kitploit:~
==============================================================
[✓] REMEDIATION VERIFIED: TARGET SECURED
    The Request-Baskets instance failed to reach the internal
    isolated service (HTTP 502 / Host Unreachable).
    Network segmentation successfully prevented SSRF data exfiltration.
==============================================================

Desmontar el entorno cuando haya terminado:

root@kitploit:~
docker compose -f docker-compose.patched.yml down

Evidencia y Verificación (Entregable 3)

El portafolio completo de evidencia visual para el Entregable 3 se mantiene en el directorio evidence/:

ArtefactoPropósitoEnlace al ArchivoDescripción
Captura 1Entorno en Ejecución01_lab_running.pngMuestra vulnerable-request-baskets (puerto 55556) e isolated-internal-service ejecutándose simultáneamente en lab-net.
Captura 2Explotación SSRF02_reproduction_ssrf.pngMuestra el flag exfiltrado CONFIDENTIAL_DATA{...} y el estado VULNERABLE.
Captura 3Herramienta de Detección Defensiva03_detection_tool_run.pngMuestra la verificación de firmas en dos fases y la auditoría de loopback marcando VULNERABLE.
Captura 4Verificación de Remediación04_remediation_verified.pngDemuestra el fallo de retransmisión (HTTP 502 / Host Unreachable) bajo la defensa de red segmentada.
Captura 5Configuración de la Interfaz Web05_web_ui_ssrf.png(Bonus) Captura del navegador de la configuración de la interfaz de Request-Baskets con Proxy Response configurado.

Los recorridos detallados, comandos y transcripciones de consola para cada captura están documentados en evidence/README.md.

Ejecutor de Captura Interactivo

Para capturar todas las capturas de terminal secuencialmente sin complicaciones de configuración manual, ejecute:

root@kitploit:~
./scripts/capture_evidence_flow.sh

Compilar el PDF del Blog Técnico

Compilar el informe técnico académico en PDF:

root@kitploit:~
python3 docs/generate_blog_pdf.py

Salida generada: docs/CVE-2023-27163-Technical-Blog.pdf


Estructura del Proyecto

root@kitploit:~
cve-2023-27163-lab/
├── .gitignore                      # Git artifact exclusions (.venv, cache, OS files)
├── docker-compose.yml              # Vulnerable environment (shared lab-net, port 55556)
├── docker-compose.patched.yml      # Remediated environment (disjoint network isolation)
├── README.md                       # Complete documentation, attribution & guide
├── scripts/
│   ├── capture_evidence_flow.sh    # Interactive runner for capturing screenshots
│   ├── verify_vulnerability.py     # SSRF exploitation & remediation verification CLI
│   └── detect.py                   # Defensive audit and detection tool
├── evidence/
│   └── README.md                   # Formal screenshot evidence walkthrough
└── docs/
    ├── technical_blog.md           # Academic technical write-up (800–1,200 words)
    ├── generate_blog_pdf.py        # Markdown → PDF converter
    └── CVE-2023-27163-Technical-Blog.pdf # Compiled academic report PDF

Referencias y Créditos

Esta investigación y desarrollo del laboratorio se basa en estándares de seguridad abiertos, avisos de proveedores y bases de datos de vulnerabilidades:

  1. NIST National Vulnerability Database (NVD):
    CVE-2023-27163 Detail — Puntuación Base CVSS v3.1 6.5 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N).
  2. MITRE Common Weakness Enumeration (CWE):
    CWE-918: Server-Side Request Forgery (SSRF).
  3. Repositorio y Código Fuente del Proyecto Upstream:
    darklynx/request-baskets (GitHub) — Servicio web Request Baskets.
  4. OWASP Foundation:
    Server-Side Request Forgery Prevention Cheat Sheet.

Descargo de Responsabilidad

Este laboratorio está destinado únicamente a fines educativos y de investigación de seguridad autorizada. No utilice estas herramientas contra sistemas que no posea o para los que no tenga permiso explícito de prueba.

Descargar herramienta