AWS - WAF Enum

AWS - WAF Enum

Supporta HackTricks

AWS WAF

AWS WAF è un firewall per applicazioni web progettato per proteggere le applicazioni web o le API contro vari exploit web che possono influenzare la loro disponibilità, sicurezza o consumo di risorse. Consente agli utenti di controllare il traffico in entrata impostando regole di sicurezza che mitigano i vettori di attacco tipici come l'iniezione SQL o il cross-site scripting e anche definendo regole di filtraggio personalizzate.

Concetti chiave

Web ACL (Access Control List)

Un Web ACL è una raccolta di regole che puoi applicare alle tue applicazioni web o API. Quando associ un Web ACL a una risorsa, AWS WAF ispeziona le richieste in arrivo in base alle regole definite nel Web ACL e intraprende le azioni specificate.

Gruppo di Regole

Un Gruppo di Regole è una raccolta riutilizzabile di regole che puoi applicare a più Web ACL. I gruppi di regole aiutano a gestire e mantenere set 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 tue 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 arrivo. Ci sono due tipi principali di regole:

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

  2. Regola Basata su 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 non scende al di sotto della soglia. La soglia minima per le regole basate su tasso è 2000 richieste.

Regole Gestite

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

IP Set

Un IP Set è un elenco di indirizzi IP o intervalli di indirizzi IP che desideri consentire o bloccare. Gli IP set semplificano il processo di gestione delle regole basate su IP.

Regex Pattern Set

Un Regex Pattern Set 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.

Lock Token

Un Lock Token è utilizzato per il controllo della concorrenza quando si apportano aggiornamenti alle risorse WAF. Garantisce che le modifiche non vengano sovrascritte accidentalmente da più utenti o processi che tentano di aggiornare la stessa risorsa simultaneamente.

API Keys

Le API Keys in AWS WAF sono 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 WAF.

  • Esempio: Integrazione dell'API CAPTCHA.

Permission Policy

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

Scope

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

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

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

Caratteristiche chiave

Criteri di Monitoraggio (Condizioni)

Condizioni specificano gli elementi delle richieste HTTP/HTTPS in arrivo che AWS WAF monitora, che includono XSS, posizione geografica (GEO), indirizzi IP, vincoli di dimensione, iniezione SQL 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 ciascun tipo (eccetto per Regex, dove sono consentite solo 10 condizioni, ma questo limite può essere aumentato).

  • 100 regole e 50 Web ACLs.

  • Un massimo di 5 regole basate su tasso.

  • Un throughput di 10.000 richieste al secondo quando WAF è implementato con un bilanciatore di carico per applicazioni.

Azioni delle Regole

Le azioni sono assegnate a ciascuna regola, con le opzioni che sono:

  • Allow: La richiesta viene inoltrata alla distribuzione CloudFront o al bilanciatore di carico per applicazioni appropriato.

  • Block: La richiesta viene terminata immediatamente.

  • Count: Conta le richieste che soddisfano le condizioni della regola. Questo è utile per il testing delle regole, confermando l'accuratezza della regola prima di impostarla su Allow o Block.

  • CAPTCHA e Challenge: 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, subisce l'azione predefinita (Allow o Block). L'ordine di esecuzione delle regole, definito all'interno di un Web ACL, è cruciale e segue tipicamente questa sequenza:

  1. Consenti IP in whitelist.

  2. Blocca IP in blacklist.

  3. Blocca le richieste che corrispondono a qualsiasi firma dannosa.

Integrazione con CloudWatch

AWS WAF si integra con CloudWatch per il monitoraggio, offrendo metriche come AllowedRequests, BlockedRequests, CountedRequests e PassedRequests. Queste metriche vengono segnalate ogni minuto per impostazione predefinita e conservate per un periodo di due settimane.

Enumerazione

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

  • CLI - Specifica la Regione US East quando utilizzi lo scope CloudFront: --scope CLOUDFRONT --region=us-east-1.

  • API e SDK - Per tutte le chiamate, utilizza l'endpoint della Regione us-east-1.

Per interagire con i servizi regionali, dovresti 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 Exploitation / 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 lock token. Questo token è utilizzato per il controllo della concorrenza sulle risorse, garantendo che le modifiche non vengano accidentalmente sovrascritte da più utenti o processi che tentano di aggiornare la stessa risorsa simultaneamente. Per ottenere questo token, è possibile eseguire le corrispondenti operazioni di list o get sulla risorsa specifica.

wafv2:CreateRuleGroup, wafv2:UpdateRuleGroup, wafv2:DeleteRuleGroup

Un attaccante sarebbe in grado di compromettere la sicurezza della risorsa interessata:

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

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

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

I seguenti esempi mostrano 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 apparirebbe così:

[
{
"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 questi permessi, un attaccante sarebbe in grado di:

  • Creare un nuovo Web ACL, introducendo regole che consentono il traffico malevolo o bloccano il traffico legittimo, rendendo di fatto il WAF inutile o causando una negazione del servizio.

  • Aggiornare i Web ACL esistenti, potendo modificare le regole per consentire attacchi come SQL injection o cross-site scripting, che erano precedentemente bloccati, o interrompere il normale flusso di traffico bloccando richieste valide.

  • Eliminare un Web ACL, lasciando le risorse interessate completamente scoperte, esponendole a un'ampia 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>

I seguenti esempi mostrano come aggiornare un Web ACL per bloccare il traffico legittimo da un set di IP specifico. Se l'IP di origine non corrisponde a nessuno di quegli IP, l'azione predefinita sarebbe anch'essa quella di bloccarlo, causando un 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 apparirebbe così:

[
{
"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, riuscendo a bypassare i controlli di sicurezza, permettendo al traffico non autorizzato di raggiungere l'applicazione, portando potenzialmente a exploit come SQL injection o 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 rilevamento.

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

  • Associa

  • apigateway:SetWebACL

  • apprunner:AssociateWebAcl

  • appsync:SetWebACL

  • cognito-idp:AssociateWebACL

  • ec2:AssociateVerifiedAccessInstanceWebAcl

  • elasticloadbalancing:SetWebAcl

  • Disassocia

  • 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 potenziali interruzioni del servizio all'interno degli ambienti AWS protetti da AWS WAF.

wafv2:CreateIPSet , wafv2:UpdateIPSet, wafv2:DeleteIPSet

Un attaccante sarebbe in grado di creare, aggiornare e eliminare i set IP gestiti da AWS WAF. Questo potrebbe essere pericoloso poiché potrebbe creare nuovi set IP per consentire il traffico malevolo, modificare i set IP per bloccare il traffico legittimo, aggiornare i set IP esistenti per includere indirizzi IP malevoli, rimuovere indirizzi IP fidati o eliminare set IP critici 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'IP set esistente con l'IP set 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 questi permessi sarebbe in grado di manipolare i set di pattern di espressioni regolari utilizzati da AWS WAF per controllare e filtrare il traffico in entrata in base a specifici modelli.

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

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

  • Eliminare pattern progettati per bloccare attività dannose potrebbe consentire a un attaccante di 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: Bypassare i controlli di sicurezza, consentendo contenuti dannosi e potenzialmente esponendo dati sensibili o interrompendo servizi e risorse protetti da AWS WAF.

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

Un attaccante con il wafv2:DeleteLoggingConfiguration sarebbe in grado di rimuovere la configurazione di logging dall'ACL Web specificato. Successivamente, con i permessi wavf2:PutLoggingConfiguration e iam:CreateServiceLinkedRole, un attaccante potrebbe creare o sostituire le configurazioni di logging (dopo averle eliminate) per prevenire completamente il logging o reindirizzare i log a destinazioni non autorizzate, come bucket Amazon S3, gruppi di log Amazon CloudWatch Logs o un Amazon Kinesis Data Firehose sotto controllo.

Durante il processo di creazione, il servizio configura automaticamente i permessi necessari per consentire la scrittura dei log nella destinazione di logging specificata:

  • Amazon CloudWatch Logs: AWS WAF crea una policy di risorsa sul gruppo di log CloudWatch Logs designato. Questa policy garantisce che AWS WAF abbia i permessi necessari per scrivere log nel gruppo di log.

  • Amazon S3 Bucket: AWS WAF crea una policy di bucket sul bucket S3 designato. Questa policy concede ad AWS WAF i permessi necessari per caricare 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 log allo stream Firehose configurato.

È possibile definire solo una 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à malevole nascoste all'interno degli ambienti protetti da AWS WAF.

wafv2:DeleteAPIKey

Un attaccante con questi permessi sarebbe in grado di eliminare le chiavi API esistenti, rendendo il CAPTCHA inefficace e interrompendo la funzionalità che si basa su di esso, come le sottomissioni di moduli e i controlli di accesso. A seconda dell'implementazione di questo CAPTCHA, ciò potrebbe portare a un bypass del CAPTCHA o a un DoS se la gestione degli errori non è impostata correttamente 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 potenziale furto di dati.

wafv2:TagResource, wafv2:UntagResource

Un attaccante sarebbe in grado di aggiungere, modificare o rimuovere tag dalle risorse AWS WAFv2, come ACL Web, 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: Manomissione delle risorse, perdita di informazioni, manipolazione dei costi e interruzione operativa.

Riferimenti

Supporta HackTricks

Last updated