Hola Habr! En este artículo quiero contarles sobre mi experiencia al pasar el laboratorio
Friendzone en el portal hackthebox. Para aquellos que no han escuchado lo que es
hackthebox , este es un portal donde puedes probar tus habilidades más recientes en la práctica, hay máscaras de CTF y máquinas de laboratorio, una de las cuales se discutirá en este artículo.
Diré de inmediato que las reglas del servicio dicen:
"No comparta cómo hackeó cada máquina con otros miembros. Esto incluye la generación del código de invitación y todos los desafíos " . Pero dado que esta máquina ya no está activa y se almacena en la sección "Máquinas retiradas", solo los miembros VIP tienen acceso a las máquinas en esta sección y las redacciones, este artículo no viola nada y es completamente legal. ¡Entonces comencemos!

Recopilación de información
Comencemos nuestra exploración comenzando el escaneo de puertos con nmap.

De lo anterior se puede ver que los puertos 21 (ftp), 22 (ssh), 53 (dominio), 80 (http), 139 (netbios-ssn), 443 (https) están abiertos. Miremos a ellos.
Enumerar 139 / tcp (netbios-ssn)
Utilizaremos la utilidad
enum4linux para enumerar los recursos compartidos en el host. A partir de la salida de la utilidad, está claro que está permitido ingresar a los recursos / general y / Desarrollo

Ahora necesitamos verificar estos recursos.
Usando
smbclient //10.10.10.123/general encontramos el archivo
creds.txt que contiene algunas credenciales, guárdelo.


Enumeración DNS
Utilizaremos la utilidad de
excavación , que permite verificar los registros en el servidor DNS especificado para el dominio / subdominio. El nombre de dominio friendzone.red se toma del certificado SSL de CommonName (salida de nmap para 443 / tcp).

Vamos a
10.10.10.123
Notamos el buzón info@friendportal.red y usamos dig nuevamente.

Agregue las entradas resultantes a
/ etc / hostsAhora tenemos una lista de direcciones que deben revisarse para los siguientes clientes potenciales. Omitiré parte de la historia donde las páginas resultaron ser agujeros de conejo. Consideramos solo hallazgos útiles.
Vamos a
administartor1.friendzone.red e ingresamos las credenciales que se encuentran en //10.10.10.123/general/creds.txt


Visita /dashboard.php

Se les pide que ingresen ciertos parámetros para obtener imágenes. Como resultado, tenemos 2 imágenes disponibles.


Por prueba y error, entendemos que la página es vulnerable a
LFI (Inclusión de archivos locales) . Y que podemos cargar el shell a través de smbclient y acceder a él utilizando esta vulnerabilidad. Lo intentamos!
Descargue el shell en Desarrollos.


Regresamos a la página y nos referimos al shell cargado.

Antes de eso, por supuesto, ejecutando netcat para escuchar en el puerto 1234.

Obtenemos el shell del usuario de www-data.
Después de revisar el volunbox, encontramos el archivo mysql_data.conf, que contiene las credenciales del usuario amigo.


Intentemos obtener una terminal e iniciar sesión como amigo.

Entramos en el directorio de inicio / home / friend y recogemos la bandera del usuario.
Agarra root.txt
Descargue pspy64 en el volunbox para rastrear los procesos en ejecución.
Encabezado de spoilerpspy es una herramienta diseñada para rastrear procesos sin la necesidad de privilegios de root. Le permite ver comandos ejecutados por otros usuarios, trabajos cron, etc. a medida que avanzan.

Comenzamos pspy64, antes de configurar la "ejecución" en el archivo chmod + x.

Notamos que reporter.py se inicia desde un usuario con UID = 0 (es decir, root). Veamos el contenido del archivo reporter.py

Casi todas las líneas están comentadas y no tienen sentido, excepto la primera, donde se importa el módulo os. ¿
Secuestro de biblioteca ?
Este módulo os.py tenía una resolución de 777, por lo que podíamos realizar cambios de forma segura desde el usuario Friend.
Al agregar el
sistema de línea
("cp /root/root.txt /home/Friend/root.txt") al módulo os.py y esperar un momento a que se inicie el script.

Tenemos la bandera raíz. Victoria!
