EN QUE CONSISTE UN ATAQUE DE
DIRECTORIO TRANSVERSAL
Cuando se trata de seguridad de sitios webs, la mayoría de
las personas pensarían en como protegerse de un SQL injectión , o de un cross
site scripting , sin embargo hay otros tipos de vulnerabilidades que se suelen
pasar por alto pese a que pueden llegar a generar un impacto igualmente
negativo. En este caso hablaremos de uno de ellos, el cual se conoce como “Ataque
de directorio transversal” o ataque “../”, explicando de una forma muy sencilla
y básica de en que consiste esta vulnerabilidad sin necesidad de ahondar técnicamente
en ello ya que el objetivo de esta post es únicamente explicar en que consiste
esta vulnerabilidad.
Para entender en que consiste un ataque de directorio
transversal primero debemos comprender al menos de forma básica el como se
constituye un sitio web común.
Debemos primero recordar de un sitio web no es mas que una
hoja o un grupo de hojas virtuales hechas en código HTTML, enlazadas entre si
que para poder estar disponibles en la web, deben si o si estar alojada en un
servidor (que no es otra cosa mas que otro ordenador). Este ordenador que aloja
la web al igual que cualquier otro tiene un disco duro con directorios que a su
vez contiene carpetas contenedoras de archivos. En una de estas carpetas se encuentra el
gestor del servidor y la carpeta especifica que contendrá las hojas html que
conforman el sitio web.
Otra cosa que debemos entender es que estos directorios
permiten la navegación a través de comandos. De la misma forma en que navegamos
desde una terminal en sistemas tipo Unix
o desde una CMD desde sistemas Windows, se puede navegar en los directorios de
una sitio web, esto es debido a que independiente mente del punto de entrada de
los comandos, eso no cambiara el hecho de que se trata del mismo disco duro con
ficheros.
En este caso el comando clave es “..”. Este comando permite
retroceder un directorio atrás y si lo combina con con un “\” en sistemas Windows
o un “/” en sistemas Unix, podremos retroceder la cantidad de directorios que
deseemos Ejemplo:
Si tenemos un directorio de tipo “ raiz/page1/page2/page3”,
en este si quisiéramos llegar al directorios “raíz”, solo tendríamos que
introducir “../../../”.
El problema ocurre cuando tenemos una web y una persona
malintencionada decide saltar ese directorio raíz y avanza hacia directorios
incorrectamente protegidos.
Supongamos ahora que tenemos una web “web/page1/page2.php?item=img.png”
disponible en la red alojada en una carpeta “main” que a su vez esta alojada en
la carpeta “project”, dentro de esta carpeta “project ” a su vez esta la
carpeta /etc/passwords que contiene contraseñas personales del administrador de
la web. En este caso si un usuario malintencionado hallara la vulnerabilidad y
localizara el parámetro que involucra alguna relación con archivos, únicamente tendria que hacer la siguiente operación
para alcanzar la carpeta main y avanzar hacia el directorio con las contraseñas:
“main/web/page1/page2.php?item=../../../../etc/passwords”
En un sitio web correctamente diseñado y administrado esto
no debería ser posible y debería enviar al atacante a un error de cliente 404.
Sin embargo como en cualquier otra vulnerabilidad estos errores usualmente se dan
por problemas de filtración en el código backend, fronted o en la gestión del
sitio mismo. Esta vulnerabilidad se puede explotar no solo a través de la URL
si no a travez de otros puntos de entrada como cookies, pero ya en un próximo post
abordaremos este tema y como proteger la web de este tipo de ataques.
ARTICUL0