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: 390mb
• Nombre: TPC-Linux 2
• OS: Linux Debian
• Virtual Disk Image: 8gb
• Ram por defecto: 1gb

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

En la Imagen 1 vemos que en la dirección 10.0.2.18 hay varios puertos abiertos, por lo que posiblemente se trate de la VM del CTF.

Un escaneo más a fondo confirma que se trata de nuestro objetivo. En la Imagen 2 podemos ver un servidor FTP en el puerto 21, un servidor SSH en el puerto 22 y un servidor web en el puerto 80.

El nmap también nos indica que el FTP tiene permitido al acceso anónimo (usando el usuario anonymous)

Imagen 2

Antes de comenzar primero pasamos a revisar que hay en el servidor web. Podemos ver que se trata de un servidor que contiene una galería de imágenes en php, con una descripción indicando que se pueden subir fotos usando FTP (Imagen 3).

Imagen 3

Podemos acceder al servidor FTP logueandonos como anonimos. Para esto utilizamos el comando ftp junto con la direccion IP del servidor. Cuando nos pida credenciales (tanto como el usuario con la contraseña) son la palabra ‘anonymous’.

Imagen 4

Una vez dentro, vemos lo que parece ser la carpeta del servidor web que visitamos antes, con una carpeta llamada “gallery”. Lo interesante de esta carpeta es que tenemos permisos de escritura. Revisando que hay en la carpeta descubrimos que contienen las fotos que nos cargo la galeria del sitio web.

Imagen 5

Al tener permisos de escritura en esta carpeta, bien podriamos subir una imagen, o una shell reversa escrita en php, por lo que a continuacion nos ponemos con eso.


Writeup – Explotación

Como vimos antes, podríamos subir un payload con una shell reversa a la galería de imágenes del servidor.

Para saber cómo crear un payload en php 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 6

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

Imagen 7

Por lo que abrimos una terminal en nuestro kali y copiamos esa linea de codigo. Reemplazamos los valores de LHOST con nuestra IP (el payload es una shell reversa) y LPORT en un puerto de escucha (por defecto 4444).

Imagen 8

Una vez creado el payload, simplemente lo subimos mediante FTP usando el comando ‘put’ en la carpeta “gallery” del servidor.

Imagen 9

Una vez que subimos el payload, ahora debemos crear nuestro listener. Para esto necesitamos abrir el metasploit framework y usar el modulo exploit/multi/handler. Luego tenemos que definir los parametros que usamos a la hora de crear el payload.

Imagen 10

Usando el comando ‘show options’ podemos ver si cargamos todo correctamente, y luego ejecutamos el exploit usando el comando ‘run’ o ‘exploit’.

Imagen 11

Ahora solo nos queda ejecutar el payload en el servidor, para eso simplemente vamos a la url: http://10.0.2.18/gallery/shell.php y esperamos a que se cree la shell de meterpreter.

Imagen 12

Investigando un poco, descubrimos que tenemos permisos de servidor web (www-data) y no muy lejos de la carpeta del servidor esta la primer flag del desafio.

Imagen 13

Si seguimos investigando, podemos ver que existe una carpeta del usuario ‘sam’ en el directorio /home. Ahí tambien encontramos la segunda flag del desafio, pero por lo visto no tenemos permisos para leerla. Indagando descubrimos que podemos entrar en la carpeta .ssh y podemos leer el archivo id_rsa.

El archivo id_rsa nos sirve para loguearnos a traves de SSH usando ese archivo a modo de “llave”. Pero usualmente estos archivos estan protejidos por una contraseña (una passphrase).

Imagen 14

Sin embargo, podemos intentar crackear esta contraseña. Para esto necesitamos usar a nuestro amigo de toda la vida ‘John’.
Para esto podemos descargar el archivo como se ve en la Imagen 15, traducir el archivo a algo digerible por john, y luego usar john para crackear el archivo (Imagen 16).

Imagen 15

Imagen 16

Como vemos pudimos crackear la contraseña del archivo. Ahora simplemente usamos el comando ‘ssh’ indicandole el archivo id_rsa, el usuario y la direccion IP del servidor. Cuando nos pregunte la passphrase debemos introducir la contraseña que crackeamos (Imagen 17).

Imagen 17

Algo importante a tener en cuenta es que si el archivo id_rsa tiene demasiados permisos, este restringe su uso a la hora de autenticarse en SSH. Para eso simplemente debemos darle permisos de escritura solo para el dueño del archivo. Para eso podemos utilizar el comando ‘chmod 400 id_rsa’

Ahora si podemos leer el archivo user.txt en el directorio del usuario sam. Tambien vemos un archivo llamado output.txt que parece ser la salida del comando ‘ifconfig’.

Imagen 18


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.

Podemos descargar el comando usando el comando:

‘wget https://raw.githubusercontent.com/carlospolop/privilege-escalation-awesome-scripts-suite/master/linPEAS/linpeas.sh’ 

Y luego ejecutarlo usando el comando ‘sh linpeas.sh’

Imagen 19

El scrip menciona que el Cron esta ejecutando periodicamente un script como administrador en el directorio /opt, por lo que al revisarlo encontramos nuestra tercer flag (¡vamos por buen camino!).

Imagen 20

Tratamos de editar el script pero no podemos, solo tenemos permisos de lectura. Vamos a analizar en detalle que hace este script.

Imagen 21

Ahora masomenos entendemos lo que esta sucediendo. El script lo que hace es ejecutar los comandos que estan escritos en el documento commands.txt en el directorio /etc, y guarda la respuesta de estos comandos el el archivo output.txt en el directorio del usuario sam.

Imagen 22

Como vemos inicia los servicios del apache2, el vsftpd y ssh. A lo ultimo vemos un ifconfig que corresponde con lo que encontramos en el archivo output.txt previamente.

Por lo visto si podemos modificar este archivo, por lo que simplemente lo modificamos para que enumere todos los archivos del directorio /root y nos mueste que contienen.

Imagen 23

Ahora solo debemos ir al directorio del usuario sam y esperar a que se corra el comando. Cuando se ejecute veremos que el archivo output.txt ya no contiene la salida del comando ‘ifconfig’ sino que contiene la salida de los comandos que introdujimos en el commands.txt.

Como se ve en la Imagen 24, podemos ver que el directorio /root hay un archivo root.txt y nos muestra lo que contiene el archivo (¡la cuarta y ultima flag!).

Imagen 24

Con esto ya conseguimos todas las flags del CTF.
Esperamos que hayan aprendido algo nuevo. ¡No duden en contactarnos si tienen dudas! ;D

¡Happy Hacking!