# AWS - WAF Enum

## AWS - WAF Enum

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

## AWS WAF

AWS WAF je **vatrozid za web aplikacije** dizajniran da **zaštiti web aplikacije ili API-je** od raznih web eksploatacija koje mogu uticati na njihovu dostupnost, sigurnost ili potrošnju resursa. Omogućava korisnicima da kontrolišu dolazni saobraćaj postavljanjem **pravila sigurnosti** koja ublažavaju tipične vektore napada kao što su SQL injekcija ili skriptovanje između sajtova, kao i definisanjem prilagođenih pravila filtriranja.

### Ključni koncepti

#### Web ACL (Lista kontrole pristupa)

Web ACL je zbirka pravila koja možete primeniti na svoje web aplikacije ili API-je. Kada povežete Web ACL sa resursom, AWS WAF ispituje dolazne zahteve na osnovu pravila definisanih u Web ACL-u i preduzima određene akcije.

#### Grupa pravila

Grupa pravila je ponovo upotrebljiva zbirka pravila koja možete primeniti na više Web ACL-a. Grupe pravila pomažu u upravljanju i održavanju doslednih skupova pravila širom različitih web aplikacija ili API-ja.

Svaka grupa pravila ima svoju povezanu **kapacitet**, koja pomaže u izračunavanju i kontroli operativnih resursa koji se koriste za pokretanje vaših pravila, grupa pravila i web ACL-a. Kada se njena vrednost postavi tokom kreiranja, nije moguće izmeniti je.

#### Pravilo

Pravilo definiše skup uslova koje AWS WAF koristi za ispitivanje dolaznih web zahteva. Postoje dve glavne vrste pravila:

1. **Redovno pravilo**: Ova vrsta pravila koristi određene uslove da odredi da li da dozvoli, blokira ili broji web zahteve.
2. **Pravilo zasnovano na brzini**: Broji zahteve sa određene IP adrese tokom petominutnog perioda. Ovde korisnici definišu prag, i ako broj zahteva sa IP adrese premaši ovaj limit unutar pet minuta, naredni zahtevi sa te IP adrese se blokiraju dok stopa zahteva ne padne ispod praga. Minimalni prag za pravila zasnovana na brzini je **2000 zahteva**.

#### Upravljana pravila

AWS WAF nudi unapred konfigurisane, upravljane skupove pravila koje održava AWS i prodavci na AWS Marketplace-u. Ovi skupovi pravila pružaju zaštitu od uobičajenih pretnji i redovno se ažuriraju kako bi se rešile nove ranjivosti.

#### IP skup

IP skup je lista IP adresa ili opsega IP adresa koje želite da dozvolite ili blokirate. IP skupovi pojednostavljuju proces upravljanja pravilima zasnovanim na IP adresama.

#### Regex obrazac skup

Regex obrazac skup sadrži jedan ili više regularnih izraza (regex) koji definišu obrasce za pretragu u web zahtevima. Ovo je korisno za složenije scenarije usklađivanja, kao što je filtriranje specifičnih sekvenci karaktera.

#### Lock Token

Lock Token se koristi za kontrolu konkurencije prilikom ažuriranja WAF resursa. Osigurava da promene ne budu slučajno prepisane od strane više korisnika ili procesa koji pokušavaju da ažuriraju isti resurs istovremeno.

#### API ključevi

API ključevi u AWS WAF se koriste za autentifikaciju zahteva za određene API operacije. Ovi ključevi su šifrovani i bezbedno upravljani kako bi se kontrolisao pristup i osiguralo da samo ovlašćeni korisnici mogu da vrše promene u WAF konfiguracijama.

- **Primer**: Integracija CAPTCHA API-ja.

#### Politika dozvola

Politika dozvola je IAM politika koja specificira ko može da vrši radnje na AWS WAF resursima. Definisanjem dozvola možete kontrolisati pristup WAF resursima i osigurati da samo ovlašćeni korisnici mogu da kreiraju, ažuriraju ili brišu konfiguracije.

#### Opseg

Parametar opsega u AWS WAF specificira da li se WAF pravila i konfiguracije primenjuju na regionalnu aplikaciju ili Amazon CloudFront distribuciju.

- **REGIONAL**: Primena na regionalne usluge kao što su Application Load Balancers (ALB), Amazon API Gateway REST API, AWS AppSync GraphQL API, Amazon Cognito korisnički bazen, AWS App Runner usluga i AWS Verified Access instanca. Specifikujete AWS region u kojem se ovi resursi nalaze.
- **CLOUDFRONT**: Primena na Amazon CloudFront distribucije, koje su globalne. WAF konfiguracije za CloudFront se upravljaju kroz region `us-east-1` bez obzira na to gde se sadržaj isporučuje.

### Ključne karakteristike

#### Kriterijumi praćenja (Uslovi)

**Uslovi** specificiraju elemente dolaznih HTTP/HTTPS zahteva koje AWS WAF prati, uključujući XSS, geografsku lokaciju (GEO), IP adrese, ograničenja veličine, SQL injekciju i obrasce (stringove i regex usklađivanje). Važno je napomenuti da **zahtevi ograničeni na CloudFront nivou na osnovu zemlje neće dostići WAF**.

Svaki AWS nalog može konfigurisati:

- **100 uslova** za svaku vrstu (osim za Regex, gde je dozvoljeno samo **10 uslova**, ali ovaj limit može biti povećan).
- **100 pravila** i **50 Web ACL-a**.
- Maksimalno **5 pravila zasnovanih na brzini**.
- Propusnost od **10,000 zahteva po sekundi** kada je WAF implementiran sa aplikacionim balansirnikom opterećenja.

#### Akcije pravila

Akcije su dodeljene svakom pravilu, a opcije su:

- **Dozvoli**: Zahtev se prosleđuje odgovarajućoj CloudFront distribuciji ili aplikacionom balansirniku opterećenja.
- **Blokiraj**: Zahtev se odmah prekida.
- **Broj**: Broji zahteve koji ispunjavaju uslove pravila. Ovo je korisno za testiranje pravila, potvrđivanje tačnosti pravila pre nego što se postavi na Dozvoli ili Blokiraj.
- **CAPTCHA i izazov:** Proverava se da zahtev ne dolazi od bota koristeći CAPTCHA zagonetke i tihe izazove.

Ako zahtev ne odgovara nijednom pravilu unutar Web ACL-a, podvrgava se **podrazumevanoj akciji** (Dozvoli ili Blokiraj). Redosled izvršenja pravila, definisan unutar Web ACL-a, je ključan i obično prati ovu sekvencu:

1. Dozvoli IP adrese sa bele liste.
2. Blokiraj IP adrese sa crne liste.
3. Blokiraj zahteve koji odgovaraju bilo kojim štetnim potpisima.

#### CloudWatch integracija

AWS WAF se integriše sa CloudWatch za praćenje, nudeći metrike kao što su AllowedRequests, BlockedRequests, CountedRequests i PassedRequests. Ove metrike se izveštavaju svake minute po defaultu i čuvaju se tokom perioda od dve nedelje.

### Enumeracija

Da biste interagovali sa CloudFront distribucijama, morate specificirati region US East (N. Virginia):

- CLI - Specifikujte region US East kada koristite CloudFront opseg: `--scope CLOUDFRONT --region=us-east-1`.
- API i SDK-ovi - Za sve pozive, koristite region endpoint us-east-1.

Da biste interagovali sa regionalnim uslugama, trebate specificirati region:

- Primer sa regionom Evropa (Španija): `--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 Exploatacija / Obilaženje

> [!TIP]
> Iz perspektive napadača, ova usluga može pomoći napadaču da identifikuje WAF zaštite i mrežne izloženosti koje bi mu mogle pomoći da kompromituje druge veb stranice.
>
> Međutim, napadač bi takođe mogao biti zainteresovan za ometanje ove usluge kako veb stranice ne bi bile zaštićene WAF-om.

U mnogim operacijama brisanja i ažuriranja biće neophodno obezbediti **lock token**. Ovaj token se koristi za kontrolu konkurencije nad resursima, osiguravajući da promene ne budu slučajno prepisane od strane više korisnika ili procesa koji pokušavaju da ažuriraju isti resurs istovremeno. Da biste dobili ovaj token, mogli biste izvršiti odgovarajuće **list** ili **get** operacije nad specifičnim resursom.

#### **`wafv2:CreateRuleGroup`, `wafv2:UpdateRuleGroup`, `wafv2:DeleteRuleGroup`**

Napadač bi mogao da kompromituje bezbednost pogođenog resursa na sledeće načine:

- Kreiranjem pravnih grupa koje bi, na primer, mogle blokirati legitimni saobraćaj sa legitimnih IP adresa, uzrokujući uskraćivanje usluge.
- Ažuriranjem pravnih grupa, sa mogućnošću da modifikuje njihove akcije, na primer, sa **Block** na **Allow**.
- Brisanjem pravnih grupa koje pružaju kritične mere bezbednosti.
```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>
```
Sledeći primeri prikazuju grupu pravila koja bi blokirala legitimni saobraćaj sa specifičnih IP adresa:
```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
```
Datoteka **rule.json** bi izgledala ovako:
```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"
}
}
]
```
**Potencijalni uticaj**: Neovlašćen pristup, curenje podataka i potencijalni DoS napadi.

#### **`wafv2:CreateWebACL`, `wafv2:UpdateWebACL`, `wafv2:DeleteWebACL`**

Sa ovim dozvolama, napadač bi mogao da:

- Kreira novi Web ACL, uvodeći pravila koja ili dozvoljavaju zlonamerni saobraćaj ili blokiraju legitimni saobraćaj, efektivno čineći WAF beskorisnim ili uzrokujući uskraćivanje usluge.
- Ažurira postojeće Web ACL-ove, imajući mogućnost da modifikuje pravila kako bi dozvolio napade kao što su SQL injekcija ili cross-site scripting, koji su prethodno bili blokirani, ili ometa normalan protok saobraćaja blokirajući validne zahteve.
- Obriše Web ACL, ostavljajući pogođene resurse potpuno nezaštićenim, izlažući ih širokom spektru web napada.

> [!NAPOMENA]
> Možete obrisati navedeni **WebACL** samo ako je **ManagedByFirewallManager** false.
```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>
```
Sledeći primeri pokazuju kako ažurirati Web ACL da blokira legitimni saobraćaj iz specifičnog IP skupa. Ako izvorni IP ne odgovara nijednom od tih IP adresa, podrazumevana akcija bi takođe bila blokiranje, što može izazvati DoS.

**Original Web ACL**:
```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"
}
```
Команда за ажурирање 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
```
Datoteka **rule.json** bi izgledala ovako:
```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"
}
}
]
```
**Potencijalni uticaj**: Neovlašćen pristup, curenje podataka i potencijalni DoS napadi.

#### **`wafv2:AssociateWebACL`, `wafv2:DisassociateWebACL`**

Dozvola **`wafv2:AssociateWebACL`** bi omogućila napadaču da poveže web ACL-ove (Liste za kontrolu pristupa) sa resursima, što bi omogućilo zaobilaženje bezbednosnih kontrola, dopuštajući neovlašćenoj saobraćaju da dođe do aplikacije, što potencijalno može dovesti do eksploatacija poput SQL injekcije ili cross-site scripting (XSS). S druge strane, sa dozvolom **`wafv2:DisassociateWebACL`**, napadač bi mogao privremeno onemogućiti bezbednosne zaštite, izlažući resurse ranjivostima bez detekcije.

Dodatne dozvole bi bile potrebne u zavisnosti od tipa zaštićenog resursa:

- **Poveži**
- apigateway:SetWebACL
- apprunner:AssociateWebAcl
- appsync:SetWebACL
- cognito-idp:AssociateWebACL
- ec2:AssociateVerifiedAccessInstanceWebAcl
- elasticloadbalancing:SetWebAcl
- **Odvoji**
- 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>
```
**Potencijalni uticaj**: Kompromitovana sigurnost resursa, povećan rizik od eksploatacije i potencijalne prekide usluga unutar AWS okruženja zaštićenih AWS WAF-om.

#### **`wafv2:CreateIPSet` , `wafv2:UpdateIPSet`, `wafv2:DeleteIPSet`**

Napadač bi mogao da kreira, ažurira i obriše IP setove kojima upravlja AWS WAF. Ovo bi moglo biti opasno jer bi mogao da kreira nove IP setove za omogućavanje zlonamernog saobraćaja, modifikuje IP setove kako bi blokirao legitimni saobraćaj, ažurira postojeće IP setove da uključe zlonamerne IP adrese, ukloni pouzdane IP adrese ili obriše kritične IP setove koji su namenjeni zaštiti kritičnih resursa.
```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>
```
Sledeći primer pokazuje kako da **prepišete postojeći IP skup željenim IP skupom**:
```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
```
**Potencijalni uticaj**: Neovlašćen pristup i blokiranje legitimnog saobraćaja.

#### **`wafv2:CreateRegexPatternSet`** , **`wafv2:UpdateRegexPatternSet`**, **`wafv2:DeleteRegexPatternSet`**

Napadač sa ovim dozvolama mogao bi da manipuliše skupovima obrazaca regularnih izraza koje koristi AWS WAF za kontrolu i filtriranje dolaznog saobraćaja na osnovu specifičnih obrazaca.

- Kreiranje novih regex obrazaca bi pomoglo napadaču da dozvoli štetni sadržaj
- Ažuriranjem postojećih obrazaca, napadač bi mogao da zaobiđe sigurnosna pravila
- Brisanje obrazaca koji su dizajnirani da blokiraju zlonamerne aktivnosti moglo bi omogućiti napadaču da pošalje zlonamerne terete i zaobiđe sigurnosne mere.
```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>
```
**Potencijalni uticaj**: Zaobilaženje bezbednosnih kontrola, omogućavanje zlonamernog sadržaja i potencijalno izlaganje osetljivih podataka ili ometanje usluga i resursa zaštićenih AWS WAF-om.

#### **(`wavf2:PutLoggingConfiguration` &** `iam:CreateServiceLinkedRole`), **`wafv2:DeleteLoggingConfiguration`**

Napadač sa **`wafv2:DeleteLoggingConfiguration`** mogao bi da ukloni konfiguraciju logovanja iz specificiranog Web ACL-a. Nakon toga, sa **`wavf2:PutLoggingConfiguration`** i **`iam:CreateServiceLinkedRole`** dozvolama, napadač bi mogao da kreira ili zameni konfiguracije logovanja (nakon što ih je obrisao) kako bi ili potpuno sprečio logovanje ili preusmerio logove na neovlašćene destinacije, kao što su Amazon S3 bucket-i, Amazon CloudWatch Logs log grupa ili Amazon Kinesis Data Firehose pod kontrolom.

Tokom procesa kreiranja, servis automatski postavlja potrebne dozvole da omogući pisanje logova na specificiranu destinaciju logovanja:

- **Amazon CloudWatch Logs:** AWS WAF kreira politiku resursa na određenoj CloudWatch Logs log grupi. Ova politika osigurava da AWS WAF ima potrebne dozvole za pisanje logova u log grupu.
- **Amazon S3 Bucket:** AWS WAF kreira politiku bucket-a na određenom S3 bucket-u. Ova politika dodeljuje AWS WAF-u potrebne dozvole za upload logova u specificirani bucket.
- **Amazon Kinesis Data Firehose:** AWS WAF kreira ulogu povezanu sa servisom specifično za interakciju sa Kinesis Data Firehose. Ova uloga omogućava AWS WAF-u da isporučuje logove u konfigurisan Firehose stream.

> [!NAPOMENA]
> Moguće je definisati samo jednu destinaciju logovanja po web ACL-u.
```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>]
```
**Potencijalni uticaj:** Zamagljena vidljivost u bezbednosne događaje, otežan proces odgovora na incidente i olakšavanje tajnih zlonamernih aktivnosti unutar AWS WAF-zaštićenih okruženja.

#### **`wafv2:DeleteAPIKey`**

Napadač sa ovim dozvolama mogao bi da obriše postojeće API ključeve, čineći CAPTCHA neefikasnim i ometajući funkcionalnost koja se na njemu oslanja, kao što su slanje obrazaca i kontrole pristupa. U zavisnosti od implementacije ovog CAPTCHA, to bi moglo dovesti do zaobilaženja CAPTCHA ili do DoS-a ako upravljanje greškama nije pravilno postavljeno u resursu.
```bash
# Delete API key
aws wafv2 delete-api-key --api-key <value> --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>
```
**Potencijalni uticaj**: Onemogućavanje CAPTCHA zaštita ili ometanje funkcionalnosti aplikacije, što dovodi do bezbednosnih propusta i potencijalne krađe podataka.

#### **`wafv2:TagResource`, `wafv2:UntagResource`**

Napadač bi mogao da doda, izmeni ili ukloni oznake sa AWS WAFv2 resursa, kao što su Web ACL-ovi, grupe pravila, IP setovi, regex obrasci i konfiguracije logovanja.
```bash
# Tag
aws wafv2 tag-resource --resource-arn <value> --tags <value>
# Untag
aws wafv2 untag-resource --resource-arn <value> --tag-keys <value>
```
**Potencijalni uticaj**: Manipulacija resursima, curenje informacija, manipulacija troškovima i operativne smetnje.

## Reference

- [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}}
