- Dificultad:
easy - Tiempo aprox.
~1h - Datos Iniciales:
10.10.10.37
Nmap Scan#
Tras realizar un escaneo nmap completo, se encuentran los siguientes puertos abiertos:
| |
Puertos abiertos:
21/TCP(FTP)- Un anonymous login puede funcionar, conviene probarlo.
- Por otro lado, puede ser que la versión
ProFTPD 1.3.5atenga alguna vulnerabilidad.
22/TCP(SSH): Lo común en máquinas HTB.80/TCP(HTTP): Se menciona algo sobreblocky.htb25565/TCP(Minecraft): Un servidor de Minecraft 1.11.2, para mirar más adelante.
Análisis Inicial#
FTP#
En primer lugar pruebo a conectarme como anonymous:
| |
Como se ve, el login anónimo no está disponible. Habrá que seguir mirando.
Nota: Por qué ha fallado?
Porque el login anónimo probablemente esté desactivado en los ajustes del servidor de ProFTPD. ProFTPD no permite accesos anónimos por defecto.
Tras buscar la versión ProFTPD 1.3.5a, se ve que puede tener una potencial vulnerabilidad (CVE-2015-3306), para la que hay exploit publicados, probamos con uno de ellos.
| |
Nota: Por qué ha fallado?
Como dice el propio readme del exploit, éste hace uso del módulo de ProFTPD mod_copy, un módulo que permite copiar archivos y directorios directamente en el servidor sin tener que descargarlos al cliente y volverlos a subir. Es probable que, simplemente, este módulo estuviese deshabilitado en este caso, y por eso no se haye podido explotar la vulnerabilidad.
HTTP#
Tras copiar a /etc/hosts una nueva resolución DNS para blocky.htb:
| |
entro en la página web.
Ahí puede verse una única publicación del usuario notch “We are currently developing a wiki system for the server and a core plugin to track player stats and stuff. Lots of great stuff planned for the future”
De aquí son revelantes dos cosas:
- Un sistema wiki, del que quizás podemos sacar info.
- Un plugin para guardar estadísticas de usuarios, de donde sí podría sacarse info relevante. (nombres de usuario, etc.)
Tras esto trato de hacer fuzzing de directorios con gobuster:
| |
Pruebo a entrar a la Wiki (http://blocky.htb/wiki/): “Under Construction Please check back later! We will start publishing wiki articles after we have finished the main server plugin! The new core plugin will store your playtime and other information in our database, so you can see your own stats!”
Aquí descubrimos info sobre una base de datos, y sobre que quizás el plugin es más relevante todavía. Entramos en plugins:
| |
Encontramos
griefprevention-1.11.2-3.1.1.298.jar: Un plugin de moderación automático.BlockyCore.jar: El plugin en el que al parecer se está trabajando
Análisis de Plugins#
Archivos .jar#
Esto no es relevante para la resolución, pero en su momento no sabía qué era un archivo .jar, así que aquí una explicación.
Los archivos .jar (Java ARchive) son un formato de empaquetado basado en ZIP diseñado para juntar múltiples archivos relacionados con Java en un único comprimido.
- Los
.jarson completamente independientes de plataforma. Una vez creado, un.jarpuede ejecutarse en cualquier SO que tenga una JVM compatible. - Una JVM (Java VM) es una máquina virtual que actúa como un entorno de ejecución capaz de interpretar y ejecutar instrucciones en bytecode Java (archivos
.class). - El bytecode es un código de medio nivel generado cuando se compila un archivo
.java. No es código nativo de ninguna plataforma (Correspondiente a alguna arquitectura de CPU o sistema operativo) específica, sino un código intermedio que solo la JVM entiende. Este bytecode se almacena en archivos.classque luego la JVM interpreta y ejecuta.
En resumen:
.jar= ZIPs que almacenan archivos relacionados con javaJVM= Máquina virtual de java que ejecuta archivos en bytecode.java= Archivos de código fuente en java.class= Archivos, compilados en bytecode desde.java, que la JVM ejecuta.
Blockycore.jar#
Tras abrir el .jar para ver su interior, encontramos un archivo BlockyCore.class, que podemos decompilar usando la herramienta CFR:
| |
Y usando la contraseña encontrada entramos a FTP:
| |
Aquí encontramos ya el flag de usuario user.txt.
En el directorio minecraft encontramos todo lo relacionado con el servidor: IPs baneadas, whitelist, configs, registros…
- En un directorio más profundo, de
Nuvotifier(que resulta ser un plugin para votaciones), encuentro un archivoconfig.yamlque muestra un listener enlocalhost:8192y un token, que podría ser un vector de escalada. - Encuentro también varias claves para
Nuvotifier,public.keyyprivate.key…
Login inicial y escalada de privilegios.#
Tras un rato mirando el directorio de FTP y tras haber probado a iniciar sesión con las claves de Nuvotifier por ssh, sigo sin encontrar una contraseña válida, hasta que pruebo a reutilizar la anterior (del .class decompilado).
| |
Y probamos a ver qué permisos de sudo tiene el usuario notch:
| |
Desde aquí vemos que tenemos permisos sudo completos:
| |
Así que simplemente usamos sudo para ser root:
| |
Y lo tenemos.




