AWS - WAF Enum

AWS - Enumeración de WAF

Apoya a HackTricks

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:

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

  2. 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:

  1. Permitir IPs en lista blanca.

  2. Bloquear IPs en 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 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

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

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.

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

El siguiente ejemplo muestra 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 de denegación de servicio.

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.

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

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:

{
"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"
}

Update Web ACL

Para actualizar el ACL web, utiliza el siguiente comando:

aws waf update-web-acl --web-acl-id <value> --updates <value>
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 de denegación de servicio (DoS).

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

# 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 borrar conjuntos de IP críticos 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 con 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 del tráfico legítimo.

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.

# 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: 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

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.

# 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: 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

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.

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

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

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.

# 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, fuga de información, manipulación de costos y interrupción operativa.

Referencias

Apoya a HackTricks

Last updated