Inicio Resolución de máquina Late - HackTheBox
Post
Cancelar

Resolución de máquina Late - HackTheBox

Introducción

Bienvenidos a mi primer writeup de Hack The Box, para comenzar, agregamos la dirección IP de la máquina en nuestro archivo /etc/hosts con el nombre late.htb para hacerlo más práctico.

Resolución

Para realizar un reconocimiento de puertos y servicios utilizamos la siguiente línea de comandos:

1
sudo nmap -Pn -n -p- --open -sSVC --min-rate 4000 late.htb

Como resultado obtuvimos lo siguiente:

1
2
3
4
5
6
7
8
9
10
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.6p1 Ubuntu 4ubuntu0.6 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 02:5e:29:0e:a3:af:4e:72:9d:a4:fe:0d:cb:5d:83:07 (RSA)
|   256 41:e1:fe:03:a5:c7:97:c4:d5:16:77:f3:41:0c:e9:fb (ECDSA)
|_  256 28:39:46:98:17:1e:46:1a:1e:a1:ab:3b:9a:57:70:48 (ED25519)
80/tcp open  http    nginx 1.14.0 (Ubuntu)
|_http-title: Late - Best online image tools
|_http-server-header: nginx/1.14.0 (Ubuntu)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Cuando visitamos la página en el puerto 80 encontramos un enlace hacia images.late.htb así que añadimos este enlace en el archivo /etc/hosts y cuando recargamos la página nos mostró el siguiente portal.

images.late.htb

Ya que esta aplicación procesa el texto que recibe como imagenes probamos ataques STTI (Server Side Template Injection) con diferentes fuentes, tamaños de letra y estilos. Les recomiendo visitar los siguientes enlaces para conocer más sobre como funciona esta vulnerabilidad.

Primero comprobamos que se trata de un SSTI enviando la siguiente imágen:

7x7

Podemos ver que entre las etiquetas p de la respuesta viene el resultado de la evaluación hecha por python.

7x7=SSTI

Una vez comprobada la injección de plantilla veremos si podemos ejecutar código directamente desde el interprete de python llamando al modulo os, en este caso llamaremos a id para ver el id del usuario actual.

id

La aplicación respondió con el siguiente id, lo cual me hizo suponer que el usuario root es quien está ejecutando el aplicativo:

id=0

Para comprobarlo, ahora ejecutamos whoami esperando el nombre del usuario actual:

whoami

Sin embargo, como respuesta obtuvimos una cadena vacía:

Cadena vacía

Pero no hay que preocuparnos ya que podemos utilizar el comando who para ver los usuarios que tienen una sesión iniciada en la máquina.

who

Una vez que recibimos la respueta de la aplicación podemos ver algo como lo siguiente.

svc_acc

Recordando el escaneo de nmap pudimos ver el puerto 22 abierto y ya que tenemos el nombre del usuario buscamos su id_rsa en su carpeta personal con la siguiente imagen:

cat id_rsa

En la respuesta podemos ver la id_rsa completa del usuario por lo cual ahora podemos conectarnos por ssh.

id_rsa

Recordemos que debemos cambiar los permisos con chmod 400 id_rsa ya que de lo contrario ssh nos dará un error y no nos dejará conectarnos.

chmod

Bandera user.txt

Ya que nos conectamos a la máquina listamos el directorio actual y podemos ver la bandera user.txt.

ssh

Bandera root.txt

Para conseguir la bandera del usuario root utilizamos linpeas.sh para enumerar el sistema y encontrar un vector para escalar privilegios. Los resultados de linpeas muestran el script /usr/local/sbin/ssh-alert.sh, al revisar los permisos podemos ver que somos el propietario y tenemos permisos de lectura, escritura y ejecución, además, al hacer un cat al archivo vemos que este script envía un correo de alerta al usuario root@late.htb.

ssh-alert.sh

Despues, con pspy podemos ver que este script lo está ejecutando el usuario root cuando se hace un login por ssh, además, cuando intentamos editar este script nos apareció un error lo cual es raro ya que somos los propietarios de este scriot además de que tenemos los permisos para editarlo, pero al listar los atributos del archivo con lsattr podemos ver que está activo el atributo a (append), lo cual solo nos permitirá agregar contenido más no modificarlo, sabiendo esto, ejecutamos la siguiente línea de comandos:

1
echo -e "cp /root/root.txt /home/svc_acc/root.txt\nchown svc_acc /home/svc_acc/root.txt" | tee -a /usr/local/sbin/ssh-alert.sh

Ya que el script es ejecutado por el usuario root, con estas instrucciones estamos copiando el archivo root.txt hacía nuestro directorio personal y poniendonos como propietarios a nosotros.

En este caso la bandera root en HTB siempre se encuentra en ese directorio pero por ejemplo pudimos cambiar los permisos de la /bin/bash, copiar la id_rsa del usuario root si es que la hubiera, lanzar una reverse shell, etc.

ssh-alert.sh

Para que se ejecute el script basta con salir de ssh, volver a iniciar sesión y ahí tendremos nuestro archivo root.txt

Conclusiones

Esta máquina me gustó mucho ya que es la primera en HTB que soluciono, además de que aprendí más sobre python y SSTI en Flask y de igual manera sobre los atributos en los archivos de linux. Espero que les haya gustado este writeup, nos vemos en el siguiente post ;).

This post is licensed under CC BY 4.0 by the author.