🟠Loly

Write-up de la máquina Loly de Proving Grounds #writeup #walkthrough

Enumeración

Puertos abiertos

Comenzamos enumerando que servicios tiene abiertos la máquina Loly. Primero, un escaneo rápido de estos servicios.

nmap -p- --open --min-rate 1000 -Pn -n -vvv 192.168.239.121

Solo está abierto el puerto 80 (HTTP). El siguiente paso, será el escaneo profundo de este servicio.

nmap -p80 -Pn -n -sVC -vvv 192.168.239.121

Servicios abiertos:

  • Puerto 80 -> HTTP -> nginx 1.10.3

Enumeración Web

El CTF Loly está ejecutando un servidor Web en el puerto 80. Vamos a enumerar su contenido.

Vemos una página por defecto de un servidor nginx. Vamos a continuar con una enumeración de directorios y archivos.

dirsearch -u http://192.168.239.121 -i200,301 -e txt,html,php
dirsearch -u http://192.168.239.121/wordpress/ -i200,301 -e txt,html,php

Parece que estamos ante un sitio Web que ejecuta un CMS Wordpress. Vamos a acceder a /wordpress.

Vemos que los accesos direccionan al dominio "loly.lc", así que vamos a añadirlo al archivo "/etc/hosts".

Estamos evaluando un CMS WordPress, vamos a tratar de enumerar más información con la herramienta wpscan.

wpscan --url http://loly.lc/wordpress 
wpscan --url http://loly.lc/wordpress -U loly -P /home/elhackeretico/rockyou.txt

Encontramos unas credenciales para iniciar sesión en el panel de administrador de WordPress.

Explotación

Acceso al sistema

Vamos a probar las credenciales encontradas para iniciar sesión en WP.

Vamos a enumerar posibles vectores vulnerables que nos permitan acceder al servidor. Durante la enumeración hemos encontrado un plugin "llamativo" llamado "AdRotate". Veamos que podemos hacer.

En "Manage Media" encontramos una utilidad para cargar archivos. Hay que tener en cuenta que están limitados los archivos que se pueden cargar. Vamos a tratar de cargar una reverse shell pero comprimida como archivo .zip.

Configuramos la reverse shell.

Ahora la comprimimos y cargamos.

Vamos a la URL: http://loly.lc/wordpress/wp-content/banners/php-reverse-shell.php para ejecutar el archivo cargado.

Levantamos un oyente nc en el puerto 1337.

Y ya tendriamos acceso al sistema.

Buscamos la flag local.txt

find / -name local.txt 2>/dev/null

Pivotando de "www-data" a "loly"

Estamos tratando de vulnerar un sitio Web que ejecuta un CMS WordPress. Para su funcionamiento, requiere de una serie de archivos donde podemos encontrar información muy interesante. Estos archivos suelen encontrarse en /var/www/html/wordpress.

Dentro de un archivo wp-config.php encontramos una posible contraseña.

La posible contraseña es "lolyisabeautifulgirl". ¿Podría ser la contraseña del usuario "loly"? ¿La puede estar reutilizando? Vamos a comprobarlo.

Elevación de privilegios

Vamos a comenzar enumerando que puede ejecutar este usuario como "root" sin contraseñas.

Este usuario no puede ejecutar comandos como "sudo"

Vamos a continuar enumerando los archivos con permisos SUID.

find / -perm -u=s -type f 2>/dev/null

Pero no hay ninguno que ejecutable interesante que nos permita elevar privilegios.

Otra cosa que podemos hacer es enumerar los servicios que se están ejecutando de forma interna.

netstat -tuln

Se está ejecutando de forma interna un servicio MySQL del cual tenemos las credenciales. Vamos a enuemerar sus usuarios.

Nada interesante. Ya conocemos las credenciales de ese usuario.

Vamos a enumerar información sobre kernel y sistema operativo.

uname -a

Vamos a buscar si existen vulnerabilidades para esa versión.

searchsploit ubuntu 4.4.0

Encontramos un posible exploit interesante. Vamos a descargarlo y compilarlo, para posteriormente enviarlo a la máquina víctima haciendo uso de un servidor http Python.

search -m 45010.c
python3 -m http.server 80

Enviamos el exploit a la máquina víctima, compilamos y damos permisos de ejecución

gcc 45010.c -o exploit (compilar)
chmod +x exploit (dar permisos de ejecución)
./exploit (ejecución)
  • Si a alguien le devuelve al compilar, un error relacionado con cc1, también esta la forma de solucionarlo.

Ya estaría la máquina resuelta.

Last updated