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 Frequenza: 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 frequenza è 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 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 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, Amazon Cognito user pool, AWS App Runner service e AWS Verified Access instance. 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 ogni 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 frequenza.
Un throughput di 10.000 richieste al secondo quando WAF è implementato con un application load balancer.
Le azioni sono assegnate a ciascuna regola, con le seguenti opzioni:
Allow: La richiesta viene inoltrata alla distribuzione CloudFront o all'Application Load Balancer 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:
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 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.
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.
Original Web ACL:
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 di IP gestiti da AWS WAF. Questo potrebbe essere pericoloso poiché potrebbe creare nuovi set di IP per consentire il traffico malevolo, modificare i set di IP per bloccare il traffico legittimo, aggiornare i set di IP esistenti per includere indirizzi IP malevoli, rimuovere indirizzi IP fidati o eliminare set di IP critici destinati a proteggere risorse critiche.
L'esempio seguente mostra come sovrascrivere il set IP esistente con il set IP 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
Cancellare pattern progettati per bloccare attività dannose potrebbe consentire a un attaccante di inviare payload dannosi ed 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 impedire 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 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.
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.
Impara e pratica Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)