XUT_ / MACHINES / THM

0065

Include

THMMACHINENONEMEDIUM

Introduction

include

This challenge is an initial test to evaluate your capabilities in web pentesting, particularly for server-side attacks. Start the VM by clicking the Start Machine button at the top right of the task.

You will find all the necessary tools to complete the challenge, like Nmap, PHP shells, and many more on the AttackBox.

"Even if it's not accessible from the browser, can you still find a way to capture the flags and sneak into the secret admin panel?"

Getting the Flags

¿Cuál es la flag después de iniciar sesión en SysMon App?

Escaneo Inicial

  1. Empezamos realizando un escaneo a todos los puertos de la IP. include
  2. Una vez tenemos el escaneo inicial vamos a lanzar un escaneo con todo contra estos puertos. include include Podemos ver que el puerto 50000 está sirviendo un Apache 2.4.41 y el 4000 un Node.js en http, por lo que como siempre que vemos un servicio web, vamos a ver qué hay.

Investigación de Puertos

  1. Vamos a ver qué hay en el puerto 50000. include
  2. Y en el puerto 4000. include

Investigación Web

  1. Empezamos fuzzeando.
    1. En el puerto 50000. include
    2. En el puerto 4000. include
  2. Seguimos intentando SQL Injection.
    1. En el puerto 50000. include include Capturé una petición para usarla con SQLMap (era un formulario POST) pero no había ningún parámetro inyectable.
    2. En el puerto 4000 no nos hace falta porque nos han dejado credenciales de acceso. include
  3. Vamos a meternos en nuestro perfil. include Parece que son objetos. Si vamos más abajo podemos ver una manera de lo que parece compartir notas. include
  4. Si metemos una nota random como Book:testBook se ve reflejado en el perfil, lo que nos lleva a preguntarnos si podremos modificarlos. include
  5. Probaremos a introducir isAdmin:true. include
  6. Se ha cambiado y nos han aparecido dos opciones que antes no había:
    1. Settings: include
    2. API: include
  7. Vamos a comprobar si el link de settings realiza peticiones:
    1. Configuramos un servidor sencillito: include
    2. Introducimos nuestra URL en la caja y pulsamos enter. include
    3. Observamos si hay conexión. include
  8. Vamos a probar a hacer una petición a la API interna con la dirección del endpoint censurado: getAllAdmins101099991. include Obtenemos lo siguiente: include
  9. Vamos a decodificarlo. include
  10. Iniciamos sesión en SysMon con las credenciales obtenidas. include

¿Cuál es el contenido del archivo de texto escondido en /var/www/html?

Investigación Web

  1. Estando ya en la página del administrador, vamos a mirar desde dónde se carga la imagen de perfil del usuario administrator. include Parece ser que está cargando la foto desde una ruta interna. Esto huele a LFI de manual.
  2. Vamos a intentar acceder a /etc/passwd.
    1. Primero vamos a la ruta. include
    2. Ahora vamos a probar un par de payloads (../../ y ....//....//). include Ninguno ha funcionado, por lo que vamos a fuzzear.
    3. Preparamos el comando y lo lanzamos. include Después de probar un par de diccionarios encontramos varios payloads que funcionan.
    4. Si miramos en la web uno de estos payloads: include Observamos que hay dos usuarios joshua y charles, puede que nos ayude más tarde. También hay un mail server.
  3. Si recordamos el escaneo inicial, había varios servicios que nos hacían pensar que podía haber algo relacionado con el mail. Si buscamos en internet: include
  4. Vamos a intentar leerlo. include Parece que está vacío.
  5. Vamos a intentar mandar un mail al servidor para ver si se registra en los logs aprovechando que el puerto 25 está abierto.
    1. Buscamos la sintaxis para mandar emails por telnet en SMTP (25). include
    2. Lo replicamos. include
    3. Vamos a ver si se ha registrado. include Sí que se ha registrado. Huele a log poisoning debido a que aparece lo que hemos indicado. include
    4. Vamos a intentar un log poisoning con una webshell en php: <?php system($_GET['cmd']);?> include
    5. Ahora intentamos cargar la página con el parámetro &cmd=whoami. include
    6. Vamos a listar ahora /var/www/html. include
    7. Lo leemos. include