AWS - WAF Enum
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
AWS WAF es un firewall de aplicaciones web diseñado para proteger aplicaciones web o APIs contra diversas explotaciones 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 inyección SQL o scripting entre sitios y también definiendo reglas de filtrado personalizadas.
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 según las reglas definidas en la Web ACL y toma las acciones especificadas.
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 que se utilizan para ejecutar tus reglas, grupos de reglas y Web ACLs. Una vez que su valor se establece durante la creación, no es posible modificarlo.
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 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 de una IP excede este límite dentro de cinco minutos, las solicitudes subsiguientes de esa IP se bloquean hasta que la tasa de solicitudes cae por debajo del umbral. El umbral mínimo para las reglas basadas en tasa es de 2000 solicitudes.
AWS WAF ofrece conjuntos de reglas administradas preconfigurados que son mantenidos por AWS y vendedores del AWS Marketplace. Estos conjuntos de reglas proporcionan protección contra amenazas comunes y se actualizan regularmente para abordar nuevas vulnerabilidades.
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.
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.
Un Token de Bloqueo se utiliza para el control de concurrencia al realizar actualizaciones en los recursos de WAF. Asegura que los cambios no sean sobrescritos accidentalmente por múltiples usuarios o procesos que intentan actualizar el mismo recurso simultáneamente.
Las Claves API en AWS WAF se utilizan para autenticar solicitudes a ciertas operaciones de API. Estas claves están encriptadas y se gestionan de manera segura para controlar el acceso y asegurar que solo los usuarios autorizados puedan realizar cambios en las configuraciones de WAF.
Ejemplo: Integración de la API de CAPTCHA.
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 asegurar que solo los usuarios autorizados puedan crear, actualizar o eliminar configuraciones.
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 Application Load Balancers (ALB), Amazon API Gateway REST API, AWS AppSync GraphQL API, grupo de usuarios de Amazon Cognito, servicio AWS App Runner y instancia de AWS Verified Access. 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.
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 (coincidencias de cadenas y regex). Es importante notar 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 puede aumentarse).
100 reglas y 50 Web ACLs.
Un máximo de 5 reglas basadas en tasa.
Un rendimiento de 10,000 solicitudes por segundo cuando WAF se implementa con un balanceador de carga de aplicaciones.
Las acciones se asignan a cada regla, con opciones que son:
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: Cuenta las solicitudes que cumplen con las condiciones de la regla. Esto es útil para probar la regla, confirmando la precisión de la regla antes de configurarla para Permitir o Bloquear.
CAPTCHA y Desafío: Se verifica que la solicitud no provenga de un bot utilizando acertijos de 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 las reglas, definido dentro de una Web ACL, es crucial y típicamente sigue esta secuencia:
Permitir IPs en la lista blanca.
Bloquear IPs en la lista negra.
Bloquear solicitudes que coincidan con cualquier firma perjudicial.
AWS WAF se integra con CloudWatch para monitoreo, ofreciendo métricas como AllowedRequests, BlockedRequests, CountedRequests y PassedRequests. Estas métricas se informan cada minuto por defecto y se retienen durante un período de dos semanas.
Para interactuar con 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, usa el endpoint 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
Desde la perspectiva de un atacante, este servicio puede ayudar al atacante a identificar las protecciones de WAF y las exposiciones de red que podrían ayudarle a comprometer otras webs.
Sin embargo, un atacante también podría estar interesado en interrumpir este servicio para que las webs no estén protegidas por el WAF.
En muchas de las operaciones de Eliminar y Actualizar 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 sean sobrescritos accidentalmente por múltiples usuarios o procesos que intentan actualizar el mismo recurso simultáneamente. Para obtener este token, podrías realizar las operaciones correspondientes de listar o obtener sobre el recurso específico.
wafv2:CreateRuleGroup
, wafv2:UpdateRuleGroup
, wafv2:DeleteRuleGroup
Un atacante podría comprometer la seguridad del recurso afectado al:
Crear grupos de reglas que podrían, por ejemplo, bloquear tráfico legítimo de 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.
Los siguientes ejemplos muestran 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 DoS.
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, haciendo que el WAF sea inútil o causando una denegación de servicio.
Actualizar Web ACLs existentes, pudiendo modificar reglas para permitir ataques como inyección SQL o scripting entre sitios, que anteriormente 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.
Los siguientes ejemplos muestran cómo actualizar un Web ACL para bloquear el tráfico legítimo de un conjunto de IP específico. Si la IP de origen no coincide con ninguna de esas IP, la acción predeterminada también sería bloquearlo, causando un DoS.
Web ACL original:
Comando para actualizar el Web ACL:
El archivo rule.json se vería así:
Impacto Potencial: Acceso no autorizado, filtraciones de datos y posibles ataques DoS.
wafv2:AssociateWebACL
, wafv2:DisassociateWebACL
El permiso wafv2:AssociateWebACL
permitiría a un atacante asociar ACLs web (Listas de Control de Acceso) con recursos, pudiendo eludir controles de seguridad, permitiendo que tráfico no autorizado llegue a la aplicación, lo que podría llevar a explotaciones como inyección SQL o scripting entre sitios (XSS). Por el contrario, con el permiso wafv2:DisassociateWebACL
, el atacante podría deshabilitar temporalmente las protecciones de seguridad, exponiendo los recursos a vulnerabilidades sin detección.
Se necesitarían permisos adicionales 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
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 eliminar conjuntos de IP críticos que están destinados a proteger recursos críticos.
El siguiente ejemplo muestra cómo sobrescribir el conjunto de IP existente por el conjunto de IP deseado:
Impacto Potencial: Acceso no autorizado y bloqueo de tráfico legítimo.
wafv2:CreateRegexPatternSet
, wafv2:UpdateRegexPatternSet
, wafv2:DeleteRegexPatternSet
Un atacante con estos permisos podría 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 diseñados para bloquear actividades maliciosas podría permitir a un atacante enviar cargas útiles maliciosas y eludir las medidas de seguridad.
Impacto Potencial: Eludir 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
Un atacante con el 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 buckets de Amazon S3, grupos de logs de Amazon CloudWatch Logs o un Amazon Kinesis Data Firehose bajo 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 logs de CloudWatch Logs designado. Esta política asegura que AWS WAF tenga los permisos requeridos para escribir registros en el grupo de logs.
Amazon S3 Bucket: 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 subir registros al 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 stream de Firehose configurado.
Es posible definir solo un destino de registro por web ACL.
Impacto Potencial: Visibilidad oscurecida en eventos de seguridad, dificultando el proceso de respuesta a incidentes y facilitando actividades maliciosas encubiertas dentro de entornos protegidos por AWS WAF.
wafv2:DeleteAPIKey
Un atacante con estos permisos podría eliminar claves API existentes, haciendo que el CAPTCHA sea ineficaz y interrumpiendo 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 de CAPTCHA o a un DoS si la gestión de errores no está configurada correctamente en el recurso.
Impacto Potencial: Deshabilitar las protecciones CAPTCHA o interrumpir la funcionalidad de la aplicación, lo que lleva a brechas de seguridad y posible robo de datos.
wafv2:TagResource
, wafv2:UntagResource
Un atacante podría agregar, modificar o eliminar etiquetas de los recursos de AWS WAFv2, como ACLs web, grupos de reglas, conjuntos de IP, conjuntos de patrones regex y configuraciones de registro.
Impacto Potencial: Manipulación de recursos, filtración de información, manipulación de costos y interrupción operativa.
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)