AWS - WAF Enum

AWS - Enumerazione di AWS WAF

Sostieni HackTricks

AWS WAF

AWS WAF è un firewall per applicazioni web progettato per proteggere le applicazioni web o API da vari exploit web che potrebbero comprometterne la disponibilità, la sicurezza o il consumo di risorse. Permette agli utenti di controllare il traffico in ingresso configurando regole di sicurezza che mitigano tipici vettori di attacco come l'SQL injection o lo scripting tra siti e definendo anche regole di filtraggio personalizzate.

Concetti chiave

Web ACL (Access Control List)

Un Web ACL è una raccolta di regole che è possibile applicare alle proprie applicazioni web o API. Quando si associa un Web ACL a una risorsa, AWS WAF ispeziona le richieste in ingresso in base alle regole definite nel Web ACL e adotta le azioni specificate.

Gruppo di regole

Un Gruppo di regole è una raccolta riutilizzabile di regole che è possibile applicare a più Web ACL. I gruppi di regole aiutano a gestire e mantenere insiemi di regole coerenti tra diverse applicazioni web o API.

Ogni gruppo di regole ha la sua capacità associata, che aiuta a calcolare e controllare le risorse operative utilizzate per eseguire le proprie regole, gruppi di regole e Web ACL. Una volta impostato il suo valore durante la creazione, non è possibile modificarlo.

Regola

Una regola definisce un insieme di condizioni che AWS WAF utilizza per ispezionare le richieste web in ingresso. Ci sono due tipi principali di regole:

  1. Regola regolare: Questo tipo di regola utilizza condizioni specificate per determinare se consentire, bloccare o contare le richieste web.

  2. Regola basata sul tasso: Conta le richieste da un indirizzo IP specifico in un periodo di cinque minuti. Qui, gli utenti definiscono una soglia e se il numero di richieste da un IP supera questo limite entro cinque minuti, le richieste successive da quell'IP vengono bloccate fino a quando il tasso di richiesta scende al di sotto della soglia. La soglia minima per le regole basate sul tasso è di 2000 richieste.

Regole gestite

AWS WAF offre set di regole preconfigurati e gestiti che sono mantenuti da AWS e dai venditori del Marketplace di AWS. Questi set di regole forniscono protezione contro minacce comuni e vengono regolarmente aggiornati per affrontare nuove vulnerabilità.

Insieme di IP

Un Insieme di IP è un elenco di indirizzi IP o intervalli di indirizzi IP che si desidera consentire o bloccare. Gli insiemi di IP semplificano il processo di gestione delle regole basate su IP.

Insieme di modelli Regex

Un Insieme di modelli Regex contiene una o più espressioni regolari (regex) che definiscono modelli da cercare nelle richieste web. Questo è utile per scenari di corrispondenza più complessi, come il filtraggio di sequenze specifiche di caratteri.

Token di blocco

Un Token di blocco viene utilizzato per il controllo della concorrenza durante l'apportare modifiche alle risorse di WAF. Garantisce che le modifiche non vengano sovrascritte accidentalmente da più utenti o processi che tentano di aggiornare contemporaneamente la stessa risorsa.

Chiavi API

Le Chiavi API in AWS WAF vengono utilizzate per autenticare le richieste a determinate operazioni API. Queste chiavi sono crittografate e gestite in modo sicuro per controllare l'accesso e garantire che solo gli utenti autorizzati possano apportare modifiche alle configurazioni di WAF.

  • Esempio: Integrazione dell'API CAPTCHA.

Politica di autorizzazione

Una Politica di autorizzazione è una policy IAM che specifica chi può eseguire azioni sulle risorse di AWS WAF. Definendo le autorizzazioni, è possibile controllare l'accesso alle risorse di WAF e garantire che solo gli utenti autorizzati possano creare, aggiornare o eliminare configurazioni.

Ambito

Il parametro di ambito in AWS WAF specifica se le regole e le configurazioni di WAF si applicano a un'applicazione regionale o a una distribuzione Amazon CloudFront.

  • REGIONALE: Si applica ai servizi regionali come Application Load Balancers (ALB), Amazon API Gateway REST API, AWS AppSync GraphQL API, Amazon Cognito user pool, servizio AWS App Runner e istanza AWS Verified Access. Si specifica la regione AWS in cui si trovano queste risorse.

  • CLOUDFRONT: Si applica alle distribuzioni Amazon CloudFront, che sono globali. Le configurazioni di WAF per CloudFront sono gestite attraverso la regione us-east-1 indipendentemente da dove viene servito il contenuto.

Funzionalità chiave

Criteri di monitoraggio (Condizioni)

Le Condizioni specificano gli elementi delle richieste HTTP/HTTPS in ingresso che AWS WAF monitora, tra cui XSS, posizione geografica (GEO), indirizzi IP, vincoli di dimensione, SQL Injection e modelli (corrispondenza di stringhe e regex). È importante notare che le richieste limitate a livello di CloudFront in base al paese non raggiungeranno WAF.

Ogni account AWS può configurare:

  • 100 condizioni per ogni tipo (tranne per Regex, dove sono consentite solo 10 condizioni, ma questo limite può essere aumentato).

  • 100 regole e 50 Web ACL.

  • Un massimo di 5 regole basate sul tasso.

  • Un throughput di 10.000 richieste al secondo quando WAF è implementato con un bilanciamento del carico dell'applicazione.

Azioni delle regole

Le azioni vengono assegnate a ciascuna regola, con le opzioni:

  • Consenti: La richiesta viene inoltrata alla distribuzione CloudFront appropriata o al bilanciamento del carico dell'applicazione.

  • Blocca: La richiesta viene terminata immediatamente.

  • Conta: Conta le richieste che soddisfano le condizioni della regola. Questo è utile per il test della regola, confermando l'accuratezza della regola prima di impostarla su Consenti o Blocca.

  • CAPTCHA e Sfida: Viene verificato che la richiesta non provenga da un bot utilizzando puzzle CAPTCHA e sfide silenziose.

Se una richiesta non corrisponde a nessuna regola all'interno del Web ACL, viene sottoposta all'azione predefinita (Consenti o Blocca). L'ordine di esecuzione delle regole, definito all'interno di un Web ACL, è cruciale e di solito segue questa sequenza:

  1. Consenti gli IP in whitelist.

  2. Blocca gli IP in blacklist.

  3. Blocca le richieste che corrispondono a eventuali firme dannose.

Integrazione con CloudWatch

AWS WAF si integra con CloudWatch per il monitoraggio, offrendo metriche come RichiesteConsentite, RichiesteBloccate, RichiesteContate e RichiestePassate. Queste metriche vengono segnalate ogni minuto per impostazione predefinita e conservate per un periodo di due settimane.

Enumerazione

Per interagire con le distribuzioni CloudFront, è necessario specificare la Regione US East (N. Virginia):

  • CLI - Specificare la Regione US East quando si utilizza l'ambito CloudFront: --scope CLOUDFRONT --region=us-east-1 .

  • API e SDK - Per tutte le chiamate, utilizzare il punto di accesso della Regione us-east-1.

Per interagire con i servizi regionali, è necessario specificare la regione:

  • Esempio con la regione Europa (Spagna): --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 Esploitation / Bypass

Dal punto di vista di un attaccante, questo servizio può aiutare l'attaccante a identificare le protezioni WAF e le esposizioni di rete che potrebbero aiutarlo a compromettere altri siti web.

Tuttavia, un attaccante potrebbe anche essere interessato a interrompere questo servizio in modo che i siti web non siano protetti dal WAF.

In molte delle operazioni di Eliminazione e Aggiornamento sarebbe necessario fornire il token di blocco. Questo token viene utilizzato per il controllo di concorrenza sulle risorse, garantendo che le modifiche non vengano sovrascritte accidentalmente da più utenti o processi che tentano di aggiornare contemporaneamente la stessa risorsa. Per ottenere questo token è possibile eseguire le operazioni elenco o ottenere corrispondenti sulla risorsa specifica.

wafv2:CreateRuleGroup, wafv2:UpdateRuleGroup, wafv2:DeleteRuleGroup

Un attaccante potrebbe compromettere la sicurezza della risorsa interessata:

  • Creando gruppi di regole che potrebbero, ad esempio, bloccare il traffico legittimo da indirizzi IP legittimi, causando un rifiuto di servizio.

  • Aggiornando i gruppi di regole, potendo modificare le sue azioni ad esempio da Blocca a Consenti.

  • Eliminando gruppi di regole che forniscono misure di sicurezza critiche.

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

Il seguente esempio mostra un gruppo di regole che bloccherebbe il traffico legittimo da indirizzi IP specifici:

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

Il file rule.json avrebbe questo aspetto:

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

Impatto Potenziale: Accesso non autorizzato, violazioni dei dati e potenziali attacchi DoS.

wafv2:CreateWebACL, wafv2:UpdateWebACL, wafv2:DeleteWebACL

Con queste autorizzazioni, un attaccante sarebbe in grado di:

  • Creare un nuovo Web ACL, introducendo regole che permettono il traffico dannoso o bloccano il traffico legittimo, rendendo efficacemente inutile il WAF o causando un rifiuto di servizio.

  • Aggiornare i Web ACL esistenti, potendo modificare le regole per permettere attacchi come l'iniezione SQL o lo scripting tra siti, che erano stati precedentemente bloccati, o interrompere il flusso normale del traffico bloccando richieste valide.

  • Eliminare un Web ACL, lasciando le risorse interessate completamente non protette, esponendole a una vasta gamma di attacchi web.

Puoi eliminare il WebACL specificato solo se ManagedByFirewallManager è 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>

Il seguente esempio mostra come aggiornare un Web ACL per bloccare il traffico legittimo da un insieme di IP specifico. Se l'IP di origine non corrisponde a nessuno di quegli IP, l'azione predefinita bloccherà anche quello, causando un attacco DoS.

Web ACL originale:

{
"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 per aggiornare il 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

Il file rule.json avrebbe questo aspetto:

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

Impatto Potenziale: Accesso non autorizzato, violazioni dei dati e potenziali attacchi DoS.

wafv2:AssociateWebACL, wafv2:DisassociateWebACL

Il permesso wafv2:AssociateWebACL consentirebbe a un attaccante di associare ACL web (Liste di Controllo degli Accessi) con risorse, potendo così eludere i controlli di sicurezza, permettendo al traffico non autorizzato di raggiungere l'applicazione, potenzialmente portando a exploit come l'SQL injection o il cross-site scripting (XSS). Al contrario, con il permesso wafv2:DisassociateWebACL, l'attaccante potrebbe disabilitare temporaneamente le protezioni di sicurezza, esponendo le risorse a vulnerabilità senza essere rilevato.

I permessi aggiuntivi sarebbero necessari a seconda del tipo di risorsa protetta:

  • Associare

  • apigateway:SetWebACL

  • apprunner:AssociateWebAcl

  • appsync:SetWebACL

  • cognito-idp:AssociateWebACL

  • ec2:AssociateVerifiedAccessInstanceWebAcl

  • elasticloadbalancing:SetWebAcl

  • Disassociare

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

Impatto Potenziale: Sicurezza delle risorse compromessa, aumento del rischio di sfruttamento e possibili interruzioni del servizio all'interno degli ambienti AWS protetti da AWS WAF.

wafv2:CreateIPSet, wafv2:UpdateIPSet, wafv2:DeleteIPSet

Un attaccante potrebbe essere in grado di creare, aggiornare ed eliminare gli insiemi di IP gestiti da AWS WAF. Questo potrebbe essere pericoloso poiché potrebbe creare nuovi insiemi di IP per consentire traffico dannoso, modificare gli insiemi di IP per bloccare il traffico legittimo, aggiornare gli insiemi di IP esistenti per includere indirizzi IP dannosi, rimuovere indirizzi IP fidati o eliminare insiemi di IP critici che sono destinati a proteggere risorse critiche.

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

L'esempio seguente mostra come sovrascrivere l'insieme IP esistente con l'insieme IP desiderato:

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

Impatto Potenziale: Accesso non autorizzato e blocco del traffico legittimo.

wafv2:CreateRegexPatternSet, wafv2:UpdateRegexPatternSet, wafv2:DeleteRegexPatternSet

Un attaccante con queste autorizzazioni sarebbe in grado di manipolare i set di modelli di espressioni regolari utilizzati da AWS WAF per controllare e filtrare il traffico in ingresso in base a modelli specifici.

  • Creare nuovi modelli regex aiuterebbe un attaccante a consentire contenuti dannosi

  • Aggiornando i modelli esistenti, un attaccante potrebbe eludere le regole di sicurezza

  • Eliminare modelli progettati per bloccare attività dannose potrebbe portare un attaccante a inviare payload dannosi ed eludere le misure di sicurezza.

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

Impatto Potenziale: Ignorare i controlli di sicurezza, consentendo contenuti dannosi e potenzialmente esponendo dati sensibili o interrompendo servizi e risorse protette da AWS WAF.

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

Un attaccante con il permesso wafv2:DeleteLoggingConfiguration sarebbe in grado di rimuovere la configurazione di logging dal Web ACL specificato. Successivamente, con i permessi wavf2:PutLoggingConfiguration e iam:CreateServiceLinkedRole, un attaccante potrebbe creare o sostituire configurazioni di logging (dopo averle eliminate) per impedire del tutto il logging o reindirizzare i log verso destinazioni non autorizzate, come i bucket Amazon S3, il gruppo di log Amazon CloudWatch Logs o un Amazon Kinesis Data Firehose sotto il proprio controllo.

Durante il processo di creazione, il servizio imposta automaticamente le autorizzazioni necessarie per consentire la scrittura dei log nella destinazione di logging specificata:

  • Amazon CloudWatch Logs: AWS WAF crea una policy delle risorse sul gruppo di log CloudWatch Logs designato. Questa policy garantisce che AWS WAF abbia le autorizzazioni necessarie per scrivere i log nel gruppo di log.

  • Bucket Amazon S3: AWS WAF crea una policy del bucket sul bucket S3 designato. Questa policy concede ad AWS WAF le autorizzazioni necessarie per caricare i log nel bucket specificato.

  • Amazon Kinesis Data Firehose: AWS WAF crea un ruolo collegato al servizio specificamente per interagire con Kinesis Data Firehose. Questo ruolo consente ad AWS WAF di consegnare i log allo stream Firehose configurato.

È possibile definire una sola destinazione di logging per ogni 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>]

Impatto Potenziale: Oscurare la visibilità sugli eventi di sicurezza, rendere difficile il processo di risposta agli incidenti e facilitare attività maliziose nascoste all'interno degli ambienti protetti da AWS WAF.

wafv2:DeleteAPIKey

Un attaccante con queste autorizzazioni sarebbe in grado di eliminare le chiavi API esistenti, rendendo inefficace il CAPTCHA e interrompendo la funzionalità che ne dipende, come le sottomissioni di moduli e i controlli di accesso. A seconda dell'implementazione di questo CAPTCHA, ciò potrebbe portare o a un bypass del CAPTCHA o a un attacco DoS se la gestione degli errori non è correttamente impostata nella risorsa.

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

Impatto Potenziale: Disabilitare le protezioni CAPTCHA o interrompere la funzionalità dell'applicazione, portando a violazioni della sicurezza e possibili furti di dati.

wafv2:TagResource, wafv2:UntagResource

Un attaccante sarebbe in grado di aggiungere, modificare o rimuovere tag dalle risorse AWS WAFv2, come Web ACL, gruppi di regole, set di IP, set di pattern regex e configurazioni di logging.

# Tag
aws wafv2 tag-resource --resource-arn <value> --tags <value>
# Untag
aws wafv2 untag-resource --resource-arn <value> --tag-keys <value>

Impatto Potenziale: Manipolazione delle risorse, divulgazione di informazioni, manipolazione dei costi e interruzione operativa.

Riferimenti

Sostieni HackTricks

Last updated