Hola a todos,
Hoy voy a escribir un poco sobre esta vulnerabilidad que paseando
por el sitio de Corelan encontré, básicamente lo que he hecho es recrear todo
en un laboratorio y ahondar un poco más en los detalles de esta vulnerabilidad.
Primero que nada les hago referencia al post original:
La idea es leerlo y entenderlo, por consiguiente necesitamos
lo siguiente:
- Instalar Zabbix 2.0.8 dentro de un equipo.
- http://www.zabbix.com/es/download.php
- Instalar Mysql, Apache y PHP.
·
Contar con un Kali Linux con sqlmap.
Ahora bien lo que sucede aquí es que por defecto Zabbix
tiene un usuario Guest en la página principal.
Ahora dirigiéndonos Monitoring -> Web, es ahí donde
empieza la fiesta, pero veamos, haciendo un request nos entrega las siguientes
variables.
ddreset y sid, que probando con sqlmap, no son inyectables,
pero que sucede con el post de Corelan, si somos observadores en su post ellos
inyectan a través “applications=1’”,
pero veamos de donde sale esa variable.
Si hacemos un less sobre el script httpmon, veremos lo
siguiente:
Observamos que applications es una varibale supreglobal de
php.
Y aparte de ser global es inyectable, usamos sqlmap de la
siguiente manera
/root/upgrades/sqlmap-dev/sqlmap.py -v 5 -u "http://192.168.127.136/httpmon.php?applications=2" --cookie="zbx_sessionid=a0ac94310dea482dc67fc858e8002fe0; PHPSESSID=g7k2i6dj7b98okhmdg18hajtt4" --level=5 --risk=3 --os=Linux --dbms=Mysql --dbs --users --passwords --tables --save --sql-query='select * from sessions;' --output-dir=./tmp
Ahora bien observando la salida de sqlmap, la tabla que nos
interesa es donde se encuentran las sesiones, ya que estas permanecen activas,
ya teneos el sesión ID, siguiendo el documento de Corelan, vemos que usan burp,
para inyectar los parámetros, de la siguiente manera.
Usando el proxy de Burp, podemos interceptar cada petición y
editarla manual mente, lo que sucede si hacemos esto es que a mano tendremos
que editar cada petición http y si se nos pasa alguna, pues simplemente ya no
funcionara el ataque.
Lo que podemos usar en este caso es una funcionalidad de
burp, para remplazar los headers por algunos otros que queramos, ya sabeos que
los tokens a editar en nuestras peticiones serán.
zbx_sessionid y SID
Configuramos nuestro burp de la siguiente manera para
facilitarnos la vida y no estar copiando y cortando para pegar por cada
request.
En la sección de proxy->options, configuramos Match and
Replace, de la siguiente manera ya sabemos que SID son los 16 últimos caracteres
de la sesión.
Ahora una vez configurado nuestro burp de esta manera, la
sesión será permanente de Admin.
Básicamente es lo que he querido explicar, por qué el post
de Corelan es bastante consiso, pero cuando lo realice en mi pc, tuve algunos
problemas porque tenía que estar re escribiendo manualmente los datos tomados,
una vez que vi que Burp puede hacer esto por ti, decidí explicar cómo hacer con
este ejemplo de Zabbix.
No hay comentarios:
Publicar un comentario