AWS - WAF Enum
Last updated
Last updated
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
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 cross-site scripting, e também definindo regras de filtragem personalizadas.
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.
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.
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:
Regra Regular: Este tipo de regra usa condições especificadas para determinar se deve permitir, bloquear ou contar solicitações web.
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.
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 regularmente atualizados para abordar novas vulnerabilidades.
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.
Um Conjunto de Padrões Regex contém uma ou mais expressões regulares (regex) que definem padrões a serem pesquisados nas solicitações web. Isso é útil para cenários de correspondência mais complexos, como filtrar sequências específicas de caracteres.
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.
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.
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.
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 Application Load Balancers (ALB), Amazon API Gateway REST API, AWS AppSync GraphQL API, Amazon Cognito user pool, AWS App Runner service 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.
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 (strings e correspondência 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 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:
Permitir IPs na lista branca.
Bloquear IPs na lista negra.
Bloquear solicitações que correspondam a quaisquer assinaturas prejudiciais.
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.
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
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.
Os seguintes exemplos mostram um grupo de regras que bloquearia o tráfego legítimo de endereços IP específicos:
O arquivo rule.json teria a seguinte aparência:
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 seria capaz de:
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 script entre sites, que anteriormente estavam bloqueados, ou interromper o fluxo normal de tráfego bloqueando solicitações válidas.
Deletar um Web ACL, deixando os recursos afetados totalmente desprotegidos, expondo-os a uma ampla gama de ataques na web.
Você só pode deletar o WebACL especificado se ManagedByFirewallManager for falso.
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:
Comando para atualizar o Web ACL:
O arquivo rule.json teria a seguinte aparência:
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
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.
O seguinte exemplo mostra como substituir o conjunto de IP existente pelo conjunto de IP desejado:
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.
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.
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 a gestão de erros não estiver configurada corretamente no recurso.
Impacto Potencial: Desativar as proteções CAPTCHA ou interromper a funcionalidade da aplicação, 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 dos recursos do AWS WAFv2, como ACLs da Web, grupos de regras, conjuntos de IP, conjuntos de padrões regex e configurações de registro.
Impacto Potencial: Manipulação de recursos, vazamento de informações, manipulação de custos e interrupção operacional.
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)