Navega hasta jewel.uploadvulns.thm y encuentra la flag en /var/www.
- Vamos a la página dada.
Si nos quedamos unos segundos parados, podemos ver que en realidad las imágenes se van moviendo, es decir, que es un carrusel que la página va cargando. Por desgracia, en el html de la página no pone desde dónde se están cargando estas imágenes. - Vamos a lanzar un escaneo contra la página.

- Buscaremos filtros JavaScript del lado del cliente.
Metiéndonos en el Debugger, podemos observar algunos scripts JavaScript. En concreto uno que se llama upload.jsnos da una pista de que está siendo llamado al intentar subir un archivo. Si revisamos el script, tiene hasta comentarios por lo que no hace ni falta saber JS. Está utilizando:- Un filtro de tamaño.
- Un filtro de Magic Numbers.
- Un filtro de extensión de archivo.
- Vamos a intentar subir nuestro archivo
reverseshell.php.- Primero vamos a modificar el archivo para que se ajuste a nuestra IP y puerto (
/usr/share/webshells/php/php-reverse-shell.php). Y ahora vamos a cambiarle la extensión a.jpg.
- Ahora modificamos los magic numbers con
hexeditor.
- Lo guardamos y lo subimos.
Vaya, parece que hemos sobrepasado del tirón los filtros del lado del cliente y del lado del servidor. Porque no olvidemos que acabamos de subir una reverse shell.
- Primero vamos a modificar el archivo para que se ajuste a nuestra IP y puerto (
- Si nos fijamos en el escaneo podemos ver unas cuantas páginas interesantes. La más interesante parece
/admin.
Parece una página que ejecuta código. - También hay otra que se llama
/content. Si combinamos esta información con lo que podíamos ver en el apartado de "Network" en la página del carrusel podemos ver el tipo de nombre que tienen las imágenes guardadas en este directorio.
Ademas nos dan un diccionario en la actividad que va desde AAA → ZZZ. - Vamos a lanzar un escaneo de archivos
.jpgcon dicho diccionario sobrejewel.uploadvulns.thm/content/.
- Basándonos en el tamaño de nuestra shell, podemos concretar que
YBW.jpges, de hecho, nuestra shell.
- Nos ponemos en escucha.

- Volvemos a la página de
/admine intentaremos ejecutar nuestra shell.
- Parece que no funciona.

- Hacemos más reconocimiento.
Parece que no usa PHP, sino Node.js, hay que cambiar de reverse shell. - Vamos a Reverse Shell Generator.

- Realizamos el proceso de modificación de extensión y magic numbers entero otra vez, subimos el archivo nuevo y realizamos otro escaneo con el diccionario proporcionado.
Basándonos en el escaneo anterior podemos determinar que el archivo que acabamos de subir es CDB.jpg. - Cargamos el archivo nuevo estando en escucha.
Tampoco ha funcionado.

- Vamos a probar con una shell de Payloads All The Things. Repetimos los pasos.

- Tampoco ha funcionado por lo que debe ser un tema de los magic numbers. Para evitar tener que ponerlos tenemos que usar Burp Suite para quitar ese JS que bloquea del lado del cliente.
- Abrimos Burp Suite y le damos a
Proxy → Proxy settings.
- Ahí le damos a la primera línea y a "Edit".

- Eliminamos
^js$|.
- Capturamos las peticiones de la página de subida. ES MUY IMPORTANTE RECARGAR LA CACHE (
Ctrl+Shift+R).
- Le damos a forward hasta que nos aparezca
upload.jsy le damos a intercept this request.
- Le damos a forward y recibiremos la respuesta.

- Eliminamos los checks.

- Le seguimos dando a forward hasta que cargue la página.

- Ahora vamos a subir la shell de node.js sin los magic numbers.

- Escanearemos el contenido de nuevo.
Sabemos que el archivo es PYL.jpg.
- Abrimos Burp Suite y le damos a
- Lo ejecutamos.

- Leemos la flag.

