linuxPinguPing

Enumeration

Vamos a empezar con un escaneo nmap:

┌──(pylon㉿kali)-[~/…/pylon/THL/Pinguping/nmap]
└─$ nmap -p- --open -sS --min-rate=5000 -n -Pn -vvv 192.168.44.134
Starting Nmap 7.95 ( https://nmap.org ) at 2025-07-20 23:08 CEST
Initiating ARP Ping Scan at 23:08
Scanning 192.168.44.134 [1 port]
Completed ARP Ping Scan at 23:08, 0.06s elapsed (1 total hosts)
Initiating SYN Stealth Scan at 23:08
Scanning 192.168.44.134 [65535 ports]
Discovered open port 80/tcp on 192.168.44.134
Discovered open port 22/tcp on 192.168.44.134
Discovered open port 5000/tcp on 192.168.44.134
Completed SYN Stealth Scan at 23:08, 0.77s elapsed (65535 total ports)
Nmap scan report for 192.168.44.134
Host is up, received arp-response (0.00064s latency).
Scanned at 2025-07-20 23:08:38 CEST for 1s
Not shown: 65532 closed tcp ports (reset)
PORT     STATE SERVICE REASON
22/tcp   open  ssh     syn-ack ttl 64
80/tcp   open  http    syn-ack ttl 64
5000/tcp open  upnp    syn-ack ttl 64
MAC Address: 00:0C:29:AA:98:BA (VMware)

Read data files from: /usr/share/nmap
Nmap done: 1 IP address (1 host up) scanned in 0.96 seconds
           Raw packets sent: 65536 (2.884MB) | Rcvd: 65536 (2.621MB)

Vamos a realizar un segundo escaneo para determinar el servicio y versión misma:

Vamos a ver la aplicación web:

Vemos que es la página predeterminada cuando te instalas Apache2, vamos a realizar fuzzing:

Vemos el directorio web vamos a ver que contiene:

Vemos que nos está indicando de que podría existir una “limpieza del sistema automática”. No vemos nada más relevante, así que vamos a ver que hay en el puerto 5000:

Shell as tester

Vemos que tenemos una aplicación web encargada de enviar un ping a la IP que le indiquemos, vamos a probar a indicarle la 127.0.0.1:

Esto es crítico ya que podríamos abusar de esta función para hacer un SSRF y encontrar puertos locales en la máquina. También una posibilidad es un Command Injection, ya que puede estar empleando el propio ping del sistema, cuya salida ya lo delata. Vamos poner lo siguiente:

Vemos que es vulnerable a un Command Injection, vamos a enviarnos una reverse shell:

Me pondré en escucha:

Vamos a enviarnos una reverse shell:

Ya tenemos acceso a la máquina!! Vamos a hacer un ls -la:

Vemos la carpeta .mongodb vamos a acceder a ella:

Vemos otro directorio llamado mongosh vamos a acceder:

Vamos a haceder a mongodb ejecutando mongosh:

Vamos a apuntar a endpoint secretito con use:

Ahora buscaremos por la tabla usuarios con el comando almacenado en el histórico:

Obtuvimos las credenciales de un usuario llamado secretote, vamos a ver si existe en el sistema:

Vemos que existe, vamos a acceder por SSH:

Shell as root

Ahora como usuario secretote vamos a ver si tenemos permisos SUDOERS:

Si buscamos el binario por GTFObinsarrow-up-right nos dan lo siguiente:

Vamos a ejecutarlo:

root! ;)