Auditoría y CTF

Guía Kevgir Parte (I)

Buenos días hackers! En esta PoC, os mostraré una guia de la maquina virtual Kevgir de canyoupwn.me. En esta maquina virtual, se podrá practicar técnicas conocidas en la fase del pentesting ya sea aplicaciones web vulnerables y contraseñas débiles. Las técnicas usadas son Hacking con Redis, Hacking con Tomcat y Jenkins, ataques por diccionario, escalada de privilegios, ataques con exploits y auxiliares, y otras vulnerabilidades como SUID bit.



El primer paso, es realizar un reconocimiento de la red interna, en busca de dispositivos en la infraestructura de red

El objetivo tiene como dirección IP 192.168.171.146. Probaremos la conectividad haciendo ping: 

Una vez elegido el objetivo y realizada la prueba de conectividad entre hosts, haremos un escaneo más en profundidad para enumerar los servicios y puertos abiertos:

 

Según la información obtenida, tenemos el puerto http abierto con un servidor Apache Tomcat 8080, Joomla en el 8081 y 9000 Jenkins. Además tenemos: NFS, SSH, FTP, Redis.

A través del SMB/TCP 445, haremos una enumeración del servicio Samba con enum4linux: 

 

 

 

 

 

  • Obtenemos usuarios bien conocidos, que podremos usar para hacer un pequeño diccionario
  • Información del sistema operativo Unix, servidor Samba Ubuntu
  • Usuarios del host: user, admin y root
  • Políticas de contraseñas
  • Dominios y grupos

Realizando otro escaneo y enumeración, usando la interfaz gráfica Zenmap, obtenemos los mismo resultados: 

Una vez recolectada la información más general, iremos analizando y explotando mediante técnicas de pentesting los diferentes servicios del Ubuntu.

FTP 25
Usamos hydra para realizar un ataque por diccionario y obtener la contraseña. Para ello hacemos un pequeño diccionario sobre lo recolectado con enum4linux

 

 
Como se puede observar, el servidor FTP es vulnerable usando un nombre y contraseña bastante débil. Mediante el FTP, se puede subir y descargar archivos del directorio que se comparte por el servidor. Si se tiene permisos para subir archivos, se puede subir un archivo con código malicioso y ejecutarlo empleando otro tipo de herramientas.


TOMCAT 8080

Con nikto escanearemos en busca de vulnerabilidades y carpetas de la aplicación web. 

Sacamos información interesante: /phpmyadmin/ 
Con esto sabemos que posee un gestor de base de datos MySQL. La información es poder, y si se tiene «gaining access» obtendremos información sensible y muy util dependiendo del objetivo del ataque.

Obtenemos más rutas del servidor Apache, en este caso muy interesantes como /manager/html y la cuenta por defecto de la aplicación de Tomcat: tomcat/tomcat. Es una vulnerabilidad muy grave por parte de un sysadmin, usar cuentas por defecto…

Con hydra mediante un ataque por diccionario, usando el mismo método que en el FTP, sacamos lo mismo para evitar falsos positivos: 

Y usando un auxiliar de metasploit, obtenemos la misma información.

 

 

Se desarrollará dos métodos en la parte de explotación para conseguir una shell o una sesión meterpreter, y en la parte de post-explotación se usará una técnica debido a una vulnerabilidad SUID bit en /bin/cp, para escalar privilegios, y también se explicará el procedimiento del uso de un exploit local.

Fase explotación Método (I)

Mediante la aplicación Tomcat Manager, el usuario puede subir archivos WAR con un payload malicioso creado con «msfvenom» y enviar peticiones http con «curl» un archivo .jsp para obtener una shell. 
Un archivo WAR o Web Application Archive, es simplemente un archivo JAR que contiene el conjunto de archivos necesarios para hacer funcionar una aplicación web. 
Con jar tf, visualizamos el contenido el archivo JAR. Uno de ellos es un .jsp. 
Los archivos .jsp, es un fichero web en Java

Una vez generado el payload, subimos el archivo WAR desde la aplicación

Usaremos netcat, «la navaja suiza del TCP/IP» para estar a la escucha por el puerto configurado en el payload reverse_tcp. Una vez el atacante realize una petición http a la URI donde se encuentra el archivo .jsp, el servidor Tomcat ejecutará el payload realizando la conexión reversa devolviendonos en el Netcat una shell de usuario. 

 



Una vez obtenido la shell, ya se ha conseguido el acceso «gaining access», al servidor Ubuntu. El problema radica en que al tener una shell usuario, no tenemos a penas privilegios de poder realizar una serie de acciones, y a su vez es preferible tener un entorno de terminal.

Para ello sabiendo que en ubuntu, esta instalado Python, generaremos una terminal escribiendo el siguiente pequeño script.

 

 

 

Fase de explotación Método (II)
Usando la consola de Metasploit (msfconsole), lanzaremos un exploit a la máquina victima consiguiendo una sesión meterpreter. El exploit usado es el tomcat_mgr_upload. 
Este exploit lo que hace es ejecutar un payload en un Tomcat Apache con la aplicación manager expuesta al atacante. Es similar al Método I, ya que sube un archivo WAR que contiene una aplicación con extensión .jsp mediante POST.

Una vez configurado, lanzamos el exploit y conseguiremos una sesión meterpreter.

Las ventajas con respecto al Método (I), es la potencia que nos ofrece Metasploit y el payload meterpreter, ya que permite nuevas funcionalidades además de la shell, dependiendo del nivel de privilegios que tengamos, en este caso de usuario. 

Fase Post-Explotación

Investigando con la shell obtenida en el Método (I), vemos los permisos que tiene el usuario con el siguiente comando.

Como pueden observar, el comando cp tiene SUID bit, por lo que se puede usar para copiar y sobrescribir archivos que un usuario root puede tener, sin serlo.
Modificamos el archivo, y en la linea admin cambiamos el user ID en 0 (la de root). 

Una vez modificado el archivo, iniciamos un simple servidor http en nuestra maquina kali linux

Desde la shell, nos descargamos el archivo con wget

Y copiamos el archivo descargado a /etc/passwd. Se sobrescribirá, y el resultado final será una escalada de privilegios sencilla.



Con esto ya somos root, amos y dueños del servidor Ubuntu.

Otro método de escalada de privilegios sería mediante el uso de este exploit 
El procedimiento sería el siguiente: 

  • Copiar el exploit en un archivo .c
  • Compilarlo con gcc, teniendo en cuenta que el sistema victima tiene una arquitectura de 32 bits. 
  • Iniciar un servidor http en nuestra maquina kali linux, simplemente para la posterior descarga del exploit escrito en lenguaje C desde la shell.
  • Dar permisos de ejecución al archivo y ejecutar el exploit.


Espero que os haya gustado la primera parte de la guía de esta PoC. En la próxima entrada se explicará las diferentes técnicas de acceso mediante la explotación de vulnerabilidades en los distintos servicios.

Un saludo, naivenom.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Los datos introducidos se guardarán en nuestra base de datos como parte del comentario publicado, como se indica en la política de privacidad.