Por ejemplo, si una aplicación web utiliza un identificador numérico para identificar un registro en una base de datos, un atacante puede intentar adivinar este identificador y acceder a los registros sin la debida autorización. Esto puede permitir a los atacantes acceder a información confidencial, modificar datos, crear cuentas de usuario no autorizadas y realizar otras acciones maliciosas.
La vulnerabilidad IDOR puede surgir cuando una aplicación web no implementa controles de acceso adecuados para los recursos que gestiona. Por ejemplo, una aplicación puede validar el acceso mediante autenticación y autorización para los recursos que se muestran en la interfaz de usuario, pero no aplicar la misma validación para los recursos que se acceden directamente a través de una URL.
Para explotar una vulnerabilidad IDOR, un atacante puede intentar modificar manualmente el identificador de un objeto en la URL o utilizar una herramienta automatizada para probar diferentes valores. Si el atacante encuentra un identificador que le permite acceder a un recurso que no debería estar disponible, entonces la vulnerabilidad IDOR se ha explotado con éxito.
Por ejemplo, supongamos que un usuario 'A' tiene un pedido con el identificador numérico 123 y el usuario 'B' tiene un pedido con el identificador numérico 124. Si el atacante intenta acceder a través de la URL "https://example.com/orders/124", la aplicación web podría permitir el acceso a ese pedido sin validar si el usuario tiene permiso para acceder a él. De esta manera, el atacante podría acceder al pedido del usuario 'B' sin la debida autorización.
Para prevenir la vulnerabilidad IDOR, es crucial validar adecuadamente la autorización del usuario para acceder a los recursos, tanto en la interfaz de usuario como en las solicitudes directas a través de URL. Además, se recomienda restringir los permisos de acceso a los recursos y mantener actualizado el software y los sistemas operativos.
Veamos un ejemplo:
http://ejemplo.com/pagina?documento=12345
En este caso, el valor del parámetro "documento" se utiliza como índice en una tabla de documentos en la base de datos. La aplicación toma el valor de este parámetro y lo utiliza en una consulta a la base de datos. Luego, la aplicación devuelve la información de la factura al usuario.
Dado que el valor de "documento" entra directamente en la consulta, al modificar el valor del parámetro es posible recuperar cualquier docuemnto, independientemente del usuario al que pertenezca la factura.
PoC
Para la prueba de concepto utilizaremos el laboratorio de Skf-labs IDOR.
Intentamos acceder aleatoriamente con el identificador 4000 para forzar que nos de un documento y nos indica que solo hay identificadores del 1-1500.
Para explotar e intentar acceder a otros documentos indexados, usaremos burpsuite que nos ayudaría a automatizar la tarea de borrar. Aunque mas adelante veremos con hacerlo con Wfuzz.
Preparamos el ataque con numero del 1 al 1500 y vamos viendo la longitud de respuesta.
Entonces, a partir de los resultados de la prueba de fuzzing, si observamos de cerca, el ID de índice "1612" parece interesante, ya que los otros ID parecen tener la misma longitud de respuesta. Vamos a verificar qué logramos con ID=356.
Hemos podido acceder al documento perteneciente a algún otro usuario eludiendo los controles de acceso de la aplicación.
No hay comentarios:
Publicar un comentario