Introducción

Las comunidades Hackear y Hack The Planet se han unido para ofrecer previo y durante la ekoparty un conjunto de máquinas virtuales vulnerables, con las cuales podrás poner en práctica los conocimientos básicos de seguridad ofensiva que hayas adquirido hasta el momento.

Esta propuesta integradora tiene como objetivo primordial que puedas practicar sobre un entorno completamente controlado y también el tener la posibilidad de realizar consultas y despejar todas las dudas durante tu proceso de aprendizaje.

Somos conscientes que hoy en día existe una gran necesidad de insertar talento al mundo de la seguridad de la información y las nuevas tecnologías, y este es nuestro granito de arena, para que VOS que recién estás comenzando puedas afianzar tus conocimientos y adquirir también nuevas habilidades, destacar entre postulantes a una oferta laboral y conectar con diferentes personas, tanto amateurs como profesionales experimentadas.

Requerimientos

• Computadora – Notebook Mínima: i3 / i5 - amd ryzen 3, 8gb de ram, Espacio en Disco 150Gb. 
• Hipervisor: VirtualBox 
• Distribuciones recomendadas con Tools de Hacking: Kali / Parrot 

Descripción de la actividad

Los y las participantes van a poder practicar todas las etapas de un Pentesting: reconocimiento, escaneo, explotación, Post - Explotación y creación de informes.
Nuestro objetivo es llegar a formar una comunidad unida y conjunta en la cual el compartir el conocimiento sea la premisa, en la cual apoyarnos sea nuestro fin como profesionales. Queremos que no sea una comunidad competitiva y brindemos nuestro apoyo conforme vayamos avanzando intelectual y profesionalmente.

Información de la VM

• Tamaño del .rar: 1gb 
• Nombre: TPC-Linux 1 
• OS: Linux Ubuntu Server 
• Virtual Disk Image: 10gb 
• Ram por defecto: 2gb

Writeup – Reconocimiento

Antes de empezar con el CTF, debemos asegurarnos de tener tanto la VM del desafío como nuestro OS de pentesting en una misma red. En mi caso estoy corriendo una máquina virtual de Kali y la maquina virtual del CTF en la misma red NAT. Una vez configurada correctamente la VM, solo debemos minimizarla y tratarla como si fuera un servidor remoto.

Lo primero que tenemos que hacer es encontrar la dirección IP que le corresponde a la VM del CTF. Como sabemos que está en nuestra red, podemos usar el comando nmap para que haga un escaneo muy básico de los puertos abiertos en todas las posibles direcciones IP de la red.

Imagen 1

Vemos los puertos 22, 80 y 8080 en la dirección IP 10.0.2.4, por lo que decido hacerle un escaneo mas detallado para verificar si es la VM del CTF.

Efectivamente es la dirección que estábamos buscando. Al parecer tiene un servidor SSH y 2 servidores web, uno en el puerto 80 corriendo Apache y otro en el 8080 corriendo Tomcat.

Imagen 2

Prestemos atención en la Imagen 2. En el puerto 80, nmap encontró que el servidor contiene un archivo robots.txt indicando la existencia de un directorio llamado ‘web-development’.

Al acceder a la dirección URL http://10.0.2.4/web-development nos encontramos un sitio web. Al revisar el código de la pagina encontraremos nuestra primer FLAG.

Imagen 3

Al parecer el sitio web no tiene mucho, por lo que vamos a pasar a fuzzear el directorio y ver que nos encontramos. Si bien hay herramientas como dirbuster que funcionan muy bien y tienen una interfaz gráfica, en este caso voy a utilizar wfuzz para ver si encuentra algún otro archivo o directorio dentro de esta URL.

El comando con los parámetros quedaría de la siguiente forma:

• sudo wfuzz -c -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt --hc 404 http://10.0.2.4/web-development/FUZZ
Imagen 4

Encontramos una respuesta valida de nombre “secret” por lo que vamos a ese directorio a ver que nos encontramos: http://10.0.2.4/web-development/secret
y vemos que alguien dejo una nota con credenciales para el Tomcat.

Imagen 5

Por lo que ahora comenzamos a revisar que hay en el Tomcat, para esto le agregamos :8080 a la misma dirección IP: http://10.0.2.4:8080

Vemos que es la pagina principal del Tomcat y que podemos acceder como Administrador en Manager App usando las credenciales que encontramos antes.

Imagen 6

Una vez dentro podemos ver varios paneles, con informacion sobre el servidor, que aplicaciones tiene, etc. Pero lo que realmente es interesante es la opcion de poder subir un archivo .WAR (podemos subir una shell en formato .WAR).

Imagen 7


Writeup – Explotación

Para saber cómo crear un payload .war simplemente podemos buscar en Google. Hay muchos sitios y mucha información de cómo utilizar la herramienta msfvenom para crear diversos payloads que nos servirán en distintas circunstancias.

Imagen 8

Podemos encontrar sitios como netsec donde detallan una lista con los comandos, como pueden ver encontramos uno para crear un payload .war

Imagen 9

Simplemente en una terminal copiamos el comando de arriba, y le modificamos los parametros LHOST para que coincida con nuestra IP (el payload es una shell reversa) y el LPORT con algun puerto (por defecto 4444).

Imagen 10

Cuando se termine de ejecutar el comando, nos creara un archivo .war que contiene nuestro payload. Ahora simplemente tenemos que subirlo al tomcat, al subirlo el tomcat lo ‘despliega’ automaticamente y veremos que en la parte de aplicaciones aparece nuestro archivo.

Imagen 11

Ahora antes de ejecutar el payload, tenemos que crear un listener que escuche las conexiones en el puerto que establecimos a la hora de crear la shell reversa. Para esto usamos metasploit framework, al cual podemos acceder mediante el comando ‘msfconsole’ .

Una vez cargado el framework, debemos elegir el módulo ‘exploit/multi/handler’ y especificar los parámetros del payload (son los mismos que usamos al crear el archivo .war con el msfvenom).

Imagen 12

Podemos verificar que configuramos todo bien usando el comando ‘show options’. Si todo está bien ejecutamos el módulo usando el comando ‘run’ o ‘exploit’.

Imagen 13

Una vez este levantado el listener, solo debemos volver al sitio del tomcat con las aplicaciones y tocar el nombre de nuestro archivo para ejecutar el payload y que este se conecte a nosotros.

Si todo sale bien, obtendremos una shell reversa.

Imagen 14

Ahora si bien podemos hacer la totalidad del CTF usando shells basicas, es mas comodo y recomendable mejorar la shell a una meterpreter (¡una shell pero con esteroides!) que trae muchas mas funciones interesantes y muy utiles.

Imagen 15

Al investigar un poco nos damos cuenta que tenemos permisos de servidor web (es decir, somos www-data) y no muy lejos del directorio web podemos encontrar la segunda flag.

Imagen 16

En la carpeta /home encontramos un usuario llamado manager, pero al parecer no tenemos permisos para acceder a esa carpeta, por lo que decidi seguir indagando en el servidor web.

Imagen 17

(En la Imagen 17 podemos ver que la shell de meterpreter no nos deja entrar al directorio manager, pero no nos indica el por que. Creando una shell y volviendola una shell tty podemos ver que es porque no tenemos los permisos necesarios).

Volviendo al servidor web, encontramos un archivo llamativo llamado Sever_Backup.zip. Usando la shell de meterpreter podemos descargandolo usando el comando download.

Imagen 18

Al revisarlo nos topamos con que el archivo .zip tiene una contraseña. Si bien los archivos que tiene son los mismos que el servidor web (o eso parece) seria interesante poder conseguir esa clave.

Lo que podemos hacer es usar ‘john’ para crackear la contraseña.
Primero debemos traducir el archivo a un formato que john pueda digerir. Luego le entregamos ese archivo procesado a john indicandole que wordlist usar.

Imagen 19

Imagen 20

Como vemos, pudimos crackear la contraseña del archivo. Podríamos pensar, que este usuario “manager” es muy vago y siempre usa la misma contraseña, por lo que podemos hacer el intento de loguearnos por SSH con ese usuario y esa clave.

Imagen 21

Como vemos pudimos acceder al servidor y ganamos una shell como el usuario “manager”.

Si revisamos ahora podemos acceder a su carpeta de archivos y es ahí donde encontramos la tercer flag.

Imagen 22


Writeup – Elevar privilegios

Bueno, ahora solo nos falta llegar a ser root (es decir obtener los máximos permisos que se pueden llegar a tener en el sistema).

Si bien podemos lanzar una serie de comandos manualmente para poder comenzar a indagar que rutas podríamos tomar para tratar de subir de privilegios, existen multiples scripts y herramientas que hacen esto por nosotros. En el ejemplo a continuación use la herramienta “linpeas” que cuenta con script muy bueno para recolectar toda la información del sistema.

Imagen 23

El script tambien nos indica que la version de sudo es la version 1.8.27.
Si buscamos en google informacion sobre esto podemos encontrar un exploit en exploit.db

Imagen 24

El exploit funciona directamente indicando un parámetro en el comando de sudo, permitiéndonos realizar un bypass en la autentificación y lograr ganar una terminal como root.

Imagen 25

Con esto ya conseguimos todas las flags del CTF.
Esperamos que hayan aprendido algún truco nuevo 😉

¡Happy Hacking!