ConvertMyVideo es una maquina de TryHackMe, encontramos que Youtube-dl esta siendo ejecutado en la pagina, realizamos Command Injection donde obtuvimos credenciales de acceso para el panel de administracion para luego ejecutar shell inversa. Finalmente ejecutamos una shell inversa con un cronjob para escalar privilegios.
Room
Titulo | ConvertMyVideo |
---|---|
Descripción | My Script to convert videos to MP3 is super secure |
Puntos | 320 |
Dificultad | Media |
Maker |
NMAP
Escaneo de puertos tcp, nmap nos muestra el puerto http (80) y el puerto ssh (22) abiertos.
|
|
HTTP
Encontramos una pagina sencilla en el puerto 80, en la que nos muestra un formulario en donde nos pide un ID de un video de YouTube.
GOBUSTER
Utilizamos gobuster para busqueda de directorios y archivos.
|
|
Dentro del codigo fuente de la pagina encontramos el codigo de envio del ID en Javascript, el cual envia la URL de youtube añadiendole el ID.
Utilizamos Burpsuite para capturar el envio de el ID, le agregamos un ID erroneo y nos da una respuesta en el que nos devuelve el error que se generó.
COMMAND INJECTION
Eliminamos la URL y enviamos algo diferente, y vemos que el mensaje de error contiene el nombre de una herramienta que se utiliza para descargar videos de YouTube - youtube-dl.
Para verificar que esa herramienta esta siendo utilizada con la pagina, enviamos la flag --help
para confirmar que es esa herramienta, y nos devolvió todas las opciones.
Al parecer la pagina esta utilizando youtube-dl para pasarle la url con el ID que ingresamos, mediante la ejecucion de la herramienta a traves de consola. Intentamos romper este comando y sus parametros, utilizamos command injection, con |
y el comando id
más el separador ;
(punto y coma) esto para separar y no ejecutar los parametros adicionales. Logramos ejecutar el comando.
Ahora que podemos ejecutar comandos, comenzamos a enumerar los archivos que estan en la maquina, vemos que la direccion donde estamos es en /var/www/html
y los archivos que se encuentran en esa direccion.
Logramos obtener el codigo fuente de index.php utilizando cat{$IFS}index.php
(utilizamos {$IFS}
para agregar espacios).
Vemos en el codigo fuente que ejecuta el comando youtube-dl con sus parametros y en medio pasa la URL que es ingresada por el usuario.
Vemos la carpeta de admin, la cual contiene un index.php
y flag.txt
.
Intentamos realizar cat a la flag.txt y obtenemos la primera.
Enumeramos la carpeta nuevamente con mas profundidad y econtramos el archivo .htaccess
.
Ejecucion de Comando
|
|
El archivo contiene lo siguiente y al parecer hay un archivo .htpasswd
en la carpeta admin
.
|
|
Hacemos cat al archivo y logramos obtener un usuario y contraseña encriptada.
Utilizamos john para obtener la contraseña.
Ingresamos a la pagina utilizando el panel de /admin
y vemos un boton que al presionarlo realiza la ejecucion de un comando.
Vemos que podemos ejecutar comandos:
USER - WWW-DATA
Utilizamos python para ejecutar nuestra shell inversa y ponemos a la escucha nuestro netcat.
|
|
Logramos obtener una shell con usuario www-data
PRIVILEGE ESCALATION
Mediante una enumeracion basica de binarios no encontramos alguno que nos puediera ayudar, utilizamos pspy
para ver si existe algun cronjob en la maquina. Encontramos que se ejecuta un cronjob el cual ejecuta el archivo clean.sh
que se encuentra en /var/www/html/tmp/
.
Agregamos una shell inversa a este archivo y pusimos a la escucha netcat, logramos obtener una shell con usuario root y nuestra flag root.txt.