0% encontró este documento útil (0 votos)
88 vistas3 páginas

Servicios Web RESTful: Seguridad y Pruebas

Este documento describe los servicios web RESTful, que utilizan solicitudes HTTP para comunicarse entre máquinas en lugar de protocolos complejos como SOAP. Las propiedades clave de los servicios RESTful incluyen el uso de métodos HTTP, parámetros estructurados como JSON o XML, autenticación personalizada y falta de documentación formal. El documento también discute los desafíos para probar la seguridad de estos servicios, como determinar la superficie de ataque y optimizar el difuminado de parámetros.

Cargado por

Juan
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
88 vistas3 páginas

Servicios Web RESTful: Seguridad y Pruebas

Este documento describe los servicios web RESTful, que utilizan solicitudes HTTP para comunicarse entre máquinas en lugar de protocolos complejos como SOAP. Las propiedades clave de los servicios RESTful incluyen el uso de métodos HTTP, parámetros estructurados como JSON o XML, autenticación personalizada y falta de documentación formal. El documento también discute los desafíos para probar la seguridad de estos servicios, como determinar la superficie de ataque y optimizar el difuminado de parámetros.

Cargado por

Juan
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Acerca de los servicios web RESTful

Los servicios web son una implementación de tecnología web utilizada para la
comunicación de máquina a máquina. Como tal, se utilizan para la
comunicación de aplicaciones Inter, Web 2.0 y Mashups y para aplicaciones
de escritorio y móviles para llamar a un servidor.

Los servicios web RESTful (a menudo llamados simplemente REST) son una
variante ligera de los servicios web basados en el patrón de diseño
RESTful. En la práctica, los servicios web RESTful utilizan solicitudes HTTP
que son similares a las llamadas HTTP normales en contraste con otras
tecnologías de servicios web como SOAP, que utiliza un protocolo complejo.

Propiedades relevantes clave de los


servicios web RESTful
 El uso de HTTP métodos ( GET, POST, PUTy DELETE) como el verbo primario para
la operación solicitada.
 Especificaciones de parámetros no estándar:
o Como parte de la URL.
o En cabeceras.
 Parámetros estructurados y respuestas usando JSON o XML en valores de
parámetros, cuerpo de solicitud o cuerpo de respuesta. Esos son necesarios para
comunicar información útil de la máquina.
 Autenticación personalizada y gestión de sesiones, a menudo utilizando tokens
de seguridad personalizados: esto es necesario ya que la comunicación de
máquina a máquina no permite secuencias de inicio de sesión.
 Falta de documentación formal. Sun Microsystems presentó una norma
propuesta para describir los servicios web RESTful llamada WADL, pero nunca
fue adaptada oficialmente.

El desafío de las pruebas de


seguridad de los servicios web
RESTful
 La inspección de la aplicación no revela la superficie de ataque, es decir, las URL
y la estructura de parámetros utilizados por el servicio web RESTful. Los motivos
son:
o Ninguna aplicación utiliza todas las funciones y parámetros disponibles
expuestos por el servicio.
o Los utilizados a menudo se activan dinámicamente por el código del lado del
cliente y no como enlaces en las páginas.
o La aplicación cliente a menudo no es una aplicación web y no permite la
inspección del enlace de activación o incluso el código relevante.
 Los parámetros son ninguna norma por lo que es difícil determinar lo que es sólo
una parte de la dirección URL o una cabecera constante y lo que es un parámetro
de valor de la formación de pelusa .
 Como interfaz de máquina, el número de parámetros utilizados puede ser muy
grande, por ejemplo, una estructura JSON puede incluir docenas de
parámetros. el difuminar cada uno alarga significativamente el tiempo requerido
para la prueba.
 Los mecanismos de autenticación personalizados requieren ingeniería inversa y
hacen que las herramientas populares no sean útiles, ya que no pueden rastrear
una sesión de inicio de sesión.

¿Cómo pentest un servicio web


RESTful?
Determine la superficie de ataque a través de la documentación: las pruebas
de rotulación RESTful podrían ser mejores si se permite algún nivel de prueba
de caja blanca y puede obtener información sobre el servicio.

Esta información asegurará una cobertura más completa de la superficie de


ataque. Dicha información a buscar:

 Descripción formal del servicio: si bien para otros tipos de servicios web, como
SOAP, una descripción formal, generalmente en WSDL, a menudo está
disponible, rara vez es el caso de REST. Dicho esto, WSDL 2.0 o WADL pueden
describir REST y a veces se usan.
 Una guía para desarrolladores para usar el servicio puede ser menos detallada,
pero se encontrará comúnmente e incluso podría considerarse una caja negra .
 Fuente o configuración de la aplicación: en muchos marcos, incluido dotNet, la
definición del servicio REST puede obtenerse fácilmente de los archivos de
configuración en lugar del código.

Recopile solicitudes completas utilizando un proxy : aunque siempre es un


paso importante para la prueba del lápiz, esto es más importante para las
aplicaciones basadas en REST, ya que la interfaz de usuario de la aplicación
puede no dar pistas sobre la superficie de ataque real.

Tenga en cuenta que el proxy debe poder recopilar solicitudes completas y no


solo URL, ya que los servicios REST utilizan más que solo parámetros GET.

Analice las solicitudes recopiladas para determinar la superficie de ataque:

 Busque parámetros no estándar:


o Busque encabezados HTTP anormales, que muchas veces serían
parámetros basados en encabezados.
o Determine si un segmento de URL tiene un patrón repetitivo en las
URL. Dichos patrones pueden incluir una fecha, un número o una ID como
cadena e indicar que el segmento de URL es un parámetro incrustado de
URL.
 Por ejemplo: http://server/srv/2013-10-21/use.php
o Busque valores de parámetros estructurados, que pueden ser JSON, XML o
una estructura no estándar.
o Si el último elemento de una URL no tiene una extensión, puede ser un
parámetro. Esto es especialmente cierto si la tecnología de la aplicación
normalmente usa extensiones o si un segmento anterior tiene una extensión.
 Por ejemplo: http://server/svc/Grid.asmx/GetRelatedListItems
o Busque segmentos de URL altamente variables: un solo segmento de URL
que tiene muchos valores puede ser parámetro y no un directorio físico.
 Por ejemplo, si la URL se http://server/src/XXXX/pagerepite con cientos de
valores para XXXX, la posibilidad XXXXes un parámetro.

Verifique los parámetros no estándar: en algunos casos (pero no en todos),


establecer el valor de un segmento de URL sospechoso de ser un parámetro
en un valor que se espera que no sea válido puede ayudar a determinar si se
trata de elementos de ruta de un parámetro. Si se trata de un elemento de ruta,
el servidor web devolverá un mensaje 404, mientras que para un valor no
válido a un parámetro, la respuesta sería un mensaje a nivel de aplicación, ya
que el valor es legal en el nivel del servidor web.

Análisis de las solicitudes recopiladas para optimizar el difuminado : después


de identificar los parámetros potenciales para difuminar, analice los valores
recopilados para cada uno para determinar:

 Valores válidos frente a no válidos, de modo que el difuminado puede centrarse


en valores inválidos marginales
o Por ejemplo, el envío de 0 para un valor encontrado para ser siempre un
entero positivo.
 Secuencias que permiten difuminar más allá del rango presumiblemente
asignado al usuario actual.

Por último, al difuminar , no olvides emular el mecanismo de autenticación


utilizado.

También podría gustarte