SwagShop | Hack The Box

En este tutorial voy a mostrar como obtuve la bandera root en la máquina SwagShop de Hack The Box. Esta propiedad se presenta como un desafío de nivel fácil.

SwagShop

21 de enero de 2025

Enumeración


Para comenzar voy a realizar un escaneo de puertos con nmap:

nmap

Los puertos que se encuentran abiertos son el 80 (http) y el 22 (ssh).

Voy a ingresar en la página web para ver de que se trata:

Web

Me encuentro con una tienda online que utiliza Magento, la cual es una plataforma de ecommerce de código abierto desarrollada en PHP y utilizada para la creación de tiendas en línea.

Me llamó la atención que al ingresar en el home de la página la url me devolvía: “swagshop.htb/index.php/”. Esa barra después de index.php me hizo pensar que podía llegar a contener algo dentro, con lo cuál realicé una búsqueda de directorios a esa dirección:

gobuster1

Entre todos los directorios hay uno que es admin, el cual se utiliza para loguearse como administrador:

admin login

Intenté buscar la versión de Magento utilizada pero no tuve suerte, lo único que hallé fue la fecha del copyright en el pie de la página, la cual data del 2014. Esto me hace pensar que la versión utilizada debería ser del 2014 o anterior.

Lo que voy a hacer es buscar algun exploit para Magento con la herramienta ‘searchsploit’:

searchsploit

De todos los exploits hay solo 2 que me llamaron la atención, el “CE < 1.9.0.1” y el “eCommerce – Remote Code Execution”, ambos contienen código de Python, el primero permite ejecutar código remoto luego de la autenticación y el segundo permite autenticarme.

Voy a probar una autenticación usando el exploit “eCommerce – Remote Code Execution”:

searchsploit -m 1

Al código lo tuve que limpiar un poco antes de utilizarlo, me quedaría algo así:

code autenticacion

Y ahora a ejecutarlo:

Autenticacion

¡Y funcionó! Me creo un usuario y contraseña de nombre “forme”. Así que ahora me voy a loguear con esas credenciales.

logueo

Explotación


Al ingresar como administrador puedo ver en el pie de página que la version de Magento es 1.9.0.0.

Tras una amplia investigación y varias pruebas y errores encontré una posible solución. Hay una configuración incorrecta dentro del admin de Magento, la cuál me permite obtener acceso al sistema.

Para explotar este error me voy a dirigir a la página de administrador de productos y le voy a dar al botón edit para ingresar en la página de edición de producto.

manage product

Dentro de la página de edit me dirijo a donde dice “custom Options” (en el cuadro del costado) y luego selecciono “Add New Option” y agrego la nueva opción que me va a permitir cargar un archivo .php:

file

Entonces ahora cuando quiera comprar ese producto me va a permitir ingresar el archivo .php que va a contener la reverseshell.

Lo que voy a hacer ahora es cargar el archivo con el exploit. Yo ya tengo el exploit para realizar la reverse Shell, pero ustedes lo pueden descargar desde el siguiente repositorio:

https://github.com/pentestmonkey/php-reverse-shell/blob/master/php-reverse-shell.php

Ahora voy a abrir un puerto de escucha con netcat y listo, ya estoy en condiciones de realizar la explotación.

Al ingresar en la página del producto veo que ya se encuentra la opción para cargar un archivo:

archivo

Selecciono el archivo y agrego el producto al carrito, con eso ya debería quedar guardado el archivo.

Ahora tengo que hallar la ruta del archivo para luego poder abrirlo. Para eso voy a realizar un nuevo análisis de directorios y así tratar de encontrar la ruta en la que se almacenan los archivos:

gobuster

Veo que se encuentra el directorio media, el cual es muy posible que contenga el archivo y así fue, el archivo estaba dentro del directorio media, mas precisamente en la siguiente ruta: http://swagshop.htb/media/custom_options/quote/p/h/.

Con solo hacer click ya obtengo la reverse Shell:

reverse shell

Si me dirijo al home veo que hay un usuario con el nombre “haris”, el cuál posee la bandera user.

Escalada de Privilegios


Ahora voy a ingresar el comando sudo –l para ver que permisos tenemos:

sudo -l

Por lo visto tengo permisos de root para ejecutar el editor de texto en cualquier archivo del directorio var/www/html.

Así que lo que puedo hacer es ingresar un comando bash dentro de cualquier archivo y así ganar acceso:

sudo vi

Al darle enter me aparecen un monton de líneas, simplemente presiono la tecla escape, dos puntos (:) e ingreso !bash.

root

Una vez obtengo root simplemente resta navegar hasta encontrar la bandera.

Espero que este tutorial te haya ayudado!