Enumeración
Para comenzar voy a utilizar nmap para realizar un escaneo de puertos y servicios abiertos.

Los puertos abiertos son el 22 y el 80. Voy a ingresar en el puerto 80 (http) para ver con que me encuentro.

Por lo visto es una página para subir artículos relacionados a los perros, también tiene un login para miembros del sistema y por lo que veo utiliza Backdrop en su versión 1.
Al ejecutar gobuster se revelaron algunas rutas que pueden ser interesantes.

Al parecer podemos acceder a .git, lo que me abre la posibilidad a pensar que puede llegar a haber una filtración de datos.
Al dirigirme a http://dog.htb/.git/logs/refs/heads/master me encuentro con un commit:
0000000000000000000000000000000000000000 8204779c764abd4c9d8d95038b6d22b6a7515afa root <dog@dog.htb> 1738963331 +0000 commit (initial): todo: customize url aliases. reference:https://docs.backdropcms.org/documentation/url-aliases
Lo que voy a hacer ahora es descargar todo el repositorio git en mi máquina local para poder buscar algo de información que me pueda ayudar con el ataque.
Para descargar el repositorio voy a utilizar el siguiente comando:
python3 git_dumper.py http://dog.htb/.git/ ./git-dump
Una vez descargado el repositorio voy a navegar por las carpetas y archivos para hallar más información.
Al ingresar en "settings.php" me encuentro con una ruta SQL, la cuál me indica un usuario y contraseña.

También voy a realizar una búsqueda con grep para recopilar los mails disponibles en el repositorio:
grep -Ri ".htb"

Encontré 2 mails:
tiffany@dog.htb
dog@dog.htb
Ahora me voy a dirigir al login de la página para ver si con la contraseña que encontré y los usuarios puedo ingresar.
Usando el mail tiffany@dog.htb y la contraseña logré obtener acceso.

Explotación
Tras navegar y explorar las funcionalidades de la página encontré una sección donde puedo cargar módulos.

Al hacer clic en instalación manual me permite cargar un archivo manualmente.

Lo que voy a intentar hacer es pasarle un archivo .php que contenga un código malicioso el cual me permita realizar una reverse Shell.
Para poder cargar un archivo y que la aplicación lo tome como valido el mismo debe tener alguna de estas extensiones: tar tgz gz bz2. Por otro lado, también debe contener ciertos archivos con terminación .info, así que lo que voy a hacer es buscar en la página oficial de Backdrop algún modulo para descargar y dentro de ese modulo incluir el archivo malicioso.
El modulo que descargue fue el siguiente:

El modulo se descarga con terminación .zip, con lo cual hay que hacerle un unzip para poder editarlo.

Con el archivo ya descomprimido voy a pasarle el archivo php-reverseshell.php. Este archivo lo descargue desde el repositorio de github pentestmonkey (https://github.com/pentestmonkey/php-reverse-shell/blob/master/php-reverse-shell.php).
Una vez cargado el archivo tengo que modificar su terminación para que Backdrop me permita subirlo.

Ahora simplemente resta abrir un puerto de escucha con netcat. (A tener en cuenta que en el archivo php-reverse-shell.php es necesario modificar la IP y el puerto según nuestra IP y puerto de escucha que elijamos para netcat.
Ahora si, cargamos el archivo en la aplicación y le damos a "install".

Si todo salió bien debería recibir el siguiente mensaje:

Una vez cargado el modulo es necesario dirigirnos a el directorio donde se almacenan los módulos, tal y como me mostro los resultados de “gobuster” los modulos se almacenan en /modules:

Ahí vemos el modulo “updated” que cargamos, al ingresar puedo ver el archivo malicioso.

Simplemente resta darle clic al archivo y automáticamente en la terminal donde ejecuto netcat se va a iniciar la Shell.

Escalada de Privilegios
Tras ir a home y enumerar los usuarios veo que hay 2 usuarios, dentro del usuario Johncauseck se encuentra la flag de users pero no tengo permiso de lectura.

Tras seguir navegando y no encontrar nada se me ocurre tratar de ingresar con el usuario johncusack mediante SSH reutilizando la contraseña que había encontrado.

Al listar se encuentra la bandera user.txt.
El siguiente paso es ejecutar el comando sudo –l para ver en qué archivos tenemos permisos de sudo:

Para el archivo bee tengo permisos para ejecutar cualquier comando.
Averiguando un poco sobre el archivo bee encontré que es una herramienta de Bakdrop que sirve para interactuar con el CMS mediante la ejecución de comandos.
Voy a ejecutar el comando sudo usr/local/bin/bee help, para ver que comandos puedo ejecutar.

Por lo que veo puedo ejecutar el comando eval, este comando me permite ejecutar código PHP arbitrario como root.
Lo que voy a hacer es ejecutar el comando ‘system(“/bin/bash”);’ el cual me va a permitir crear una Shell como root.
Es importante ejecutarlo dentro de la raíz donde está instalado backdrop, sino arroja un error. En este caso la raíz es var/www/html:

Ahora simplemente resta navegar hasta el archivo root para encontrar la bandera.