AWS - WAF Enum

AWS - Enumeração do WAF

Suporte ao HackTricks

AWS WAF

O AWS WAF é um firewall de aplicação web projetado para proteger aplicações web ou APIs contra vários exploits web que podem afetar 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 de SQL ou scripts entre sites e também definindo regras de filtragem personalizadas.

Conceitos-chave

Lista de Controle de Acesso da Web (Web ACL)

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. Os 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 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 permite, bloqueia ou conta 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, solicitações subsequentes desse IP são bloqueadas até que a taxa de solicitação caia abaixo do limite. O limite mínimo para regras baseadas em taxa é de 2000 solicitações.

Regras Gerenciadas

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

Conjunto de IPs

Um Conjunto de IPs é uma lista de endereços IP ou intervalos de endereços IP que você deseja permitir ou bloquear. Os conjuntos de IPs 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 procurados em solicitações web. Isso é útil para cenários de correspondência mais complexos, como filtragem de 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 sobrescritas acidentalmente 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 determinadas 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 executar ações em 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 Aplicativos (ALB), API REST do Amazon API Gateway, API GraphQL do AWS AppSync, pool de usuários do Amazon Cognito, serviço AWS App Runner e instância de Acesso Verificado da AWS. Você especifica a região da AWS onde esses recursos estão localizados.

  • CLOUDFRONT: Aplica-se a distribuições do Amazon CloudFront, que são globais. As configurações do WAF para o 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, incluindo XSS, localização geográfica (GEO), endereços IP, restrições de tamanho, injeção de SQL e padrões (correspondência de strings e regex). É importante observar que solicitações restritas no nível do CloudFront com base no país não alcançarão o WAF.

Cada conta da 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.

  • Uma taxa de transferência de 10.000 solicitações por segundo quando o WAF é implementado com um balanceador de carga de aplicativos.

Ações de Regra

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

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

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

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

  • CAPTCHA e Desafio: É verificado que 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 de regras, definida dentro de uma Web ACL, é crucial e geralmente 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 o CloudWatch

O AWS WAF se integra ao CloudWatch para monitoramento, oferecendo métricas como Solicitações Permitidas, Solicitações Bloqueadas, Solicitações Contadas e Solicitações Passadas. 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 as distribuições do CloudFront, você deve especificar a Região Leste dos EUA (N. Virginia):

  • CLI - Especifique a Região Leste dos EUA ao usar o escopo do 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 do WAF e exposições de rede que poderiam ajudá-lo a comprometer outros sites.

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

Em muitas das operações de Excluir e Atualizar, 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 sobrescritas acidentalmente por vários usuários ou processos que tentam atualizar o mesmo recurso simultaneamente. Para obter este token, você poderia realizar as operações list ou get correspondentes sobre o recurso específico.

wafv2:CreateRuleGroup, wafv2:UpdateRuleGroup, wafv2:DeleteRuleGroup

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

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

O seguinte exemplo mostra um grupo de regras que bloquearia o 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, violações de dados e possíveis ataques de negação de serviço.

wafv2:CreateWebACL, wafv2:UpdateWebACL, wafv2:DeleteWebACL

Com essas permissões, um atacante seria capaz de:

  • Criar um novo Web ACL, introduzindo regras que permitem tráfego malicioso ou bloqueiam tráfego legítimo, efetivamente tornando 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 de SQL ou scripts entre sites, que foram previamente bloqueados, ou interromper o fluxo normal de tráfego bloqueando solicitações válidas.

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

Você só pode excluir 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>

O seguinte exemplo mostra como atualizar um Web ACL para bloquear o tráfego legítimo de um conjunto específico de IPs. 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 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

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, violações de dados e possíveis ataques de negação de serviço (DoS).

wafv2:AssociateWebACL, wafv2:DisassociateWebACL

A permissão wafv2:AssociateWebACL permitiria a um atacante associar listas de controle de acesso (ACLs) da web a recursos, podendo contornar controles de segurança, permitindo que tráfego não autorizado alcance a aplicação, potencialmente levando a exploits como injeção de SQL ou scripting entre sites (XSS). Por outro lado, com a permissão wafv2:DisassociateWebACL, o atacante poderia desativar temporariamente 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: Segurança dos recursos comprometida, aumento do risco de exploração e possíveis interrupções de serviço dentro dos ambientes AWS protegidos pelo AWS WAF.

wafv2:CreateIPSet, wafv2:UpdateIPSet, wafv2:DeleteIPSet

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

O exemplo a seguir mostra como sobrescrever o conjunto de IPs existente pelo conjunto de IPs 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

  • Ao atualizar os padrões existentes, um atacante poderia contornar regras de segurança

  • Excluir padrões que são projetados para bloquear atividades maliciosas poderia levar um atacante a enviar payloads maliciosos 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: Bypassar 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 permissão wafv2:DeleteLoggingConfiguration seria capaz de remover a configuração de log do Web ACL especificado. Posteriormente, com as permissões wavf2:PutLoggingConfiguration e iam:CreateServiceLinkedRole, um atacante poderia criar ou substituir configurações de log (após tê-las excluído) para impedir completamente o registro ou redirecionar logs para destinos não autorizados, como buckets Amazon S3, grupo de logs 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 log especificado:

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

  • Bucket Amazon S3: O AWS WAF cria uma política de bucket no bucket S3 designado. Essa 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 uma função vinculada ao serviço especificamente para interagir com o Kinesis Data Firehose. Essa função permite que o AWS WAF entregue logs ao fluxo Firehose configurado.

É possível definir apenas um destino de log 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: Obscurecer a visibilidade nos eventos de segurança, dificultar o processo de resposta a incidentes e facilitar atividades maliciosas encobertas dentro de ambientes protegidos pelo AWS WAF.

wafv2:DeleteAPIKey

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

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

Potencial Impacto: Desativar proteções CAPTCHA ou interromper a funcionalidade da aplicação, levando a violações de segurança e possíveis roubo de dados.

wafv2:TagResource, wafv2:UntagResource

Um atacante seria capaz de adicionar, modificar ou remover tags de recursos do AWS WAFv2, como Listas de Controle de Acesso da Web (Web ACLs), grupos de regras, conjuntos de IPs, conjuntos de padrões regex e configurações de log.

# 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

Apoie o HackTricks

Last updated