$ nslookup
# Usamos la máquina como Nameserver> server 10.129.29.200
Default server: 10.129.29.200
Address: 10.129.29.200#53
# Le preguntamos con qué nombres de dominio reconoce su propia IP> 10.129.29.200
** server cant find 200.29.129.10.in-addr.arpa: NXDOMAIN # La respuesta es con ninguno# Le preguntamos con qué nombres de dominio reconoce su dir. loopback> 127.0.0.1
1.0.0.127.in-addr.arpa name = localhost. # Solo con localhost# Le preguntamos por su dir. loopback en IPv6> ::1 # No dice nada# Probamos a la inversa con los dominios normalmente usados en HTB: [Nombre].htb# En este caso bank.htb> bank.htb
Server: 10.129.29.200
Address: 10.129.29.200#53
Name: bank.htb
Address: 10.129.29.200
# Vemos que efectivamente existe# Probamos con localhost> localhost
Server: 10.129.29.200
Address: 10.129.29.200#53
Name: localhost
Address: 127.0.0.1
Name: localhost
Address: ::1
# Esto tampoco nos dice nada
Hemos descubierto (o más bien deducido) el dominio bank.htb, ahora podemos probar a sacar más información del mismo solicitándolo al servicio DNS de nuevo.
1
2
3
4
5
6
7
8
9
10
11
12
# Solicitamos todos los registros referentes a bank.htb al server DNS de 10.129.29.200$ dig @10.129.29.200 any bank.htb
...[SNIP]...
;; ANSWER SECTION:
bank.htb. 604800 IN SOA bank.htb. chris.bank.htb. 6604800864002419200604800bank.htb. 604800 IN NS ns.bank.htb.
bank.htb. 604800 IN A 10.129.29.200
;; ADDITIONAL SECTION:
ns.bank.htb. 604800 IN A 10.129.29.200
Y hemos descubierto chris.bank.htb y ns.bank.htb. Los añadimos a /etc/hosts.
Si entramos a http://10.129.29.200, http://chris.bank.htb y http://ns.bank.htb encontraremos exactamente lo mismo, la página por defecto de Apache2 en Ubuntu:
Y si enumeramos directorios y archivos en cualquiera de esas páginas (que son la misma), no encontraremos ni un solo archivo. Por tanto solo nos queda un dominio, bank.htb.
Si entramos a http://bank.htb seremos redirigidos a /login.php, la siguiente página:
Se nos pide un email y una contraseña. Aunque no conocemos usuarios, recordemos que hemos visto un subdominio chris, así que no sería raro que el email a usar fuese chris@bank.htb.
Antes de hacer fuerza bruta con la contraseña, vamos a buscar archivos y directorios. Pasado un rato encontramos esto:
Archivos con credenciales protegidas mediante un cifrado que no existe. Si probamos a decodificarlas de cualquier forma, no encontraremos nada.
Ahora bien, si nos fijamos, todos los archivos tienen tamaño parecido (581-583 bytes), pero si ordenamos por tamaño de menor a mayor (como en la imagen de arriba), veremos que hay uno específico de 257 bytes.
Si accedemos a este, veremos información bastante interesante:
Y tenemos las credenciales chris@bank.htb:!##HTBB4nkP4ssw0rd!##. Lamentablemente, si probamos a iniciar sesión como chris por SSH, veremos que no sirven, pero podemos autenticarnos en su cuenta del banco.
En Dashboard poco podemos hacer, pero Support tiene un formulario interesante que nos permite mandar mensajes a (probablemente) administradores, adjuntando una imagen también. Un posible XSS?
Mandamos este payload junto con una imagen cualquiera:
Pero desde nuestro servidor web no recibimos nada. De todas formas, lo interesante quizás no sea el mensaje de texto, sino el archivo. Además de balance-transfer habíamos encontrado uploads. No tenemos permiso para ver el contenido, pero quizá sí podamos acceder a cada archivo individual si conocemos su nombre.
Si probamos a subir un archivo, p.ej, tortuga.jpg, veremos esto:
tortuga.jpg se ha subido a uploads con el mismo nombre: uploads/tortuga.jpg. La página nos obliga a subir únicamente imágenes, pero si nos fijamos en el código fuente de la página support.php, veremos lo siguiente:
1
<!-- [DEBUG] I added the file extension .htb to execute as php for debugging purposes only [DEBUG] -->
Así que ni siquiera hace falta saltarnos restricciones de extensión.
www-data@bank:/var/www/bank/inc$ mysql -u root -p'!@#S3cur3P4ssw0rd!@#'Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 104Server version: 5.5.55-0ubuntu0.14.04.1 (Ubuntu)
mysql> show databases; # Muestra htbbankmysql> use htbbank;
mysql> show tables; # Muestra usersmysql> select username,password from users;
+------------------------+----------------------------------+
| username | password |
+------------------------+----------------------------------+
| Christos Christopoulos | b27179713f7bffc48b9ffd2cf9467620 |
+------------------------+----------------------------------+
Solo hay una contraseña, y resulta ser exactamente la misma (en MD5) que la que ya teníamos para chris, aunque si probamos a iniciar sesión con esta, veremos que no funciona. Si probamos a iniciar sesión para root, tampoco sirve ninguna de las contraseñas que tenemos.
OS: Linux | Dificultad: Easy | Conceptos: Enumeración de subdominios, Chamilo RCE, File Upload, Reutilización de contraseñas, Escalada de privilegios mediante Symlink y setfacl con sudo
OS: Linux | Dificultad: Easy | Conceptos: Enumeración de (muchos) servicios y Fingerprinting indirecto de versiones (Epoch y Bundles), Explotación de LFI para RCE, Privesc mediante privilegios Sudo permisivos.