Jump to content
  • Entries

    16114
  • Comments

    7952
  • Views

    863107744

Contributors to this blog

  • HireHackking 16114

About this blog

Hacking techniques include penetration testing, network security, reverse cracking, malware analysis, vulnerability exploitation, encryption cracking, social engineering, etc., used to identify and fix security flaws in systems.

En este post vamos a estar resolviendo el laboratorio de PortSwigger: “Web shell upload via obfuscated file extension”.

image 101

Para resolver el laboratorio tenemos que subir un archivo PHP que lea y nos muestre el contenido del archivo /home/carlos/secret. Ya que para demostrar que hemos completado el laboratorio, deberemos introducir el contenido de este archivo.

Además, el servidor está configurado para que no acepte ciertas extensiones.

En este caso, el propio laboratorio nos proporciona una cuenta para iniciar sesión, por lo que vamos a hacerlo:

image 102
image 103

Una vez hemos iniciado sesión, nos encontramos con el perfil de la cuenta:

image 104

Una vez estamos en el perfil, como vemos, tenemos un campo de subida de archivos para actualizar el avatar de nuestra cuenta. Vamos a intentar aprovecharnos de esto para subir el siguiente archivo:

image 105

Antes que nada, vamos a preparar el burp suite para que intercepte las peticiones:

image 106
image 107

Una vez tenemos esta parte configurada, subimos el archivo:

image 108
image 109
image 110

Burp suite interceptará la petición de subida:

image 111

Para tratar mejor con el proceso de subida de archivos, vamos a pasar la petición al repeater pulsando Ctrl R:

image 112

Como vemos, en este caso, al darle al Send, vemos en la respuesta del servidor que solo los archivos JPG y PNG están permitidos.

Por lo que la idea va a ser introducir una doble extensión junto a un null byte para ver si podemos bypasear esta restricción:

image 113
image 114

Al enviar la petición, vemos como en la respuesta, el archivo se ha subido, no solo eso, sino que gracias al null byte, nos hemos desecho de la segunda extensión que habiamos puesto (.jpg). Por lo que con esto hecho, vamos a ver la respuesta en el navegador:

image 115
image 116
image 117
image 118

Ya no vamos a usar burp suite, por lo que desactivamos el proxy:

image 119

Una vez desactivado, nos volvemos a nuestro perfil:

image 120
image 121

Como vemos, el avatar se ha establecido, sin embargo, parece que ha ocurrido un fallo al cargar la imagen. Probablemente porque intenta cargar nuestro archivo PHP como si fuese una imagen y por eso falla. Vamos a acceder a la ruta directa de “la imagen” dandole click derecho:

image 122
image 123

Parece que nos da un problema, sin embargo, si nos fijamos en la URL, se nos intenta cargar el archivo readSecret.php%00.jpg, cuando realmente, el archivo resultante fue readSecret.php. Por lo que cambiamos la URL para acceder a este último archivo:

image 124

Y de esta forma, accedemos al código PHP y se interpreta, consiguiendo así que leamos el archivo secret.

Habiéndolo leído, ya simplemente enviamos la solución:

image 125
image 126

Y de esta forma, completamos el laboratorio:

image 127
image 128