AWS - WAF Enum

AWS - WAF Enum

Apoya a HackTricks

AWS WAF

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.

Conceptos clave

Web ACL (Lista de Control de Acceso)

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.

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 a través de 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.

Regla

Una regla define un conjunto de condiciones que AWS WAF utiliza para inspeccionar las solicitudes web entrantes. Hay dos tipos principales de reglas:

  1. Regla Regular: Este tipo de regla utiliza condiciones especificadas para determinar si permitir, bloquear o contar las solicitudes web.

  2. 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 son bloqueadas hasta que la tasa de solicitudes caiga por debajo del umbral. El umbral mínimo para las reglas basadas en tasa es de 2000 solicitudes.

Reglas Administradas

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.

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 sean sobrescritos accidentalmente por múltiples usuarios o procesos que intentan actualizar el mismo recurso simultáneamente.

Claves API

Las Claves API en AWS WAF se utilizan para autenticar solicitudes a ciertas operaciones de API. Estas claves están encriptadas y gestionadas de forma 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.

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 asegurar 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 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.

Características 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 (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.

Acciones de regla

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:

  1. Permitir IPs en la lista blanca.

  2. Bloquear IPs en la lista negra.

  3. Bloquear solicitudes que coincidan con cualquier firma perjudicial.

Integración con CloudWatch

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.

Enumeración

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

# Web ACLs #

## Retrieve a list of web access control lists (Web ACLs) available in your AWS account
aws wafv2 list-web-acls --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>
## Retrieve details about the specified Web ACL
aws wafv2 get-web-acl --name <value> --id <value> --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>

## Retrieve a list of resources associated with a specific web access control list (Web ACL)
aws wafv2 list-resources-for-web-acl --web-acl-arn <value> # Additional permissions needed depending on the protected resource type: cognito-idp:ListResourcesForWebACL, ec2:DescribeVerifiedAccessInstanceWebAclAssociations or apprunner:ListAssociatedServicesForWebAcl
## Retrieve the Web ACL associated with the specified AWS resource
aws wafv2 get-web-acl-for-resource --resource-arn <arn> # Additional permissions needed depending on the protected resource type: cognito-idp:GetWebACLForResource, ec2:GetVerifiedAccessInstanceWebAcl, wafv2:GetWebACL or apprunner:DescribeWebAclForService

# Rule groups #

## List of the rule groups available in your AWS account
aws wafv2 list-rule-groups --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>
## Retrieve the details of a specific rule group
aws wafv2 get-rule-group [--name <value>] [--id <value>] [--arn <value>] [--scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>]
## Retrieve the IAM policy attached to the specified rule group
aws wafv2 get-permission-policy --resource-arn <rule-group-arn> # Just the owner of the Rule Group can do this operation

# Managed rule groups (by AWS or by a third-party) #

## List the managed rule groups that are available
aws wafv2 list-available-managed-rule-groups --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>
## List the available versions of the specified managed rule group
aws wafv2 list-available-managed-rule-group-versions --vendor-name <value> --name <value> --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>
## Retrieve high-level information about a specific managed rule group
aws wafv2 describe-managed-rule-group --vendor-name <value> --name <value> --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1> [--version-name <value>]
## Retrieve high-level information about all managed rule groups
aws wafv2 describe-all-managed-products --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>
## Retrieve high-level information about all managed rule groups from a specific vendor
aws wafv2 describe-managed-products-by-vendor --vendor-name <value> --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>

# IP sets #

## List the IP sets that are available in your AWS account
aws wafv2 list-ip-sets --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>
## Retrieve the specific IP set
aws wafv2 get-ip-set --name <value> --id <value> --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>
## Retrieve the keys that are currently being managed by a rate-based rule.
aws wafv2 get-rate-based-statement-managed-keys --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>\
--web-acl-name <value> --web-acl-id <value> --rule-name <value> [--rule-group-rule-name <value>]

# Regex pattern sets #

## List all the regex pattern sets that you manage
aws wafv2 list-regex-pattern-sets --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>
## Retrieves the specified regex pattern sets
aws wafv2 get-regex-pattern-set --name <value> --id <value> --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>

# API Keys #

## List API keys for the specified scope
aws wafv2 list-api-keys --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>
## Retrieve decrypted API key
aws wafv2 get-decrypted-api-key --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1> --api-key <value>

# Logs #

## List of logging configurations (storage location of the logs)
aws wafv2 list-logging-configurations --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1> [--log-scope <value>]
## Retrieve the logging configuration settings associated with a specific web ACL
aws wafv2 get-logging-configuration --resource-arn <value> [--log-scope <CUSTOMER | SECURITY_LAKE>] [--log-type <value>]

# Miscelaneous #

## Retrieve a list of the tags associated to the specified resource
aws wafv2 list-tags-for-resource resource-arn <value>

## Retrieve a sample of web requests that match a specified rule within a WebACL during a specified time range
aws wafv2 get-sampled-requests --web-acl-arn <value> --rule-metric-name <value> --time-window <value> --max-items <1-500> --scope <value>

## Obtains the web ACL capacity unit (WCU) requirements for a specified scope and ruleset
aws wafv2 check-capacity --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1> --rules <value>

## List of available releases for the AWS WAFv2 mobile SDK
aws wafv2 list-mobile-sdk-releases --platform <IOS | ANDROID>
## Retrieves information for the specified mobile SDK release
aws wafv2 get-mobile-sdk-release --platform <value> --release-version <value>

Post Explotación / Bypass

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.

# Create Rule Group
aws wafv2 create-rule-group --name <value> --capacity <value> --visibility-config <value> \
--scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1> [--rules <value>] [--description <value>]
# Update Rule Group
aws wafv2 update-rule-group --name <value> --id <value> --visibility-config <value> --lock-token <value>\
--scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1> [--rules <value>] [--description <value>]
# Delete Rule Group
aws wafv2 delete-rule-group --name <value> --id <value> --lock-token <value> --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>

Los siguientes ejemplos muestran un grupo de reglas que bloquearía el tráfico legítimo de direcciones IP específicas:

aws wafv2 create-rule-group --name BlockLegitimateIPsRuleGroup --capacity 1 --visibility-config SampledRequestsEnabled=false,CloudWatchMetricsEnabled=false,MetricName=BlockLegitimateIPsRuleGroup --scope CLOUDFRONT --region us-east-1 --rules file://rule.json

El archivo rule.json se vería así:

[
{
"Name":"BlockLegitimateIPsRule",
"Priority":0,
"Statement": {
"IPSetReferenceStatement": {
"ARN": "arn:aws:wafv2:us-east-1:123456789012:global/ipset/legitIPv4/1a2b3c4d-1a2b-1a2b-1a2b-1a2b3c4d5e6f"
}
},
"Action":{
"Block":{}
},
"VisibilityConfig":{
"SampledRequestsEnabled":false,
"CloudWatchMetricsEnabled":false,
"MetricName":"BlockLegitimateIPsRule"
}
}
]

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.

# Create Web ACL
aws wafv2 create-web-acl --name <value> --default-action <value> --visibility-config <value> \
--scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1> [--rules <value>] [--captcha-config <value>] [--description <value>]
# Update Web ACL
aws wafv2 update-web-acl --name <value> --id <value> --default-action <value> --visibility-config <value> --lock-token <value>\
--scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1> [--rules <value>] [--captcha-config <value>] [--description <value>]
# Delete Web ACL
aws wafv2 delete-web-acl --name <value> --id <value> --lock-token <value> --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>

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:

{
"WebACL": {
"Name": "AllowLegitimateIPsWebACL",
"Id": "1a2b3c4d-1a2b-1a2b-1a2b-1a2b3c4d5e6f",
"ARN": "arn:aws:wafv2:us-east-1:123456789012:regional/webacl/AllowLegitimateIPsWebACL/1a2b3c4d-1a2b-1a2b-1a2b-1a2b3c4d5e6f",
"DefaultAction": {
"Allow": {}
},
"Description": "",
"Rules": [
{
"Name": "AllowLegitimateIPsRule",
"Priority": 0,
"Statement": {
"IPSetReferenceStatement": {
"ARN": "arn:aws:wafv2:us-east-1:123456789012:regional/ipset/LegitimateIPv4/1a2b3c4d-1a2b-1a2b-1a2b-1a2b3c4d5e6f"
}
},
"Action": {
"Allow": {}
},
"VisibilityConfig": {
"SampledRequestsEnabled": false,
"CloudWatchMetricsEnabled": false,
"MetricName": "AllowLegitimateIPsRule"
}
}
],
"VisibilityConfig": {
"SampledRequestsEnabled": false,
"CloudWatchMetricsEnabled": false,
"MetricName": "AllowLegitimateIPsWebACL"
},
"Capacity": 1,
"ManagedByFirewallManager": false,
"LabelNamespace": "awswaf:123456789012:webacl:AllowLegitimateIPsWebACL:"
},
"LockToken": "1a2b3c4d-1a2b-1a2b-1a2b-1a2b3c4d5e6f"
}

Comando para actualizar el Web ACL:

aws wafv2 update-web-acl --name AllowLegitimateIPsWebACL --scope REGIONAL --id 1a2b3c4d-1a2b-1a2b-1a2b-1a2b3c4d5e6f --lock-token 1a2b3c4d-1a2b-1a2b-1a2b-1a2b3c4d5e6f --default-action Block={} --visibility-config SampledRequestsEnabled=false,CloudWatchMetricsEnabled=false,MetricName=AllowLegitimateIPsWebACL --rules file://rule.json --region us-east-1

El archivo rule.json se vería así:

[
{
"Name": "BlockLegitimateIPsRule",
"Priority": 0,
"Statement": {
"IPSetReferenceStatement": {
"ARN": "arn:aws:wafv2:us-east-1:123456789012:regional/ipset/LegitimateIPv4/1a2b3c4d-1a2b-1a2b-1a2b-1a2b3c4d5e6f"
}
},
"Action": {
"Block": {}
},
"VisibilityConfig": {
"SampledRequestsEnabled": false,
"CloudWatchMetricsEnabled": false,
"MetricName": "BlockLegitimateIPRule"
}
}
]

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 desactivar 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

# Associate
aws wafv2 associate-web-acl --web-acl-arn <value> --resource-arn <value>
# Disassociate
aws wafv2 disassociate-web-acl --resource-arn <value>

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.

# Create IP set
aws wafv2 create-ip-set --name <value> --ip-address-version <IPV4 | IPV6> --addresses <value> --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>
# Update IP set
aws wafv2 update-ip-set --name <value> --id <value> --addresses <value> --lock-token <value> --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>
# Delete IP set
aws wafv2 delete-ip-set --name <value> --id <value> --lock-token <value> --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>

El siguiente ejemplo muestra cómo sobrescribir el conjunto de IP existente por el conjunto de IP deseado:

aws wafv2 update-ip-set --name LegitimateIPv4Set --id 1a2b3c4d-1a2b-1a2b-1a2b-1a2b3c4d5e6f --addresses 99.99.99.99/32 --lock-token 1a2b3c4d-1a2b-1a2b-1a2b-1a2b3c4d5e6f --scope CLOUDFRONT --region us-east-1

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.

# Create regex pattern set
aws wafv2 create-regex-pattern-set --name <value> --regular-expression-list <value> --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1> [--description <value>]
# Update regex pattern set
aws wafv2 update-regex-pattern-set --name <value> --id <value> --regular-expression-list <value> --lock-token <value> --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>
# Delete regex pattern set
aws wafv2 delete-regex-pattern-set --name <value> --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1> --id <value> --lock-token <value>

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 registros 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 registros de CloudWatch Logs designado. Esta política asegura que AWS WAF tenga los permisos requeridos para escribir registros en el grupo de registros.

  • Amazon S3 Bucket: AWS WAF crea una política de bucket en el bucket 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.

# Put logging configuration
aws wafv2 put-logging-configuration --logging-configuration <value>
# Delete logging configuration
aws wafv2 delete-logging-configuration --resource-arn <value> [--log-scope <CUSTOMER | SECURITY_LAKE>] [--log-type <value>]

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.

# Delete API key
aws wafv2 delete-api-key --api-key <value> --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>

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.

# Tag
aws wafv2 tag-resource --resource-arn <value> --tags <value>
# Untag
aws wafv2 untag-resource --resource-arn <value> --tag-keys <value>

Impacto Potencial: Manipulación de recursos, filtración de información, manipulación de costos y interrupción operativa.

Referencias

Apoya a HackTricks

Last updated