Ataques de manipulación de URL

Noviembre 2017

Introducción a las URL

La URL (Localizador Uniforme de Recursos) de una aplicación Web es el vector que permite indicar el recurso solicitado. Es una cadena de caracteres ASCII imprimibles dividida en cinco partes:

  • El nombre del protocolo: es, en cierta manera, el lenguaje que se usa para comunicarse en la red. El protocolo más usado es el HTTP (Protocolo de transferencia de hipertexto), que permite el intercambio de páginas Web en formato HTML. También pueden usarse otros protocolos (FTP, News, Mailto, etcétera).
  • Nombre de usuario y contraseña: permite especificar los parámetros requeridos para acceder a un servidor seguro. No se recomienda esta opción ya que la contraseña circula en la URL sin previa codificación.
  • El nombre del servidor: es el nombre de dominio de un ordenador que aloja el recurso solicitado. Tenga en cuenta que es posible usar la dirección IP del servidor.
  • El número de puerto: es el número asociado a un servicio que le indica al servidor qué tipo de recurso se está solicitando. El puerto que se vincula con el protocolo en forma predeterminada es el número 80. Cuando el servicio Web del servidor se asocia con este puerto, puede o no especificarse este número.
  • La ruta de acceso al recurso: esta última parte le indica al servidor dónde se encuentra el recurso, que generalmente es la ubicación (directorio) y el nombre del archivo solicitado.

Una URL tiene la siguiente estructura:

Protocolo Contraseña (opcional) Nombre del servidor Puerto
(opcional si es 80)
Ruta
http:// usuario:contraseña@ es.kioskea.net :80 /glossair/glossair.php3

La URL permite enviar parámetros al servidor colocando un signo de interrogación después del nombre del archivo y luego los datos en formato ASCII. Por lo tanto, una URL es una cadena de caracteres con el siguiente formato:

http://es.kioskea.net/forum/?cat=1&page=2

Manipulación de URL

Al manipular ciertas partes de una URL, un hacker puede hacer que un servidor Web le permita acceder a páginas Web a las que supuestamente no tenía acceso.

En sitios Web dinámicos, los parámetros generalmente se transfieren a través de la URL de la siguiente manera:

http://target/forum/?cat=2

La página Web crea automáticamente los datos contenidos en la URL y, al navegar normalmente, el usuario simplemente hace clic en el vínculo propuesto por el sitio. Si un usuario modifica el parámetro manualmente, puede probar diferentes valores, por ejemplo:

http://target/forum/?cat=6

Si el diseñador no ha previsto esta posibilidad, es posible que el hacker pueda tener acceso a un área que, en general, está protegida.

Además, puede hacer que la página Web procese un caso imprevisto, por ejemplo:

http://target/forum/?cat=***********
En el ejemplo anterior, si el diseñador de la página Web no ha previsto un caso donde los datos no estén representados por un número, la página Web puede entrar en un estado no previsto y brindar información en un mensaje de error.

Prueba y error

Posiblemente, un hacker pueda probar directorios y extensiones de archivos al azar para encontrar información importante. Algunos ejemplos clásicos:

  • Búsqueda de directorios para poder administrar el sitio:
    http://target/admin/ http://target/admin.cgi
  • Búsqueda de una secuencia de comandos para revelar información sobre el sistema remoto:
    http://target/phpinfo.php3
  • Búsqueda de copias de seguridad. Generalmente se usa la extensión .bak, la cual no es interpretada por los servidores de forma predeterminada, por lo que podría visualizarse una secuencia de comandos:
    http://target/.bak
  • Búsqueda de archivos ocultos en el sistema remoto. En los sistemas UNIX, se puede acceder a los archivos creados por el sistema a través de la Web siempre que el directorio raíz del página Web corresponda al directorio de un usuario:
    http://target/.bash_history http://target/.htaccess

Cruce de directorio

El ataque denominado cruce de directorio o cruce de ruta modifica la estructura de árbol de la ruta en la URL para hacer que el servidor tenga acceso a partes no autorizadas del sitio.

Un ejemplo típico es cuado el usuario se ve obligado a retroceder en la estructura de árbol, especialmente cuando no tiene acceso al recurso:

http://target/base/test/ascii.php3 http://target/base/test/ http://target/base/

En servidores vulnerables, el atacante simplemente puede retroceder por la ruta con varias cadenas de este tipo "../":

http://target/../../../../directory/file

Los ataques más avanzados codifican ciertos caracteres:

  • ya sea con la forma de codificación URL:
    http://target/..%2F..%2F..%2Fdirectory/file
  • o con la de notación Unicode:
    http://target/..%u2216..%u2216directory/file

Muchos sitios dinámicos transfieren los nombres de las páginas que se visualizarán como parámetros en una forma similar a la siguiente:

http://target/cgi-bin/script.cgi?url=index.htm

Si no se realizan verificaciones, un hacker pude modificar la URL de forma manual para solicitar acceso a un recurso de página Web al que no tiene acceso directo, por ejemplo:

http://target/cgi-bin/script.cgi?url=script.cgi

Contramedidas

Para proteger un servidor Web contra manipulaciones de URL, es necesario supervisar las vulnerabilidades y aplicar las actualizaciones que regularmente provee el editor del servidor Web.

Además, una configuración detallada del servidor Web impide que los usuarios naveguen por páginas a las que se supone que no tienen acceso. Por lo tanto, se debe configurar un servidor Web según se describe a continuación:

  • Impida la navegación por páginas que estén bajo la raíz del página Web (mecanismo chroot);
  • Deshabilite la visualización de los archivos de un directorio que no contiene un archivo índice ("Navegación de directorio");
  • Elimine directorios y archivos inservibles (incluso los ocultos);
  • Asegúrese de que el servidor proteja el acceso a directorios que contienen datos importantes;
  • Elimine las opciones de configuración innecesarias;
  • Asegúrese de que el servidor interprete las páginas dinámicas con precisión, incluso archivos de copias de seguridad (.bak);
  • Elimine los intérpretes de secuencias de comandos innecesarios;
  • Impida la visualización HTTP en páginas HTTPS accesibles.

URL manipulation attacks
URL manipulation attacks
Angriffe per Manipulation der URL
Angriffe per Manipulation der URL
Attaques par manipulation d'URL
Attaques par manipulation d'URL
Attacchi da manipolazione d'URL
Attacchi da manipolazione d'URL
Ataques por manipulação de URL
Ataques por manipulação de URL
Última actualización: 16 de octubre de 2008 a las 15:43 por Jeff.
El documento «Ataques de manipulación de URL» se encuentra disponible bajo una licencia Creative Commons. Puedes copiarlo o modificarlo libremente. No olvides citar a CCM (es.ccm.net) como tu fuente de información.