This page looks best with JavaScript enabled

Hack The Box - Help

 •  ✍️ sckull

Encontramos HelpDeskZ y una vulnerabilidad la cual permite adivinar el nombre de un fichero subido lo que nos dio acceso a la maquina. Finalmente explotamos una vulnerabilidad en el Kernel de Linux para escalar privilegios.

Nombre Help box_img_maker
OS

Linux

Puntos 20
Dificultad Facil
IP 10.10.10.121
Maker

cymtrick

Matrix
{
   "type":"radar",
   "data":{
      "labels":["Enumeration","Real-Life","CVE","Custom Explotation","CTF-Like"],
      "datasets":[
         {
            "label":"User Rate",  "data":[6.1, 7.1, 7.7, 2.3, 2.9],
            "backgroundColor":"rgba(75, 162, 189,0.5)",
            "borderColor":"#4ba2bd"
         },
         { 
            "label":"Maker Rate",
            "data":[7, 8, 8, 2, 2],
            "backgroundColor":"rgba(154, 204, 20,0.5)",
            "borderColor":"#9acc14"
         }
      ]
   },
    "options": {"scale": {"ticks": {"backdropColor":"rgba(0,0,0,0)"},
            "angleLines":{"color":"rgba(255, 255, 255,0.6)"},
            "gridLines":{"color":"rgba(255, 255, 255,0.6)"}
        }
    }
}

NMAP

Escaneo de puertos con nmap.

 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
Nmap 7.70 scan initiated Sat Jan 19 23:53:49 2019 as: nmap -sV -A -sC -o nmap.tcp 10.10.10.121
Nmap scan report for 10.10.10.121
Host is up (0.20s latency).
Not shown: 997 closed ports
PORT     STATE SERVICE VERSION
22/tcp   open  ssh     OpenSSH 7.2p2 Ubuntu 4ubuntu2.6 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   256 d5:b0:10:50:74:86:a3:9f:c5:53:6f:3b:4a:24:61:19 (ECDSA)
|_  256 e2:1b:88:d3:76:21:d4:1e:38:15:4a:81:11:b7:99:07 (ED25519)
80/tcp   open  http    Apache httpd 2.4.18 ((Ubuntu))
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
3000/tcp open  http    Node.js Express framework
|_http-title: Site doesn't have a title (application/json; charset=utf-8).
No exact OS matches for host (If you know what OS is running on it, see https://nmap.org/submit/ ).
TCP/IP fingerprint:
OS:SCAN(V=7.70%E=4%D=1/19%OT=22%CT=1%CU=32374%PV=Y%DS=2%DC=T%G=Y%TM=5C440D3
OS:6%P=x86_64-pc-linux-gnu)SEQ(SP=108%GCD=1%ISR=10B%TI=Z%CI=I%II=I%TS=8)OPS
OS:(O1=M54DST11NW7%O2=M54DST11NW7%O3=M54DNNT11NW7%O4=M54DST11NW7%O5=M54DST1
OS:1NW7%O6=M54DST11)WIN(W1=7120%W2=7120%W3=7120%W4=7120%W5=7120%W6=7120)ECN
OS:(R=Y%DF=Y%T=40%W=7210%O=M54DNNSNW7%CC=Y%Q=)T1(R=Y%DF=Y%T=40%S=O%A=S+%F=A
OS:S%RD=0%Q=)T2(R=N)T3(R=N)T4(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T5(R
OS:=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F
OS:=R%O=%RD=0%Q=)T7(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)U1(R=Y%DF=N%
OS:T=40%IPL=164%UN=0%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)IE(R=Y%DFI=N%T=40%CD
OS:=S)

Network Distance: 2 hops
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE (using port 143/tcp)
HOP RTT       ADDRESS
1   168.27 ms 10.10.12.1
2   233.79 ms 10.10.10.121

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done at Sat Jan 19 23:55:02 2019 -- 1 IP address (1 host up) scanned in 74.09 seconds

HTTP - Puerto 80

image

NODEJS - PUERTO 3000

En este puerto, al visitarlo en firefox nos muestra un mensaje del tipo json.

1
{"message":"Hi Shiv, To get access please find the credentials with given query"}

GOBUSTER

Realizamos una busquedad de directorios y archivos con gobuser.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
root@sckull:~/htb/help/stuff# gobuster -w /usr/share/wordlists/dirb/common.txt -u http://10.10.10.121/ -np -t 25 -x php,html,txt

=====================================================
Gobuster v2.0.1              OJ Reeves (@TheColonial)
=====================================================
[+] Mode         : dir
[+] Url/Domain   : http://10.10.10.121/
[+] Threads      : 25
[+] Wordlist     : /usr/share/wordlists/dirb/common.txt
[+] Status codes : 200,204,301,302,307,403
[+] Extensions   : php,html,txt
[+] Timeout      : 10s
=====================================================
18:29:01 Starting gobuster
=====================================================
/index.html (Status: 200)
/javascript (Status: 301)
/server-status (Status: 403)
/support (Status: 301)
=====================================================
18:32:32 Finished
=====================================================

/support/

 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
=====================================================
Gobuster v2.0.1              OJ Reeves (@TheColonial)
=====================================================
[+] Mode         : dir
[+] Url/Domain   : http://10.10.10.121/support/
[+] Threads      : 25
[+] Wordlist     : /usr/share/wordlists/dirb/common.txt
[+] Status codes : 200,204,301,302,307,403
[+] Extensions   : php,html,txt
[+] Timeout      : 10s
=====================================================
18:34:31 Starting gobuster
=====================================================
/captcha.php (Status: 200)
/controllers (Status: 301)
/css (Status: 301)
/favicon.ico (Status: 200)
/images (Status: 301)
/includes (Status: 301)
/index.php (Status: 200)
/index.php (Status: 200)
/js (Status: 301)
/LICENSE.txt (Status: 200)
/readme.html (Status: 200)
/uploads (Status: 301)
/views (Status: 301)
=====================================================
18:37:12 Finished
=====================================================

HelpDeskZ

En el la direccion /support encontramos una plataforma HelpDeskZ para soporte de sitios web.
image

Investigamos acerca de esta plataforma y encontramos que podemos subir una shell mediante la creacion de un ticket en la plataforma, y tambien encontramos un exploit que se aprovecha de esta vulnerabilidad, dicho exploit se le pasa la url de la plataforma y el nombre de la shell que subimos, con estos parametros el exploit generar un hash md5 con el nombre del archivo y la hora actual.

La razon por la cual el exploit genera un hash md5 es porque la plataforma al subir un archivo genera un hash md5 con el nombre del archivo y la hora actual, para luego renombrar el archivo con el hash y guardarlo en /uploads/tickets/.

1
$filename = md5($_FILES['attachment']['name'].time()).".".$ext;

Tambien que tomar en cuenta que los archivos que se agregan al ticket se guardan en el directorio /uploads/tickets/.

Utilizamos una reverse shell para poder ejecutar comandos dentro de la plataforma para ello vamos renombrar nuestra reverse shell con caracteres null al final del archivo.

Configuracion Reverse shell:
image

image

Ya que tenemos nuestra reverse shell debemos de tomar en cuenta que al ejecutar el exploit debemos de tener la misma hora del servidor en el que esta la plataforma. Obtuvimos la “hora del servidor” mediante la respuesta de un request en burpsuite, para luego utilizar esta “hora o timezone” en nuestra maquina.

image

HelpDeskZ - TICKET

Para crear un ticket nos dirigimos hacia Submit Ticket, seleccionamos General y Siguiete.

image

Luego de esto rellenamos los campos que sean obligatorios (*), agregamos nuestro archivo (shell.php%00.jpg) y escribimos el captcha que nos muestra.

EXPLOIT

Cuando el archivo es subido ejecutamos nuestro exploit. Hay que mencionar que al exploit se le hicieron unos cambios, uno de ellos fue agregar un valor mas alto al rango y verbosidad.

1
python exploit.py http://10.10.10.121/support/uploads/tickets/ shell.php

image

Al encontrar nuestra reverse shell el exploit se congela y nos muestra la url.

image

NETCAT

Por otro lado nuestra terminal en escucha con netcat obtuvo una shell.

image

Y nuestra flag user.txt.

image

PRIVILEGE ESCALATION

Para escalar privilegios hicimos una pequeña enumeracion, entre ellas el kernel, encontramos que el kernel que esta usando la maquina es vulnerable a un exploit.

image

Compilamos y descargamos el exploit dentro de lamaquina, al ejecutarlo nos devuelve una shell con privilegios root.

image

Y nuestra flag root.txt.

image

Share on

Dany Sucuc
WRITTEN BY
sckull
RedTeamer & Pentester wannabe