29 jun. 2014

La seguridad en los métodos HTTP

Según describe el estándar HTTP 1.1, existen 28 métodos (o verbos) para la comunicación mediante el protocolo HTTP. Aunque muchos son desconocidos para la mayoría de usuarios (y administradores de sistemas) por no ser de uso habitual, existe un riesgo potencial si el administrador del servidor web no los tiene controlados. Veamos algunas técnicas comunes.

Entre los métodos más comunes, definidos en el RFC 2616, se encuentran:
  • GET: El método más común en la navegación web. Devuelve un código de respuesta y las cabeceras asociadas. Incluye el documento solicitado (habitualmente una página) en el cuerpo del mensaje.
  • HEAD: Idéntico al anterior, con la salvedad de que no devuelve el documento en el cuerpo de la respuesta. Se utiliza para extraer información sobre el documento solicitado o comprobar si existe sin necesidad de enviar y recibir el documento como tal.
  • POST: Pensado para publicar la información contenida en el cuerpo de la petición en el recurso donde se envía esa petición. La información que se publica y la forma de hacerlo depende completamente del servidor y el recurso. Hoy, el uso que se le da a este método es el de paso de parámetros de cliente a servidor (en muchas ocasiones para ficheros). La respuesta por parte del servidor es la misma que para una petición GET.
  • TRACE: Implementa la función de eco para los mensajes HTTP. El servidor responde en el cuerpo del mensaje con la misma petición que el cliente ha realizado. Se utiliza para comprobar que las peticiones son recibidas correctamente. Su finalidad es la de depuración.
  • OPTIONS: Este método presenta las opciones que el recurso o servidor dispone o requiere. De esto se puede obtener información como por ejemplo los métodos permitidos (en la cabecera ALLOW).
  • CONNECT: Utilizado para crear la comunicación con un proxy HTTP (SSL).
  • PUT: Mediante este método es posible almacenar el documento que se envía como cuerpo de la petición en el propio servidor (físicamente en disco). Si el recurso al que se hace referencia en la petición no existe se creará y si existe se sobrescribirá.
  • DELETE: Al igual que el método PUT, este verbo afecta directamente al recurso al que se hace la petición. Tiene la capacidad de eliminar el elemento y dejar al servidor sin ese recurso. 
El resto de verbos (menos usados) son PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK, UNLOCK (RFC 2518), VERSION-CONTROL, REPORT, CHECKOUT, CHECKIN, UNCHECKOUT, MKWORKSPACE, UPDATE, LABEL, MERGE, BASELINE-CONTROL, MKACTIVITY (RFC 3253), ORDERPATCH (RFC 3648) y ACL (RFC 3744).

PUT y DELETE

A primera vista, dos de estos métodos pueden resultar críticos en el entorno web donde se encuentren habilitados. Tanto PUT como DELETE permiten interactuar directamente con recursos legítimos del sistema. El primero para crearlos (por ejemplo una web shell para controlar el servidor, o fichero modificado para conseguir desfigurar alguna web legítima) y el segundo para eliminar archivos o activos de, por ejemplo, una compañía.

Encontrarse este tipo de configuración en servidores en producción no es demasiado común, pero aun hoy no es extraño localizarlos. Para demostrarlo, basta con hacer consultas avanzadas sobre los motores de búsqueda, o basarse en las respuestas a las peticiones OPTIONS.

Contenido completo en fuente original Eleven Path

0 comentarios:

Publicar un comentario

Gracias por dejar un comentario en Segu-Info
Si vas a dejar una consulta, procura tener habilitado tu perfil en Blogger o deja una forma de contacto.

Gracias por comentar!