AWS - WAF Enum
Last updated
Last updated
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
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.
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.
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.
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:
Regola Normale: Questo tipo di regola utilizza condizioni specificate per determinare se consentire, bloccare o contare le richieste web.
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.
AWS WAF offre set di regole gestite preconfigurati, 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à.
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.
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.
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 contemporaneamente.
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.
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.
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.
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 bloccate 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 ACL.
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.
Le azioni sono assegnate a ciascuna regola, con le seguenti opzioni:
Allow: La richiesta viene inoltrata alla distribuzione CloudFront appropriata o al bilanciatore di carico per applicazioni.
Block: La richiesta viene terminata immediatamente.
Count: Conta le richieste che soddisfano le condizioni della regola. Questo è utile per il test 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:
Consenti IP in whitelist.
Blocca IP in blacklist.
Blocca le richieste che corrispondono a qualsiasi firma dannosa.
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.
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
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 sovrascritte accidentalmente 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 gruppi di regole, potendo modificare le sue azioni ad esempio da Block a Allow.
Eliminando gruppi di regole che forniscono misure di sicurezza critiche.
I seguenti esempi mostrano un gruppo di regole che bloccherebbe il traffico legittimo da indirizzi IP specifici:
Il file rule.json apparirebbe così:
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.
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:
Comando per aggiornare il Web ACL:
Il file rule.json apparirebbe così:
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
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.
L'esempio seguente mostra come sovrascrivere l'IP set esistente con l'IP set desiderato:
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 espressione regolare 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 e eludere le misure di sicurezza.
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.
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 inefficace il CAPTCHA e interrompendo la funzionalità che si basa su di esso, come l'invio 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.
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.
Impatto Potenziale: Manomissione delle risorse, perdita di informazioni, manipolazione dei costi e interruzione operativa.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)