AWS - WAF Enum
AWS - Enumeración de WAF
AWS WAF
AWS WAF es un firewall de aplicaciones web diseñado para proteger aplicaciones web o APIs contra varios exploits web que pueden afectar su disponibilidad, seguridad o consumo de recursos. Permite a los usuarios controlar el tráfico entrante configurando reglas de seguridad que mitigan vectores de ataque típicos como la inyección SQL o scripting entre sitios, y también definiendo reglas de filtrado personalizadas.
Conceptos clave
Lista de control de acceso (Web ACL)
Una Web ACL es una colección de reglas que puedes aplicar a tus aplicaciones web o APIs. Cuando asocias una Web ACL con un recurso, AWS WAF inspecciona las solicitudes entrantes basándose en las reglas definidas en la Web ACL y toma las acciones especificadas.
Grupo de reglas
Un Grupo de reglas es una colección reutilizable de reglas que puedes aplicar a múltiples Web ACLs. Los grupos de reglas ayudan a gestionar y mantener conjuntos de reglas consistentes en diferentes aplicaciones web o APIs.
Cada grupo de reglas tiene su capacidad asociada, que ayuda a calcular y controlar los recursos operativos utilizados para ejecutar tus reglas, grupos de reglas y Web ACLs. Una vez que se establece su valor durante la creación, no es posible modificarlo.
Regla
Una regla define un conjunto de condiciones que AWS WAF utiliza para inspeccionar las solicitudes web entrantes. Hay dos tipos principales de reglas:
Regla Regular: Este tipo de regla utiliza condiciones especificadas para determinar si permitir, bloquear o contar las solicitudes web.
Regla basada en la tasa: Cuenta las solicitudes de una dirección IP específica durante un período de cinco minutos. Aquí, los usuarios definen un umbral, y si el número de solicitudes desde una IP supera este límite en cinco minutos, las solicitudes posteriores de esa IP se bloquean hasta que la tasa de solicitudes caiga por debajo del umbral. El umbral mínimo para las reglas basadas en la tasa es de 2000 solicitudes.
Reglas gestionadas
AWS WAF ofrece conjuntos de reglas preconfiguradas y gestionadas que son mantenidas por AWS y vendedores del Marketplace de AWS. Estos conjuntos de reglas proporcionan protección contra amenazas comunes y se actualizan regularmente para abordar nuevas vulnerabilidades.
Conjunto de IP
Un Conjunto de IP es una lista de direcciones IP o rangos de direcciones IP que deseas permitir o bloquear. Los conjuntos de IP simplifican el proceso de gestión de reglas basadas en IP.
Conjunto de patrones Regex
Un Conjunto de patrones Regex contiene una o más expresiones regulares (regex) que definen patrones a buscar en las solicitudes web. Esto es útil para escenarios de coincidencia más complejos, como filtrar secuencias específicas de caracteres.
Token de bloqueo
Un Token de bloqueo se utiliza para el control de concurrencia al realizar actualizaciones en los recursos de WAF. Asegura que los cambios no se sobrescriban accidentalmente por múltiples usuarios o procesos que intentan actualizar el mismo recurso simultáneamente.
Claves de API
Las Claves de API en AWS WAF se utilizan para autenticar solicitudes a ciertas operaciones de API. Estas claves están encriptadas y se gestionan de forma segura para controlar el acceso y garantizar que solo los usuarios autorizados puedan realizar cambios en las configuraciones de WAF.
Ejemplo: Integración de la API CAPTCHA.
Política de permisos
Una Política de permisos es una política IAM que especifica quién puede realizar acciones en los recursos de AWS WAF. Al definir permisos, puedes controlar el acceso a los recursos de WAF y garantizar que solo los usuarios autorizados puedan crear, actualizar o eliminar configuraciones.
Alcance
El parámetro de alcance en AWS WAF especifica si las reglas y configuraciones de WAF se aplican a una aplicación regional o a una distribución de Amazon CloudFront.
REGIONAL: Se aplica a servicios regionales como Balanceadores de Carga de Aplicaciones (ALB), API REST de Amazon API Gateway, API GraphQL de AWS AppSync, grupo de usuarios de Amazon Cognito, servicio AWS App Runner e instancia de Acceso Verificado de AWS. Especificas la región de AWS donde se encuentran estos recursos.
CLOUDFRONT: Se aplica a distribuciones de Amazon CloudFront, que son globales. Las configuraciones de WAF para CloudFront se gestionan a través de la región
us-east-1
independientemente de dónde se sirva el contenido.
Funciones clave
Criterios de monitoreo (Condiciones)
Condiciones especifican los elementos de las solicitudes HTTP/HTTPS entrantes que AWS WAF monitorea, que incluyen XSS, ubicación geográfica (GEO), direcciones IP, restricciones de tamaño, inyección SQL y patrones (coincidencia de cadenas y regex). Es importante tener en cuenta que las solicitudes restringidas a nivel de CloudFront basadas en el país no llegarán a WAF.
Cada cuenta de AWS puede configurar:
100 condiciones para cada tipo (excepto para Regex, donde solo se permiten 10 condiciones, pero este límite se puede aumentar).
100 reglas y 50 Web ACLs.
Un máximo de 5 reglas basadas en la tasa.
Un rendimiento de 10,000 solicitudes por segundo cuando WAF se implementa con un balanceador de carga de aplicaciones.
Acciones de reglas
Las acciones se asignan a cada regla, con opciones como:
Permitir: La solicitud se reenvía a la distribución de CloudFront o al Balanceador de Carga de Aplicaciones correspondiente.
Bloquear: La solicitud se termina inmediatamente.
Contar: Contabiliza las solicitudes que cumplen las condiciones de la regla. Esto es útil para probar la regla, confirmar la precisión antes de establecerla en Permitir o Bloquear.
CAPTCHA y Desafío: Se verifica que la solicitud no provenga de un bot utilizando puzzles CAPTCHA y desafíos silenciosos.
Si una solicitud no coincide con ninguna regla dentro de la Web ACL, se somete a la acción predeterminada (Permitir o Bloquear). El orden de ejecución de reglas, definido dentro de una Web ACL, es crucial y generalmente sigue esta secuencia:
Permitir IPs en lista blanca.
Bloquear IPs en lista negra.
Bloquear solicitudes que coincidan con cualquier firma perjudicial.
Integración con CloudWatch
AWS WAF se integra con CloudWatch para monitoreo, ofreciendo métricas como Solicitudes Permitidas, Solicitudes Bloqueadas, Solicitudes Contadas y Solicitudes Pasadas. Estas métricas se informan cada minuto de forma predeterminada y se retienen durante un período de dos semanas.
Enumeración
Para interactuar con las distribuciones de CloudFront, debes especificar la Región US East (N. Virginia):
CLI - Especifica la Región US East cuando uses el alcance de CloudFront:
--scope CLOUDFRONT --region=us-east-1
.API y SDKs - Para todas las llamadas, utiliza el punto final de la Región us-east-1.
Para interactuar con servicios regionales, debes especificar la región:
Ejemplo con la región Europa (España):
--scope REGIONAL --region=eu-south-2
Post Explotación / Bypass
Desde la perspectiva de un atacante, este servicio puede ayudar al atacante a identificar protecciones de WAF y exposiciones de red que podrían ayudarlo a comprometer otros sitios web.
Sin embargo, un atacante también podría estar interesado en interrumpir este servicio para que los sitios web no estén protegidos por el WAF.
En muchas de las operaciones de Eliminación y Actualización sería necesario proporcionar el token de bloqueo. Este token se utiliza para el control de concurrencia sobre los recursos, asegurando que los cambios no se sobrescriban accidentalmente por múltiples usuarios o procesos que intentan actualizar el mismo recurso simultáneamente. Para obtener este token, podría realizar las operaciones list o get correspondientes sobre el recurso específico.
wafv2:CreateRuleGroup
, wafv2:UpdateRuleGroup
, wafv2:DeleteRuleGroup
wafv2:CreateRuleGroup
, wafv2:UpdateRuleGroup
, wafv2:DeleteRuleGroup
Un atacante podría comprometer la seguridad del recurso afectado mediante:
Crear grupos de reglas que podrían, por ejemplo, bloquear tráfico legítimo desde direcciones IP legítimas, causando una denegación de servicio.
Actualizar grupos de reglas, pudiendo modificar sus acciones, por ejemplo, de Bloquear a Permitir.
Eliminar grupos de reglas que proporcionan medidas de seguridad críticas.
El siguiente ejemplo muestra un grupo de reglas que bloquearía el tráfico legítimo de direcciones IP específicas:
El archivo rule.json se vería así:
Impacto Potencial: Acceso no autorizado, filtraciones de datos y posibles ataques de denegación de servicio.
wafv2:CreateWebACL
, wafv2:UpdateWebACL
, wafv2:DeleteWebACL
wafv2:CreateWebACL
, wafv2:UpdateWebACL
, wafv2:DeleteWebACL
Con estos permisos, un atacante podría:
Crear un nuevo Web ACL, introduciendo reglas que permitan el tráfico malicioso o bloqueen el tráfico legítimo, lo que efectivamente dejaría inútil el WAF o causaría una denegación de servicio.
Actualizar los Web ACL existentes, pudiendo modificar reglas para permitir ataques como la inyección SQL o scripts entre sitios, que previamente estaban bloqueados, o interrumpir el flujo normal de tráfico bloqueando solicitudes válidas.
Eliminar un Web ACL, dejando los recursos afectados completamente desprotegidos, exponiéndolos a una amplia gama de ataques web.
Solo puedes eliminar el WebACL especificado si ManagedByFirewallManager es falso.
El siguiente ejemplo muestra cómo actualizar un ACL web para bloquear el tráfico legítimo de un conjunto de direcciones IP específico. Si la IP de origen no coincide con ninguna de esas IPs, la acción predeterminada también sería bloquearla, lo que causaría un DoS.
ACL web original:
Update Web ACL
Para actualizar el ACL web, utiliza el siguiente comando:
El archivo rule.json se vería así:
Impacto Potencial: Acceso no autorizado, filtraciones de datos y posibles ataques de denegación de servicio (DoS).
wafv2:AssociateWebACL
, wafv2:DisassociateWebACL
wafv2:AssociateWebACL
, wafv2:DisassociateWebACL
El permiso wafv2:AssociateWebACL
permitiría a un atacante asociar listas de control de acceso web (Web ACL) con recursos, pudiendo evadir controles de seguridad, permitiendo que el tráfico no autorizado llegue a la aplicación, lo que potencialmente podría llevar a explotaciones como la inyección SQL o scripting entre sitios (XSS). Por otro lado, con el permiso wafv2:DisassociateWebACL
, el atacante podría deshabilitar temporalmente las protecciones de seguridad, exponiendo los recursos a vulnerabilidades sin ser detectado.
Los permisos adicionales serían necesarios dependiendo del tipo de recurso protegido:
Asociar
apigateway:SetWebACL
apprunner:AssociateWebAcl
appsync:SetWebACL
cognito-idp:AssociateWebACL
ec2:AssociateVerifiedAccessInstanceWebAcl
elasticloadbalancing:SetWebAcl
Desasociar
apigateway:SetWebACL
apprunner:DisassociateWebAcl
appsync:SetWebACL
cognito-idp:DisassociateWebACL
ec2:DisassociateVerifiedAccessInstanceWebAcl
elasticloadbalancing:SetWebAcl
Impacto Potencial: Compromiso de la seguridad de los recursos, aumento del riesgo de explotación y posibles interrupciones del servicio dentro de los entornos de AWS protegidos por AWS WAF.
wafv2:CreateIPSet
, wafv2:UpdateIPSet
, wafv2:DeleteIPSet
wafv2:CreateIPSet
, wafv2:UpdateIPSet
, wafv2:DeleteIPSet
Un atacante podría crear, actualizar y eliminar los conjuntos de IP gestionados por AWS WAF. Esto podría ser peligroso ya que podría crear nuevos conjuntos de IP para permitir tráfico malicioso, modificar conjuntos de IP para bloquear tráfico legítimo, actualizar conjuntos de IP existentes para incluir direcciones IP maliciosas, eliminar direcciones IP de confianza o borrar conjuntos de IP críticos destinados a proteger recursos críticos.
El siguiente ejemplo muestra cómo sobrescribir el conjunto de IP existente con el conjunto de IP deseado:
Impacto Potencial: Acceso no autorizado y bloqueo del tráfico legítimo.
wafv2:CreateRegexPatternSet
, wafv2:UpdateRegexPatternSet
, wafv2:DeleteRegexPatternSet
wafv2:CreateRegexPatternSet
, wafv2:UpdateRegexPatternSet
, wafv2:DeleteRegexPatternSet
Un atacante con estos permisos sería capaz de manipular los conjuntos de patrones de expresiones regulares utilizados por AWS WAF para controlar y filtrar el tráfico entrante basado en patrones específicos.
Crear nuevos patrones regex ayudaría a un atacante a permitir contenido dañino.
Al actualizar los patrones existentes, un atacante podría eludir las reglas de seguridad.
Eliminar patrones que están diseñados para bloquear actividades maliciosas podría llevar a un atacante a enviar cargas maliciosas y eludir las medidas de seguridad.
Impacto Potencial: Bypass de controles de seguridad, permitiendo contenido malicioso y potencialmente exponiendo datos sensibles o interrumpiendo servicios y recursos protegidos por AWS WAF.
(wavf2:PutLoggingConfiguration
& iam:CreateServiceLinkedRole
), wafv2:DeleteLoggingConfiguration
wavf2:PutLoggingConfiguration
& iam:CreateServiceLinkedRole
), wafv2:DeleteLoggingConfiguration
Un atacante con el permiso wafv2:DeleteLoggingConfiguration
podría eliminar la configuración de registro del Web ACL especificado. Posteriormente, con los permisos wavf2:PutLoggingConfiguration
y iam:CreateServiceLinkedRole
, un atacante podría crear o reemplazar configuraciones de registro (después de haberla eliminado) para evitar el registro por completo o redirigir los registros a destinos no autorizados, como los grupos de registros de Amazon CloudWatch Logs, un bucket de Amazon S3 o un Amazon Kinesis Data Firehose bajo su control.
Durante el proceso de creación, el servicio configura automáticamente los permisos necesarios para permitir que los registros se escriban en el destino de registro especificado:
Amazon CloudWatch Logs: AWS WAF crea una política de recursos en el grupo de registros de CloudWatch Logs designado. Esta política garantiza que AWS WAF tenga los permisos necesarios para escribir registros en el grupo de registros.
Bucket de Amazon S3: AWS WAF crea una política de bucket en el bucket de S3 designado. Esta política otorga a AWS WAF los permisos necesarios para cargar registros en el bucket especificado.
Amazon Kinesis Data Firehose: AWS WAF crea un rol vinculado al servicio específicamente para interactuar con Kinesis Data Firehose. Este rol permite a AWS WAF entregar registros al flujo de Firehose configurado.
Es posible definir solo un destino de registro por Web ACL.
Impacto potencial: Oscurecer la visibilidad en los eventos de seguridad, dificultar el proceso de respuesta a incidentes y facilitar actividades maliciosas encubiertas dentro de entornos protegidos por AWS WAF.
wafv2:DeleteAPIKey
wafv2:DeleteAPIKey
Un atacante con estos permisos podría eliminar claves API existentes, haciendo que el CAPTCHA sea ineficaz y perturbando la funcionalidad que depende de él, como envíos de formularios y controles de acceso. Dependiendo de la implementación de este CAPTCHA, esto podría llevar a un bypass del CAPTCHA o a un DoS si la gestión de errores no está configurada correctamente en el recurso.
Impacto Potencial: Deshabilitar protecciones CAPTCHA o interrumpir la funcionalidad de la aplicación, lo que podría provocar brechas de seguridad y posibles robos de datos.
wafv2:TagResource
, wafv2:UntagResource
wafv2:TagResource
, wafv2:UntagResource
Un atacante podría agregar, modificar o eliminar etiquetas de recursos de AWS WAFv2, como listas de control de acceso web (Web ACL), grupos de reglas, conjuntos de direcciones IP, conjuntos de patrones regex y configuraciones de registro.
Impacto Potencial: Manipulación de recursos, fuga de información, manipulación de costos y interrupción operativa.
Referencias
Last updated