HackTheBox. Tutorial de OpenAdmin. RCE en OpenNetAdmin y GTFOBins en nano

imagen

Sigo publicando soluciones enviadas para su posterior procesamiento desde el sitio de HackTheBox .

En este artículo, explotaremos RCE en OpenNetAdmin, profundizaremos en las configuraciones del servidor web, perforaremos el puerto con SSH Forwarding, descifraremos la contraseña de la clave SSH y usaremos la técnica GTFOBins para aumentar los privilegios.

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 ingresa a una red privada con personas que saben algo en el campo de la seguridad de la información :)

Información organizacional
, , Telegram . , , .

. , - , .

Recon


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

10.10.10.171    openadmin.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 500 paquetes por segundo.

masscan -e tun0 -p1-65535,U:1-65535 10.10.10.171   --rate=500

imagen

Ahora, para obtener información más detallada sobre los servicios que operan en los puertos, realizaremos un análisis con la opción -A.

nmap openadmin.htb -p22,80

imagen

Por lo tanto, el servicio ejecuta SSH y el servidor web Apache. Echa un vistazo a lo que se encuentra en el sitio.

imagen

Nos encontramos con la página principal de Apache. En tales casos, los sitios pueden no estar ubicados en el directorio de inicio del servicio. Para encontrarlos, debe ordenar los directorios. Para hacer esto, use el programa gobuster (supuestamente el escáner más rápido). Seleccionamos el modo de exploración del directorio (dir), el diccionario (-w), el número de secuencias (-t), extensiones de página (-x), también la salida expandida de páginas (-e) y URL (-u).

gobuster dir -w /usr/share/seclists/Discovery/Web-Content/raft-large-words.txt -t 120 -x php,html,conf,txt -e -u http://openadmin.htb

imagen

En la salida, hay demasiada respuesta con el código 403 para filtrarlos, indicamos los códigos de respuesta (-s) que necesitamos.

gobuster dir -w /usr/share/seclists/Discovery/Web-Content/raft-large-words.txt -t 120 -x php,html,conf,txt -e -u http://openadmin.htb -s “200,204,301,302,307,401”

imagen

Y encontramos varios directorios. Ahora revisaremos todo para descubrir qué se encuentra allí.

imagen

imagen

imagen

Y solo en uno de estos sitios, hay una función de inicio de sesión. Pero si intenta hacer esto, vamos a la página de OpenNetAdmin.

imagen

En este caso, como puede ver, se utiliza la versión 18.1.1.

Punto de entrada


Busquemos exploits para esta versión.

imagen

Y para esta versión hay un exploit RCE. El código ya está en la base de datos local, echemos un vistazo.

imagen

Por lo tanto, el script toma un parámetro: esta es la URL. (Al inicio, tuve errores, por lo que puede abrir el archivo a través de mcedit y eliminar ^ M caracteres).

imagen

USUARIO1


Estamos en el directorio de inicio.

imagen

Y estamos rodeados por una gran cantidad de archivos.

imagen

Algunos de ellos pueden contener credenciales. Veamos todos los archivos de forma recursiva nombres de usuario.

imagen

Y no hay resultados. Pero habrá muchos resultados al buscar la palabra "pasar".

imagen

Ahora eche un vistazo a toda la configuración.

imagen

Esta es la contraseña para conectarse a la base de datos. Probémoslo para los usuarios. E iniciamos sesión con éxito como usuario jimmy.

imagen

USUARIO2


Primero, ejecute el script de enumeración base de LinEnum .

imagen

¡La conclusión debe analizarse con mucho cuidado, cada línea! Y lo único a lo que puede aferrarse en el resultado del script es la pertenencia a grupos.

imagen

Jimmy y Joanna están en el mismo grupo interno. Veamos los archivos que pertenecen a este grupo.

imagen

A juzgar por la ubicación, este es el sitio. Analizamos archivos. El primero en mirar es principal.

imagen

Si estamos autorizados, nos mostrarán la clave SSH privada del usuario joanna. Del archivo de índice se desprende que iremos a main después de una autorización exitosa. También contiene un hash de contraseña SHA512.

imagen

El hash se rompe fácilmente con la ayuda de este sitio .

imagen

Queda por aprender cómo llegar al sitio. Los puertos para acceder a cada sitio se pueden encontrar en el archivo de configuración correspondiente para cada sitio en el directorio / etc / apache2 / sites-available para apache.

imagen

Como puede ver, hay una configuración interna que nos interesa. Ahora reenvíe el puerto SSH.

imagen

Desde la configuración, está claro que podemos acceder al sitio desde la máquina local en el puerto 52846 bajo el dominio internal.openadmin.htb. Hagamos que el puerto se ejecute, es decir, redirija nuestro puerto local 52846 al puerto remoto 52846. Esta técnica se llama reenvío de puertos SSH.

imagen

Ahora, en la máquina local, haga una entrada en el archivo / etc / hosts.
127.0.0.1 internal.openadmin.htb
Y nos dirigiremos a través del navegador a la dirección internal.openadmin.htb : 52846 / index.php.

imagen

Inicie sesión con credenciales conocidas y obtenga una clave SSH privada.

imagen

Guardamos en un archivo y asignamos derechos.

imagen

Pero cuando intentan conectarse, nos piden la contraseña de la clave, porque está encriptada.

imagen

Podemos desplazarnos por la tecla. Para hacer esto, lo llevaremos al formato John'a, y luego le daremos el archivo con la clave ya convertida al formato bruto.

imagen

Y encuentra con éxito la contraseña. Ya estamos conectados con la clave y la contraseña.

imagen

RAÍZ


Una de las cosas que debe verificar es la configuración de sudo para ejecutar comandos sin contraseña.

imagen

La línea NOPASSWD dice que podemos ejecutar este comando bajo sudo sin contraseña. En este caso, se invoca el comando nano. Existe una técnica como GTFOBins, que permite usar varias utilidades para leer, escribir archivos o ejecutar comandos completos. Puede encontrar una lista completa de utilidades y sus capacidades aquí . Echemos un vistazo a cómo obtener shell usando nano.

imagen

Ejecute nuestro comando con sudo.

imagen

Ahora, siguiendo el orden de los comandos, seleccione la opción para leer el archivo.

imagen

Ahora la opción de ejecutar comandos.

imagen

E ingrese la última línea de la instrucción.

imagen

Y obtenemos el shell en nombre de la raíz.

imagen

Puedes unirte a nosotros en Telegram. Allí puede encontrar materiales interesantes, cursos combinados, así como software. 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.

All Articles