
Laboratorio vulnerable basado en Docker e informe detallado de PoC para la inyección SQL CVE-2023-25157/25158 en GeoServer y GeoTools, con 4 vectores de ataque verificados y análisis.
Entorno de práctica (Laboratorio Vulnerable) e informe detallado de análisis de explotación de la vulnerabilidad SQL Injection (Error-based) en GeoServer (CVE-2023-25157) y la biblioteca GeoTools (CVE-2023-25158).
Consulte el documento de análisis completo con imágenes de PoC que ilustran cada capa en el informe oficial:
(El informe incluye: Principio del error en la capa CQL Parser & SQL Translator, explicación del formato OGC XML Filter, análisis detallado de 4 vectores de ataque, payloads, consultas SQL reales en la base de datos y recomendaciones de mitigación).
| Atributo | Detalle |
|---|---|
| CVE ID | CVE-2023-25157 (GeoServer) & CVE-2023-25158 (GeoTools) |
| Tipo de vulnerabilidad | Error-based SQL Injection |
| Gravedad | Critical — CVSS v3.1: 9.8 |
| Productos afectados | GeoServer < 2.23.1, < 2.22.3, < 2.21.4 / GeoTools < 29.2, < 28.4, < 27.5 |
| Protocolo de explotación | OGC Web Feature Service (WFS) v1.0.0 / v2.0.0 |
| Requisito de autenticación | No requerido (cuando el servicio WFS configura AccessConstraints: NONE) |
En este laboratorio, se han verificado y analizado en detalle 4 vectores de ataque reales en REPORT.md:
strStartsWith): Explotación a través de la función de verificación de prefijo de cadena en CQL_FILTER (HTTP GET).strEndsWith): Explotación a través de la función de verificación de sufijo de cadena en CQL_FILTER (HTTP GET).PropertyIsLike): Explotación a través de la etiqueta de filtro OGC XML estándar manipulando el carácter de escape escape (HTTP POST) — Vector más peligroso que funciona en todas las configuraciones predeterminadas.FeatureId): Explotación a través del parámetro de filtro por clave primaria de tipo String cuando preparedStatements = false.En el directorio raíz del proyecto, abra una Terminal y ejecute el comando:
docker compose up -d
El sistema iniciará 2 contenedores:
vulhub con las tablas example y example_str).Verifique los logs de GeoServer para asegurarse de que el servicio se haya iniciado por completo:
docker compose logs -f geoserver
Cuando aparezca el mensaje CONFIGURATION COMPLETE, puede acceder a GeoServer en:
http://localhost:8080/geoserver/web/admin / geoserverPara detener los contenedores y liberar recursos:
# Detener el laboratorio (conservar datos de la base de datos)
docker compose down
# Detener el laboratorio y eliminar todos los datos del volumen
docker compose down -v
├── REPORT.md # Informe de análisis técnico y PoC detallado
├── docker-compose.yml # Configuración de inicialización del entorno de laboratorio GeoServer + PostgreSQL
├── init.sql # Script de inicialización de base de datos y datos de muestra para el laboratorio
├── startup.sh # Script de configuración automática de GeoServer al iniciar el contenedor
└── img/ # Directorio que contiene imágenes de evidencia PoC