AWS - WAF Enum

AWS - WAF Enum

Support HackTricks

AWS WAF

AWS WAF é um firewall de aplicação web projetado para proteger aplicações web ou APIs contra várias explorações web que podem impactar sua disponibilidade, segurança ou consumo de recursos. Ele capacita os usuários a controlar o tráfego de entrada configurando regras de segurança que mitigam vetores de ataque típicos, como injeção SQL ou script entre sites, e também definindo regras de filtragem personalizadas.

Conceitos-chave

Web ACL (Lista de Controle de Acesso)

Uma Web ACL é uma coleção de regras que você pode aplicar às suas aplicações web ou APIs. Quando você associa uma Web ACL a um recurso, o AWS WAF inspeciona as solicitações de entrada com base nas regras definidas na Web ACL e toma as ações especificadas.

Grupo de Regras

Um Grupo de Regras é uma coleção reutilizável de regras que você pode aplicar a várias Web ACLs. Grupos de regras ajudam a gerenciar e manter conjuntos de regras consistentes em diferentes aplicações web ou APIs.

Cada grupo de regras tem sua capacidade associada, que ajuda a calcular e controlar os recursos operacionais usados para executar suas regras, grupos de regras e Web ACLs. Uma vez que seu valor é definido durante a criação, não é possível modificá-lo.

Regra

Uma regra define um conjunto de condições que o AWS WAF usa para inspecionar as solicitações web de entrada. Existem dois tipos principais de regras:

  1. Regra Regular: Este tipo de regra usa condições especificadas para determinar se deve permitir, bloquear ou contar solicitações web.

  2. Regra Baseada em Taxa: Conta solicitações de um endereço IP específico durante um período de cinco minutos. Aqui, os usuários definem um limite, e se o número de solicitações de um IP exceder esse limite dentro de cinco minutos, as solicitações subsequentes desse IP são bloqueadas até que a taxa de solicitações caia abaixo do limite. O limite mínimo para regras baseadas em taxa é 2000 solicitações.

Regras Gerenciadas

O AWS WAF oferece conjuntos de regras gerenciadas pré-configurados que são mantidos pela AWS e vendedores do AWS Marketplace. Esses conjuntos de regras fornecem proteção contra ameaças comuns e são atualizados regularmente para abordar novas vulnerabilidades.

Conjunto de IP

Um Conjunto de IP é uma lista de endereços IP ou intervalos de endereços IP que você deseja permitir ou bloquear. Conjuntos de IP simplificam o processo de gerenciamento de regras baseadas em IP.

Conjunto de Padrões Regex

Um Conjunto de Padrões Regex contém uma ou mais expressões regulares (regex) que definem padrões a serem buscados nas solicitações web. Isso é útil para cenários de correspondência mais complexos, como filtrar sequências específicas de caracteres.

Token de Bloqueio

Um Token de Bloqueio é usado para controle de concorrência ao fazer atualizações nos recursos do WAF. Ele garante que as alterações não sejam acidentalmente sobrescritas por vários usuários ou processos que tentam atualizar o mesmo recurso simultaneamente.

Chaves de API

As Chaves de API no AWS WAF são usadas para autenticar solicitações a certas operações de API. Essas chaves são criptografadas e gerenciadas de forma segura para controlar o acesso e garantir que apenas usuários autorizados possam fazer alterações nas configurações do WAF.

  • Exemplo: Integração da API CAPTCHA.

Política de Permissão

Uma Política de Permissão é uma política IAM que especifica quem pode realizar ações nos recursos do AWS WAF. Ao definir permissões, você pode controlar o acesso aos recursos do WAF e garantir que apenas usuários autorizados possam criar, atualizar ou excluir configurações.

Escopo

O parâmetro de escopo no AWS WAF especifica se as regras e configurações do WAF se aplicam a uma aplicação regional ou a uma distribuição Amazon CloudFront.

  • REGIONAL: Aplica-se a serviços regionais, como Balanceadores de Carga de Aplicação (ALB), Amazon API Gateway REST API, AWS AppSync GraphQL API, pool de usuários do Amazon Cognito, serviço AWS App Runner e instância AWS Verified Access. Você especifica a região AWS onde esses recursos estão localizados.

  • CLOUDFRONT: Aplica-se a distribuições Amazon CloudFront, que são globais. As configurações do WAF para CloudFront são gerenciadas através da região us-east-1, independentemente de onde o conteúdo é servido.

Recursos principais

Critérios de Monitoramento (Condições)

Condições especificam os elementos das solicitações HTTP/HTTPS de entrada que o AWS WAF monitora, que incluem XSS, localização geográfica (GEO), endereços IP, restrições de tamanho, injeção SQL e padrões (correspondência de strings e regex). É importante notar que solicitações restritas no nível do CloudFront com base no país não chegarão ao WAF.

Cada conta AWS pode configurar:

  • 100 condições para cada tipo (exceto para Regex, onde apenas 10 condições são permitidas, mas esse limite pode ser aumentado).

  • 100 regras e 50 Web ACLs.

  • Um máximo de 5 regras baseadas em taxa.

  • Um throughput de 10.000 solicitações por segundo quando o WAF é implementado com um balanceador de carga de aplicação.

Ações de regra

Ações são atribuídas a cada regra, com as opções sendo:

  • Permitir: A solicitação é encaminhada para a distribuição CloudFront ou Balanceador de Carga de Aplicação apropriado.

  • Bloquear: A solicitação é encerrada imediatamente.

  • Contar: Conta as solicitações que atendem às condições da regra. Isso é útil para teste de regras, confirmando a precisão da regra antes de defini-la como Permitir ou Bloquear.

  • CAPTCHA e Desafio: É verificado se a solicitação não vem de um bot usando quebra-cabeças CAPTCHA e desafios silenciosos.

Se uma solicitação não corresponder a nenhuma regra dentro da Web ACL, ela passa pela ação padrão (Permitir ou Bloquear). A ordem de execução das regras, definida dentro de uma Web ACL, é crucial e normalmente segue esta sequência:

  1. Permitir IPs na lista branca.

  2. Bloquear IPs na lista negra.

  3. Bloquear solicitações que correspondam a quaisquer assinaturas prejudiciais.

Integração com CloudWatch

O AWS WAF se integra ao CloudWatch para monitoramento, oferecendo métricas como AllowedRequests, BlockedRequests, CountedRequests e PassedRequests. Essas métricas são relatadas a cada minuto por padrão e retidas por um período de duas semanas.

Enumeração

Para interagir com distribuições CloudFront, você deve especificar a Região US East (N. Virginia):

  • CLI - Especifique a Região US East ao usar o escopo CloudFront: --scope CLOUDFRONT --region=us-east-1.

  • API e SDKs - Para todas as chamadas, use o endpoint da Região us-east-1.

Para interagir com serviços regionais, você deve especificar a região:

  • Exemplo com a região Europa (Espanha): --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>

Pós Exploração / Bypass

Do ponto de vista de um atacante, este serviço pode ajudar o atacante a identificar proteções WAF e exposições de rede que poderiam ajudá-lo a comprometer outros sites.

No entanto, um atacante também poderia estar interessado em interromper este serviço para que os sites não sejam protegidos pelo WAF.

Em muitas das operações de Exclusão e Atualização, seria necessário fornecer o token de bloqueio. Este token é usado para controle de concorrência sobre os recursos, garantindo que as alterações não sejam acidentalmente sobrescritas por vários usuários ou processos tentando atualizar o mesmo recurso simultaneamente. Para obter este token, você poderia realizar as operações correspondentes de listar ou obter sobre o recurso específico.

wafv2:CreateRuleGroup, wafv2:UpdateRuleGroup, wafv2:DeleteRuleGroup

Um atacante seria capaz de comprometer a segurança do recurso afetado ao:

  • Criar grupos de regras que poderiam, por exemplo, bloquear tráfego legítimo de endereços IP legítimos, causando uma negação de serviço.

  • Atualizar grupos de regras, podendo modificar suas ações, por exemplo, de Bloquear para Permitir.

  • Excluir grupos de regras que fornecem medidas de segurança 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>

Os seguintes exemplos mostram um grupo de regras que bloquearia tráfego legítimo de endereços IP específicos:

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

O arquivo rule.json teria a seguinte aparência:

[
{
"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: Acesso não autorizado, vazamentos de dados e potenciais ataques DoS.

wafv2:CreateWebACL, wafv2:UpdateWebACL, wafv2:DeleteWebACL

Com essas permissões, um atacante poderia:

  • Criar um novo Web ACL, introduzindo regras que permitem o tráfego malicioso ou bloqueiam o tráfego legítimo, tornando efetivamente o WAF inútil ou causando uma negação de serviço.

  • Atualizar Web ACLs existentes, podendo modificar regras para permitir ataques como injeção SQL ou cross-site scripting, que foram anteriormente bloqueados, ou interromper o fluxo normal de tráfego bloqueando solicitações válidas.

  • Deletar um Web ACL, deixando os recursos afetados completamente desprotegidos, expondo-os a uma ampla gama de ataques na web.

Você só pode deletar o WebACL especificado se ManagedByFirewallManager for 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>

Os seguintes exemplos mostram como atualizar um Web ACL para bloquear o tráfego legítimo de um conjunto de IPs específico. Se o IP de origem não corresponder a nenhum desses IPs, a ação padrão também será bloqueá-lo, causando um 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 atualizar o 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

O arquivo rule.json teria a seguinte aparência:

[
{
"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: Acesso não autorizado, vazamentos de dados e potenciais ataques DoS.

wafv2:AssociateWebACL, wafv2:DisassociateWebACL

A permissão wafv2:AssociateWebACL permitiria que um atacante associasse ACLs da web (Listas de Controle de Acesso) com recursos, podendo contornar controles de segurança, permitindo que tráfego não autorizado chegasse à aplicação, potencialmente levando a explorações como injeção SQL ou script entre sites (XSS). Por outro lado, com a permissão wafv2:DisassociateWebACL, o atacante poderia desativar temporariamente as proteções de segurança, expondo os recursos a vulnerabilidades sem detecção.

As permissões adicionais seriam necessárias dependendo do tipo de recurso protegido:

  • Associar

  • apigateway:SetWebACL

  • apprunner:AssociateWebAcl

  • appsync:SetWebACL

  • cognito-idp:AssociateWebACL

  • ec2:AssociateVerifiedAccessInstanceWebAcl

  • elasticloadbalancing:SetWebAcl

  • Desassociar

  • 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: Comprometimento da segurança dos recursos, aumento do risco de exploração e potenciais interrupções de serviço dentro de ambientes AWS protegidos pelo AWS WAF.

wafv2:CreateIPSet , wafv2:UpdateIPSet, wafv2:DeleteIPSet

Um atacante seria capaz de criar, atualizar e deletar os conjuntos de IP gerenciados pelo AWS WAF. Isso poderia ser perigoso, pois poderia criar novos conjuntos de IP para permitir tráfego malicioso, modificar conjuntos de IP para bloquear tráfego legítimo, atualizar conjuntos de IP existentes para incluir endereços IP maliciosos, remover endereços IP confiáveis ou deletar conjuntos de IP críticos que são 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>

O seguinte exemplo mostra como substituir o conjunto de IP existente pelo conjunto de IP desejado:

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: Acesso não autorizado e bloqueio de tráfego legítimo.

wafv2:CreateRegexPatternSet, wafv2:UpdateRegexPatternSet, wafv2:DeleteRegexPatternSet

Um atacante com essas permissões seria capaz de manipular os conjuntos de padrões de expressão regular usados pelo AWS WAF para controlar e filtrar o tráfego de entrada com base em padrões específicos.

  • Criar novos padrões regex ajudaria um atacante a permitir conteúdo prejudicial

  • Atualizando os padrões existentes, um atacante conseguiria contornar regras de segurança

  • Deletar padrões que são projetados para bloquear atividades maliciosas poderia levar um atacante a enviar cargas úteis maliciosas e contornar as medidas de segurança.

# 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 segurança, permitindo conteúdo malicioso e potencialmente expondo dados sensíveis ou interrompendo serviços e recursos protegidos pelo AWS WAF.

(wavf2:PutLoggingConfiguration & iam:CreateServiceLinkedRole), wafv2:DeleteLoggingConfiguration

Um atacante com a wafv2:DeleteLoggingConfiguration seria capaz de remover a configuração de registro do Web ACL especificado. Subsequentemente, com as permissões wavf2:PutLoggingConfiguration e iam:CreateServiceLinkedRole, um atacante poderia criar ou substituir configurações de registro (após tê-las deletado) para impedir completamente o registro ou redirecionar logs para destinos não autorizados, como buckets do Amazon S3, grupo de logs do Amazon CloudWatch Logs ou um Amazon Kinesis Data Firehose sob controle.

Durante o processo de criação, o serviço configura automaticamente as permissões necessárias para permitir que os logs sejam gravados no destino de registro especificado:

  • Amazon CloudWatch Logs: O AWS WAF cria uma política de recurso no grupo de logs do CloudWatch Logs designado. Esta política garante que o AWS WAF tenha as permissões necessárias para gravar logs no grupo de logs.

  • Bucket do Amazon S3: O AWS WAF cria uma política de bucket no bucket S3 designado. Esta política concede ao AWS WAF as permissões necessárias para fazer upload de logs no bucket especificado.

  • Amazon Kinesis Data Firehose: O AWS WAF cria um papel vinculado ao serviço especificamente para interagir com o Kinesis Data Firehose. Este papel permite que o AWS WAF entregue logs ao stream do Firehose configurado.

É possível definir apenas um 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: Visibilidade obscura em eventos de segurança, dificultando o processo de resposta a incidentes e facilitando atividades maliciosas encobertas em ambientes protegidos pelo AWS WAF.

wafv2:DeleteAPIKey

Um atacante com essas permissões seria capaz de deletar chaves de API existentes, tornando o CAPTCHA ineficaz e interrompendo a funcionalidade que depende dele, como envios de formulários e controles de acesso. Dependendo da implementação desse CAPTCHA, isso poderia levar a uma bypass de CAPTCHA ou a um DoS se o gerenciamento de erros não estiver configurado corretamente no recurso.

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

Impacto Potencial: Desativar proteções CAPTCHA ou interromper a funcionalidade do aplicativo, levando a violações de segurança e potencial roubo de dados.

wafv2:TagResource, wafv2:UntagResource

Um atacante seria capaz de adicionar, modificar ou remover tags de recursos do AWS WAFv2, como ACLs da Web, grupos de regras, conjuntos de IP, conjuntos de padrões regex e configurações 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: Manipulação de recursos, vazamento de informações, manipulação de custos e interrupção operacional.

Referências

Support HackTricks

Last updated