# AWS - WAF Enum

{{#include ../../../../banners/hacktricks-training.md}}

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

#### Rule Group

Un Rule Group è 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.

#### Rule

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. **Regular Rule**: Questo tipo di regola utilizza condizioni specificate per determinare se consentire, bloccare o contare le richieste web.
2. **Rate-Based Rule**: 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 su tasso è **2000 richieste**.

#### Managed Rules

AWS WAF offre set di regole gestite preconfigurati, mantenuti da AWS e 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

#### Monitoring Criteria (Conditions)

**Conditions** 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 ACLs**.
- Un massimo di **5 regole basate su tasso**.
- Un throughput di **10.000 richieste al secondo** quando WAF è implementato con un application load balancer.

#### Rule actions

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

- **Allow**: La richiesta viene inoltrata alla distribuzione CloudFront appropriata o all'Application Load Balancer.
- **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 and 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.

#### CloudWatch Integration

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.

### Enumeration

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

> [!TIP]
> 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, potresti 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.
```bash
# 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:
```bash
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ì:
```json
[
{
"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 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.

> [!NOTE]
> Puoi eliminare il **WebACL** specificato solo se **ManagedByFirewallManager** è falso.
```bash
# 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 comunque quella di bloccarlo, causando un DoS.

**Web ACL originale**:
```json
{
"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:
```json
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ì:
```json
[
{
"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 (Access Control Lists) 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:

- **Associate**
- apigateway:SetWebACL
- apprunner:AssociateWebAcl
- appsync:SetWebACL
- cognito-idp:AssociateWebACL
- ec2:AssociateVerifiedAccessInstanceWebAcl
- elasticloadbalancing:SetWebAcl
- **Disassociate**
- apigateway:SetWebACL
- apprunner:DisassociateWebAcl
- appsync:SetWebACL
- cognito-idp:DisassociateWebACL
- ec2:DisassociateVerifiedAccessInstanceWebAcl
- elasticloadbalancing:SetWebAcl
```bash
# 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 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.
```bash
# 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**:
```bash
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 pattern specifici.

- 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.
```bash
# 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 imposta 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.

> [!NOTE]
> È possibile definire solo una destinazione di logging per ogni web ACL.
```bash
# 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 occulte 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.
```bash
# 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.
```bash
# 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

- [https://www.citrusconsulting.com/aws-web-application-firewall-waf/#:\~:text=Conditions%20allow%20you%20to%20specify,user%20via%20a%20web%20application](https://www.citrusconsulting.com/aws-web-application-firewall-waf/)
- [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awswafv2.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awswafv2.html)

{{#include ../../../../banners/hacktricks-training.md}}
