Haremos los reconocimientos con nmap y encontramos estos puertos abiertos:

Si entramos a la web por el puerto 80, nos encontramos con que tenemos esta dirección, por tanto lo añadimos dentro del /etc/hosts:

Y ahora ya nos carga la web:

Si hacemos fuzzing nos encontramos con estos directorios, donde nos encontramos con el código 302, lo cual significa redirección:

Si entramos en el directorio web de admin, vemos que nos aplica un redirect a login:

Y en este caso si probamos en poner una comilla o algo para probar si se acontecede una SQL injection, vemos que se queda bloqueada, por lo podemos intuir que hay algo de esto:

Por tanto vamos a buscar payloads válidos para esta inyección SQL dentro del repositorio de payloadsallthethings:

Y tenemos un apartado de NoSQL Injection:

Y nos muestran estas instrucciones, donde la data puede ser tramitada por json o no:

Por tanto vamos a enviar una petición enviando la data por JSON, donde tenemos que especificar JSON en el content type; y vemos que a priori no funciona:

Pero lo interesante es que si en el valor de username o password le colamos alguna comilla, estamos forzando la ejecución de un comportamiento diferente:

E incluso podemos ver un usuario:

Y tras varios intentos, encontramos esta inyección como válida, sin necesidad de tramitar la petición por JSON, en las instrucciones que encontramos por internet:

Y probando esta inyección con el usuario admin ya estamos dentro:

Dentro de esta web, tenemos un buscador de usuarios, donde si ponemos un usuario válido (como el usuario admin), vemos que nos genera un reporte:

Y este es el reporte que nos genera:

No obstante, dentro de este panel también podemos probar la misma noSQL injection de antes y vemos que también funciona:

E incluso accedemos a otro usuario llamado josh:

Vamos a ver de que tipo de hash se trata utilizando la herramienta hash-identifier, donde vemos que se trata de md5:

Y ahora en este punto podríamos usar hashcat u otra herramienta, pero también podemos hacer el crackeo de forma online en una web que se llama crackstation, donde vemos que funciona correctamente, donde la contraseña es remembermethisway:

Y ahora en este punto podemos quedarnos estancados, por tanto tenemos que seguir con la enumeración; y esta vez para encontrar subdominios en la página principal de shoppy.htb, por lo que probamos en hacer una búsqueda con gobuster pero no encontramos nada:

Por tanto, tras probar varios diccionarios, nos encontramos con que con el diccionadio de bitquark funciona, el cual podemos encontrar en este repositorio:

https://github.com/danielmiessler/SecLists/blob/master/Discovery/DNS/bitquark-subdomains-top100000.txt

Por tanto nos lo descargamos y probamos este:

Probamos en hacer la búsqueda de subdominios con gobuster: