AWS - WAF Enum
AWS - Enumeração do WAF
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:
Regra Regular: Este tipo de regra usa condições especificadas para determinar se permite, bloqueia ou conta 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, 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:
Permitir IPs na lista branca.
Bloquear IPs na lista negra.
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
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
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.
O seguinte exemplo mostra 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, violações de dados e possíveis ataques de negação de serviço.
wafv2:CreateWebACL
, wafv2:UpdateWebACL
, wafv2:DeleteWebACL
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.
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:
Comando para atualizar o Web ACL:
O arquivo rule.json teria a seguinte aparência:
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
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
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
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.
O exemplo a seguir mostra como sobrescrever o conjunto de IPs existente pelo conjunto de IPs desejado:
Impacto Potencial: Acesso não autorizado e bloqueio de tráfego legítimo.
wafv2:CreateRegexPatternSet
, wafv2:UpdateRegexPatternSet
, wafv2:DeleteRegexPatternSet
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.
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
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.
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
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.
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
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.
Impacto Potencial: Manipulação de recursos, vazamento de informações, manipulação de custos e interrupção operacional.
Referências
Last updated