Lathack

Vulnerabilidad en Carga de Archivos

Vulnerabilidad en Carga de Archivos

Introducción

Un detalle importante dentro de algunos sitios web, es que poseen la opción de subir archivos. Es decir, el cliente puede subir imágenes (con extensión .jpg .jpeg .png ,etc.), incluso videos (por ejemplo, extensión .mp4 ). Ahora bien ¿Podremos subir ejecutables, cuyas extensiones puedan ser .php, .py, .exe u otro? En caso de ser así, esto puede representar una vulnerabilidad en la carga de archivos que nos permitirá generar un backdoor o Reverse shell en el servidor, y así poder lograr una conexión remota y tener acceso a dicho sistema.

A continuación, veremos esta vulnerabilidad en tres niveles para ir entendiéndola paso a paso, usando como máquina víctima a DVWA. Si desea saber como realizar su instalación puede y usarla internamente, puede ver el procedimiento en el artículo de nuestro blog. En nuestro caso, la usaremos como una máquina externa a atacar.

Nivel Bajo

Primero tengamos en cuenta que la dirección IP de nuestra máquina atacante kali es 192.168.100.189 y, la de nuestra máquina víctima (en este caso sería la dirección de nuestro sitio web a atacar) 192.168.100.191. Luego, para la vulnerabilidad en carga de archivos, usaremos la herramienta weevely el cual nos permitirá generar un backdoor desde nuestra máquina kali a través de la siguiente sintaxis:

#weevely generate (contraseña) [nombre de archivo].

Vulnerabilidad en Carga de Archivos

Como podemos ver, hemos creado el archivo “backdoor.php” y la contraseña 1234. Por lo tanto, volvemos a nuestro sitio web DVWA y le damos click en “Browse..” donde tendremos que buscar dicho archivo creado. Luego damos click en “upload” y lo subimos.

Vemos que el archivo se subió exitosamente. Y lo primero que nos avisa es “../../” con esto suponemos que nuestro archivo se encuentra dos directorios por delante del dominio o nombre del sitio web. Es decir, que el path o ruta hacia dicho archivo sería 192.168.100.191/dvwa/hackable/uploads/backdoor.php.

En caso de que dicha ruta nos lleve a una página en blanco, significa que ha funcionado con éxito nuestra infiltración de archivo php. Teniendo en cuenta lo anterior, volvemos a nuestro Shell de kali para poder conectarnos al backdoor. Lo cual, haremos de la siguiente manera:

Vulnerabilidad en Carga de Archivos

Como se aprecia en dicha imagen, hemos tenido acceso al servidor a través de nuestro backdoor. Y podemos confirmar esto a través del comando id, ya que nos devuelve el número de usuario y grupo al que pertenecemos (www-data). También vemos el nombre de usuario al cual nos hemos conectado “www-data

Nivel Medio

En este apartado estaremos usando el proxy de la herramienta Burpsuit para la vulnerabilidad en carga de archivos. La cual, nos ayudará a ver los Request del lado del cliente y, los Response del lado del servidor. Recordemos que para poder usar Burpsuit correctamente debemos configurar nuestro navegador con la dirección ip y puerto correspondiente como se muestra a continuación:

Desde nuestro navegador (en nuestro caso Firefox) nos dirigimos a las configuraciones, luego nos vamos settings (preferencias), dentro de “General” nos dirigimos a network settings y una vez dentro, procederemos a configurar nuestro proxy de la siguiente forma:

Usando BurpSuit

Como vemos, la dirección IP es la que pertenece a nuestro localhost, y el puerto que hemos elegido es el 8080. A modo de ejemplo, observemos cómo funciona este proxy. Dentro de Burpsuit, en la sección Proxy, debemos colocarlo en “Intercept on” como se muestra a continuación:

Una vez hecho esto, lo probaremos haciendo click en la pestaña home de nuestro sitio DVWA. Con lo que se nos aparecerá el paquete que deseamos enviar al servidor. Es decir, nos mostrará el Request o petición por parte del cliente.

Vulnerabilidad en Carga de Archivos

Podemos observar que la página se quedará cargando hasta que aceptemos dicha petición. Para esto, hacemos click en el botón “Forward” de Bupsuit. Ahora bien, intentaremos volver a subir nuestro archivo backdoor.php para verificar la seguridad del sitio web.

Como vemos nos aparece el siguiente mensaje. Esto, a simple vista, significa que no podemos subir archivos ejecutables como es el caso de la extensión .php. Sin embargo, si la regla aquí es que solo podamos subir imágenes por ejemplo extensión .jpg, entonces haremos lo siguiente:

Primero procederemos a cambiar el nombre de nuestro archivo “backdoor.php” por “backdoor-medium.jpg”. Lo que hemos hecho es cambiar el nombre (para no confundirlo con el anterior) y la extensión para lograr pasar dicho archivo en un formato de imagen.

Vulnerabilidad en Carga de Archivos

Podemos ver en detalle a Content type: Image jpeg y el filename: “backdoor-medium.jpg”. Por lo tanto, como queremos generar un backdoor en el servidor, lo que haremos será cambiar la extensión .jpg por la extensión .php en el proxy. Con lo que nos quedaría backdoor.php en dicho paquete.

Luego, para enviarlo le damos a “Forward”.

Vemos que la ruta es la misma que la anterior. Por lo tanto, procederemos a conectarnos a dicha puerta trasera a través de nuestro kali:

Vulnerabilidad en Carga de Archivos

Nivel Alto

En este nivel, Intentaremos atacar la vulnerabilidad en carga de archivos como hemos hecho anteriormente, usando el proxy de BurpSuit. Primero, subiremos el archivo backdoor-medium.jpg y lo cambiaremos por backdoor-medium.php.

Como vemos, por más que cambiemos la extensión .jpg por .php en el paquete, no nos permite subir dicho archivo. Esto se debe a que los valores Content type y filename hacen “Match”, es decir, la extensión del nombre de archivo concuerda con el tipo de archivo a subir. Por lo tanto, al cambiar la extensión, el servidor lo interpreta como algo ilógico y no permite subir dicho archivo. Sin embargo, basándonos en esta lógica del match, es donde reside su vulnerabilidad. Haremos lo siguiente:

Primero volveremos a cambiar el nombre del archivo a “backdoor-high” (para evitar confusiones) y con respecto a la extensión lo modificaremos de la siguiente forma: backdoor-high.php.jpg. Entonces, nuestro archivo sería “backdoor-high.php” y su extensión .jpg.

Vulnerabilidad en Carga de Archivos

Y como podemos observar, nuestro backdoor fue subido con éxito.

Por último, intentemos conectarnos desde nuestra máquina kali y verificar el acceso al backdoor

Vulnerabilidad en Carga de Archivos

¿Cómo protegerse de esta Vulnerabilidad?

Veamos la descripción del Nivel Imposible:

Esto verificará todo, desde todos los niveles hasta el momento, y luego volverá a codificar la imagen. Es decir, se creará una nueva imagen que eliminará cualquier código ’sin imagen’ (Incluido los metadatos).”

Por lo tanto, para evitar la vulnerabilidad en carga de archivos, es importante tener en cuenta tomar ciertas medidas en seguridad. Ejemplo de esto son el siguiente códigos y descripciones:

Vulnerabilidad en Carga de Archivos

En base a lo que hemos visto, podríamos sacar las siguientes conclusiones:

  • No debemos dejar que los usuarios suban archivos ejecutables.

  • En caso de querer que los usuarios puedan subir dichos archivos, antes de llegar al servidor debemos verificar que clase de archivos son, cuál es su fin y funcionamiento.

  • Verificar la distinción entre Mayúsculas y Minúsculas. Hay que tener en cuenta que cualquiera puede omitir la verificación de seguridad haciendo que las extensiones de archivo sean una combinación de caracteres en minúsculas y mayúsculas (KeySensitive) y así ganar acceso al sistema. Por ejemplo: .Sh, .XmL, .phP, etc.

  • Verificar el contenido de una imagen o archivo multimedia. Recordemos que en estos casos la estenografía es muy usada para “confundir” un sistema o usuario. El atacante puede omitir dichas comprobaciones de seguridad al incrustar código PHP dentro de la sección de comentarios del archivo JPG y luego cargar el archivo con la extensión .php, esto puede fácilmente pasar por alto las comprobaciones mencionadas anteriormente.

Estas reglas nos pueden servir, no solo para evitar la vulnerabilidad en carga de archivos, sino también en la sanitización en diferentes entradas (o formularios) de un sitio web. Por lo tanto, es crucial saber cómo funcionan ciertas tecnologías o herramientas de un sitio web.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

5 − 2 =

Lathack
Scroll al inicio