🟩HTB - Perfection
https://app.hackthebox.com/machines/Perfection
Información General
Nombre de la Máquina: Perfection
IP de la Máquina: 10.129.229.121
Sistema Operativo: Linux
Dificultad: Easy
Fecha de Publicación: 02 Mar 2024
Enumeration
Ping para obtener ruta de retorno
Realizamos un ping a la máquina objetivo para verificar la conectividad y obtener información sobre la ruta utilizando la opción -R
para incluir la ruta de retorno:
El valor de TTL (Time To Live) igual a 63 puede ser indicativo de que el sistema operativo de la máquina objetivo es Linux. El TTL es un valor en el campo de los paquetes IP que indica la duración que un paquete puede estar en una red antes de ser descartado. Linux establece por defecto el valor de TTL de sus paquetes IP en 64, que al pasar por un salto en la red se decrementa a 63.
Escaneo de puertos con Nmap
Luego, realizamos un escaneo de puertos utilizando Nmap para identificar los puertos abiertos en la máquina objetivo. Utilizamos las opciones -p-
para escanear todos los puertos, --open
para mostrar solo los puertos abiertos, -sS
para un escaneo de tipo TCP SYN, --min-rate 5000
para establecer la velocidad mínima de paquetes y -vvv
para un nivel de verbosidad alto. Además, utilizamos -n
para desactivar la resolución de DNS, -Pn
para no realizar el escaneo de ping, y -oG allPorts
para guardar la salida en un archivo con formato Greppable para luego utilizar nuestra función extractPorts:
Escaneo detallado con Nmap
Posteriormente, realizamos un escaneo más detallado de los puertos identificados utilizando la opción -sCV
para detección de versiones y scripts de enumeración de servicios. Específicamente, indicamos los puertos a escanear con -p __PORTS__
(reemplazando __PORTS__
con los puertos identificados en el paso anterior) y guardamos la salida en un archivo de texto con el nombre targeted
:
Modificando /etc/hosts
Para añadir la entrada "10.129.229.121 perfection.htb" al archivo /etc/hosts
, puedes usar el siguiente comando en la terminal:
Inspección con Burpsuite
Al inspeccionar la pagina nos encontramos con una calculadora de notas.
Por lo que primero ingreso valores para entender cómo funciona la herramienta. De paso lo hago con Burpsuite capturando el request y enviandolo al repeater.
También podemos encontrar cierta "seguridad".
Wappalyzer
Entonces lo que quiero hacer es bypassear el filtro el cual arroja "Malicious input blocked". Para ello debo primero saber a qué me estoy enfrentando, para eso existen herramientas como WhatWeb, Wappalyzer.
Server Side Template Injection en Ruby
Así que lo que necesitamos es realizar una SSTI (Server Side Template Injection) en ruby. Que logre bypassear ese filtro. Para ello podemos hacer uso de HackTricks: https://book.hacktricks.xyz/pentesting-web/ssti-server-side-template-injection#erb-ruby
ERB (Ruby)
{{7*7}} = {{7*7}}
${7*7} = ${7*7}
<%= 7*7 %> = 49
<%= foobar %> = Error
Lo importante es andar jugando con el url enconde para que esta funcione, aquí podemos ver como nos retorna el valor 49. Esto quiere decir que es vulnerable.
Cogemos estabilidad en la shell:
Y buscamos informacion interesante (.txt, .db, .sql, .dump).
Identificamos el hash con hash-identifier
Entonces utilzo john y no hay buenos resultados.
Entonces subo LinEnum.sh a la máquina para entender un poco más de ella y Voilà.
Quiere decir que nuestro usuario Susan tiene privilegios root, quiere decir que si logramos descifrar la clave ya estaríamos listos. También encuentro un archivo llamado "susan" en /var/mail/. El cual describe como está compuesta la contraseña:
Quiere decir que la clave sería algo como: susan_nasus_1234567890. Así que lo que se me ocurre es preguntarle a chatGPT:
Y qué creen, su respuesta fue de mucha ayuda:
En mi caso puede tardar hasta 3 horas. Así que a esperar el resultado. Luego accedemos como root y obtenemos la segunda flag.
Última actualización