HackMyVM - Pwned
20 julio 2021
Esta máquina se encuentra en la plataforma HackMyVM y ha sido creada por el usuario annlynn.
La temática es que esta máquina ya ha sido hackeada por un hacker troll y debemos seguir sus pasos. La resolución cuenta con una enumeración con fuzzing web, obtención de claves mediante ftp, pivoting de usuarios y una escalada de privilegios sencilla.
# | Dificultad |
---|---|
Acceso | Fácil |
Escalada de privilegios | Fácil |
Enumeración
Como todas las máquinas de esta plataforma es necesario conocer la dirección IP de la máquina. Para ello utilizaré la herramienta ping-sweep con el modo de descubrimiento de sistema operativo para poder avanzar más rápido en la enumeración. El motivo de utilizar esta herramienta y no otra basada en el protocoo ARP se debe a que despliego las máquinas en una red privada que utilizo como laboratorio y distinta a la red local, por lo que un descubrimiento mediante ARP no detectará las máquinas.
Más adelante, será necesario cambiar de red la máquina del atacante para poder realizar una reverse shell ya que en modo NAT no es posible.
La herramienta ha detectado 3 IP:
- 10.10.10.1 - linux → Gateway
- 10.10.10.100 - linux → Máquina objetivo
- 10.10.10.101 - windows → Sistema anfitrión
Una vez identificada la máquina objetivo se comienza con el escaneo de puertos. Como es habitual para el escaneo se utiliza nmap y se divide en dos fases: la primera de un escaneo rápido de los 65535 puertos para detectar aquellos abiertos y la segunda para realizar una enumeración más exahustiva usando scripts básicos de los puertos abiertos.
Una vez obtenidos los puertos abiertos se realiza el segundo escaneo más específico.
NMAP indica que el puerto 21 no tiene habilitado el login anónimo por lo que no será el primer vector de ataque. Se comenzará con el servicio web como es habitual con una enumeración rápida con la herramienta whatweb.
Whatweb informa que el título de la página es "Pwned.....!!", algo extraño en una página web normal pero no en un CTF. Visualizando el contenido se encuentra lo siguiente.
A continuación, se busca el archivo robots.txt para saber si existiera algún recurso oculto.
Se encuentra el recurso /nothing que indexca a otro recurso que no aporta información alguna.
Como no nos damos por satisfechos se realiza un fuzzing del sitio web utilizando de diccionario el directory-medium de dirbuster con más de 200 000 recursos distintos.
La paciencia tiene su recompensa, se ha encontrado el recurso hidden_text. Un recurso que indexa al archivo secret.dic.
Este archivo se descarga con la herramienta wget.
A continuación vuelve a realizarse fuzzing utilizando el diccionario descargado.
Se encuentra el recurso pwned.vuln, lo que parece ser un formulario de acceso.
Observando el código fuente de la página se encuentra un código PHP comentado con unas credenciales.
Se utilizan las credenciales para acceder al servicio FTP. Por comodidad se utiliza filezilla para tener una GUI del FTP.
Navegando por el ftp se encuentran un par de archivos que rápidamente son descargados.
Ganar acceso
El archivo note.txt contiene una nota del hacker que nos informa que ariana no estará contenta con esta nota, por lo que ya tenemos un usuario potencial para la clave privada id_rsa.
Sin embargo, al intentar la conexión con la clave privada se nos indica que la clave no tiene un formato correcto. Analizando el contenido de la clave se percata de que la primera línea comienza con 4 guiones en lugar de con 5. Se corrige el error y se vuelve a intentar.
Una vez se ha accedido a la máquina con el usuario ariana se inicia la enumeración del sistema.
Primero se consultan los usuarios del sistema. Se encuentra a selena que será el primer objetivo de la escalada de privilegios.
Escalada de privilegios
Comprobando los privilegios de ariana destaca el permiso de ejecutar el binario /home/messenger como selena.
Observando el contenido del binario se visualiza un potencial vector de ataque ya que los inputs del binarios son directamente ejecutados.
Se ejecuta el binario y se obtiene una bash como selena.
Sin embargo, se obtiene una terminal muy desagradable. Por lo que se realiza una reverse shell como usuario selena hacia la máquina atacante.
En la máquina objetivo.
En la máquina atacante.
Ahora se realiza un tratamiento de la tty como ya se vió en anteriores resoluciones para obtener una terminal más útil y vistosa.
Para encontrar los posibles vectores de escalada de privilegios se utiliza la herramienta linpeas. Para ello será necesario enviar el fichero linpeas a la máquina objetivo.
En la máquina objetivo.
En la máquina atacante.
Una vez que se tiene linpeas en la máquina objetivo se ejecuta y se desvela rápidamente el vector para la escalada. Selena se encuentra en el grupo de docker.
Se consulta en gtobins la escalada cuando se está en el grupo docker.
Una vez conocida la técnica se lleva a cabo y se obtiene el root.
A continuación se consultan todas las flags y se concluye la resolución de la máquina.
Flag de ariana: