AWS - WAF Enum
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
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.
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 je ponovo upotrebljiva zbirka pravila koja možete primeniti na više Web ACL-ova. 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-ova. Kada se njena vrednost postavi tokom kreiranja, nije moguće izmeniti je.
Pravilo definiše skup uslova koje AWS WAF koristi za ispitivanje dolaznih web zahteva. Postoje dve glavne vrste pravila:
Redovno pravilo: Ova vrsta pravila koristi određene uslove da odredi da li da dozvoli, blokira ili broji web zahteve.
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 u 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.
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 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 skup obrazaca 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 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 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 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.
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.
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-ova.
Maksimalno 5 pravila zasnovanih na brzini.
Propusnost od 10,000 zahteva po sekundi kada je WAF implementiran sa aplikacionim balansirnikom opterećenja.
Akcije se dodeljuju 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:
Dozvoli IP adrese sa bele liste.
Blokiraj IP adrese sa crne liste.
Blokiraj zahteve koji odgovaraju bilo kojim štetnim potpisima.
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.
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
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.
Следећи примери показују групу правила која би блокирала легитиман саобраћај из специфичних IP адреса:
Datoteka rule.json bi izgledala ovako:
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 omogućavaju zlonamerni saobraćaj ili blokiraju legitimni saobraćaj, efikasno č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.
Možete obrisati navedeni WebACL samo ako je ManagedByFirewallManager false.
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 uzrokuje DoS.
Original Web ACL:
Команда за ажурирање Web ACL:
Datoteka rule.json bi izgledala ovako:
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 Kontrole Pristupa) sa resursima, što bi omogućilo zaobilaženje bezbednosnih kontrola, dopuštajući neovlašćenoj saobraćaju da dođe do aplikacije, potencijalno dovodeći 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 otkrivanja.
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
Potencijalni uticaj: Kompromitovana sigurnost resursa, povećan rizik od eksploatacije i potencijalni prekidi 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.
Sledeći primer pokazuje kako da prepišete postojeći IP skup željenim IP skupom:
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 štetne sadržaje
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 payload-ove i zaobiđe sigurnosne mere.
Potencijalni Uticaj: Obilaž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 potrebne dozvole za upload logova u specificirani bucket.
Amazon Kinesis Data Firehose: AWS WAF kreira ulogu povezanu sa servisom posebno za interakciju sa Kinesis Data Firehose. Ova uloga omogućava AWS WAF da isporučuje logove u konfigurisan Firehose stream.
Moguće je definisati samo jednu destinaciju logovanja po web ACL-u.
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 bi mogao 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 ili do zaobilaženja CAPTCHA ili do DoS-a ako upravljanje greškama nije pravilno postavljeno u resursu.
Potencijalni uticaj: Onemogućavanje CAPTCHA zaštita ili ometanje funkcionalnosti aplikacije, što može dovesti 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.
Potencijalni uticaj: Manipulacija resursima, curenje informacija, manipulacija troškovima i operativne smetnje.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)