El primer paso, es realizar un reconocimiento de la red interna, en busca de dispositivos en la infraestructura de red
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:
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
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.
No hay comentarios:
Publicar un comentario