AWS - WAF Enum
Last updated
Last updated
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
AWS WAF to zapora aplikacji webowej, zaprojektowana w celu ochrony aplikacji webowych lub API przed różnymi exploitami webowymi, które mogą wpłynąć na ich dostępność, bezpieczeństwo lub zużycie zasobów. Umożliwia użytkownikom kontrolowanie ruchu przychodzącego poprzez ustawienie reguł bezpieczeństwa, które łagodzą typowe wektory ataków, takie jak SQL injection czy cross-site scripting, a także poprzez definiowanie niestandardowych reguł filtrujących.
Web ACL to zbiór reguł, które można zastosować do swoich aplikacji webowych lub API. Gdy powiążesz Web ACL z zasobem, AWS WAF sprawdza przychodzące żądania na podstawie reguł zdefiniowanych w Web ACL i podejmuje określone działania.
Grupa reguł to wielokrotnego użytku zbiór reguł, które można zastosować do wielu Web ACL. Grupy reguł pomagają zarządzać i utrzymywać spójne zestawy reguł w różnych aplikacjach webowych lub API.
Każda grupa reguł ma przypisaną pojemność, która pomaga obliczyć i kontrolować zasoby operacyjne używane do uruchamiania twoich reguł, grup reguł i Web ACL. Po ustawieniu jej wartości podczas tworzenia, nie można jej zmienić.
Reguła definiuje zestaw warunków, które AWS WAF wykorzystuje do sprawdzania przychodzących żądań webowych. Istnieją dwa główne typy reguł:
Reguła standardowa: Ten typ reguły wykorzystuje określone warunki do ustalenia, czy zezwolić, zablokować lub zliczyć żądania webowe.
Reguła oparta na stawce: Zlicza żądania z określonego adresu IP w ciągu pięciu minut. Użytkownicy definiują próg, a jeśli liczba żądań z danego IP przekroczy ten limit w ciągu pięciu minut, kolejne żądania z tego IP są blokowane, aż wskaźnik żądań spadnie poniżej progu. Minimalny próg dla reguł opartych na stawce to 2000 żądań.
AWS WAF oferuje wstępnie skonfigurowane, zarządzane zestawy reguł, które są utrzymywane przez AWS i sprzedawców z AWS Marketplace. Te zestawy reguł zapewniają ochronę przed powszechnymi zagrożeniami i są regularnie aktualizowane, aby zająć się nowymi lukami.
Zestaw IP to lista adresów IP lub zakresów adresów IP, które chcesz zezwolić lub zablokować. Zestawy IP upraszczają proces zarządzania regułami opartymi na IP.
Zestaw wzorców Regex zawiera jedną lub więcej wyrażeń regularnych (regex), które definiują wzorce do wyszukiwania w żądaniach webowych. Jest to przydatne w bardziej złożonych scenariuszach dopasowywania, takich jak filtrowanie określonych sekwencji znaków.
Token blokady jest używany do kontroli współbieżności podczas aktualizacji zasobów WAF. Zapewnia, że zmiany nie są przypadkowo nadpisywane przez wielu użytkowników lub procesy próbujące jednocześnie zaktualizować ten sam zasób.
Klucze API w AWS WAF są używane do uwierzytelniania żądań do określonych operacji API. Te klucze są szyfrowane i zarządzane w sposób bezpieczny, aby kontrolować dostęp i zapewnić, że tylko autoryzowani użytkownicy mogą wprowadzać zmiany w konfiguracjach WAF.
Przykład: Integracja z API CAPTCHA.
Polityka uprawnień to polityka IAM, która określa, kto może wykonywać działania na zasobach AWS WAF. Definiując uprawnienia, możesz kontrolować dostęp do zasobów WAF i zapewnić, że tylko autoryzowani użytkownicy mogą tworzyć, aktualizować lub usuwać konfiguracje.
Parametr zakresu w AWS WAF określa, czy reguły i konfiguracje WAF mają zastosowanie do aplikacji regionalnej, czy do dystrybucji Amazon CloudFront.
REGIONAL: Dotyczy regionalnych usług, takich jak Application Load Balancers (ALB), Amazon API Gateway REST API, AWS AppSync GraphQL API, Amazon Cognito user pool, AWS App Runner service i AWS Verified Access instance. Określasz region AWS, w którym znajdują się te zasoby.
CLOUDFRONT: Dotyczy dystrybucji Amazon CloudFront, które są globalne. Konfiguracje WAF dla CloudFront są zarządzane przez region us-east-1
, niezależnie od tego, gdzie treść jest serwowana.
Warunki określają elementy przychodzących żądań HTTP/HTTPS, które AWS WAF monitoruje, w tym XSS, lokalizację geograficzną (GEO), adresy IP, ograniczenia rozmiaru, SQL Injection i wzorce (dopasowywanie ciągów i regex). Ważne jest, aby zauważyć, że żądania ograniczone na poziomie CloudFront na podstawie kraju nie dotrą do WAF.
Każde konto AWS może skonfigurować:
100 warunków dla każdego typu (z wyjątkiem Regex, gdzie dozwolone są tylko 10 warunków, ale ten limit można zwiększyć).
100 reguł i 50 Web ACL.
Maksymalnie 5 reguł opartych na stawce.
Przepustowość 10,000 żądań na sekundę, gdy WAF jest wdrożony z aplikacyjnym load balancerem.
Działania są przypisane do każdej reguły, a opcje to:
Zezwól: Żądanie jest przekazywane do odpowiedniej dystrybucji CloudFront lub Application Load Balancer.
Zablokuj: Żądanie jest natychmiast przerywane.
Zlicz: Zlicza żądania spełniające warunki reguły. Jest to przydatne do testowania reguł, potwierdzania dokładności reguły przed ustawieniem jej na Zezwól lub Zablokuj.
CAPTCHA i Wyzwanie: Weryfikuje, że żądanie nie pochodzi od bota, używając zagadek CAPTCHA i cichych wyzwań.
Jeśli żądanie nie pasuje do żadnej reguły w Web ACL, podlega domyślnemu działaniu (Zezwól lub Zablokuj). Kolejność wykonywania reguł, zdefiniowana w Web ACL, jest kluczowa i zazwyczaj przebiega w następującej kolejności:
Zezwól na białe listy IP.
Zablokuj czarne listy IP.
Zablokuj żądania pasujące do jakichkolwiek szkodliwych sygnatur.
AWS WAF integruje się z CloudWatch w celu monitorowania, oferując metryki takie jak AllowedRequests, BlockedRequests, CountedRequests i PassedRequests. Te metryki są raportowane co minutę domyślnie i przechowywane przez okres dwóch tygodni.
Aby interagować z dystrybucjami CloudFront, musisz określić region US East (N. Virginia):
CLI - Określ region US East, gdy używasz zakresu CloudFront: --scope CLOUDFRONT --region=us-east-1
.
API i SDK - Dla wszystkich wywołań użyj punktu końcowego regionu us-east-1.
Aby interagować z regionalnymi usługami, powinieneś określić region:
Przykład z regionem Europa (Hiszpania): --scope REGIONAL --region=eu-south-2
Z perspektywy atakującego, ta usługa może pomóc atakującemu zidentyfikować zabezpieczenia WAF i ekspozycje sieciowe, które mogą pomóc mu w kompromitacji innych stron.
Jednak atakujący może być również zainteresowany zakłóceniem tej usługi, aby strony nie były chronione przez WAF.
W wielu operacjach usuwania i aktualizacji konieczne byłoby podanie tokena blokady. Token ten jest używany do kontroli współbieżności nad zasobami, zapewniając, że zmiany nie są przypadkowo nadpisywane przez wielu użytkowników lub procesy próbujące jednocześnie zaktualizować ten sam zasób. Aby uzyskać ten token, można wykonać odpowiednie operacje list lub get na konkretnym zasobie.
wafv2:CreateRuleGroup
, wafv2:UpdateRuleGroup
, wafv2:DeleteRuleGroup
Atakujący mógłby skompromitować bezpieczeństwo dotkniętego zasobu poprzez:
Tworzenie grup reguł, które mogłyby na przykład blokować legalny ruch z legalnych adresów IP, powodując odmowę usługi.
Aktualizowanie grup reguł, mając możliwość modyfikacji ich działań na przykład z Block na Allow.
Usuwanie grup reguł, które zapewniają krytyczne środki bezpieczeństwa.
Poniższe przykłady pokazują grupę reguł, która zablokowałaby legalny ruch z określonych adresów IP:
Plik rule.json wyglądałby następująco:
Potencjalny wpływ: Nieautoryzowany dostęp, naruszenia danych i potencjalne ataki DoS.
wafv2:CreateWebACL
, wafv2:UpdateWebACL
, wafv2:DeleteWebACL
Dzięki tym uprawnieniom, atakujący mógłby:
Utworzyć nowy Web ACL, wprowadzając zasady, które albo przepuszczają złośliwy ruch, albo blokują legalny ruch, skutecznie czyniąc WAF bezużytecznym lub powodując odmowę usługi.
Zaktualizować istniejące Web ACL, mając możliwość modyfikacji zasad w celu zezwolenia na ataki takie jak SQL injection lub cross-site scripting, które wcześniej były blokowane, lub zakłócić normalny przepływ ruchu, blokując ważne żądania.
Usunąć Web ACL, pozostawiając dotknięte zasoby całkowicie niechronione, narażając je na szeroki zakres ataków internetowych.
Możesz usunąć określony WebACL tylko wtedy, gdy ManagedByFirewallManager jest fałszywe.
Przykłady poniżej pokazują, jak zaktualizować Web ACL, aby zablokować legalny ruch z określonego zestawu adresów IP. Jeśli adres IP źródłowy nie pasuje do żadnego z tych adresów IP, domyślna akcja również będzie polegać na zablokowaniu go, co spowoduje DoS.
Oryginalny Web ACL:
Polecenie do zaktualizowania Web ACL:
Plik rule.json wyglądałby następująco:
Potencjalny wpływ: Nieautoryzowany dostęp, naruszenia danych i potencjalne ataki DoS.
wafv2:AssociateWebACL
, wafv2:DisassociateWebACL
Uprawnienie wafv2:AssociateWebACL
pozwoliłoby atakującemu na powiązanie web ACL (List Kontroli Dostępu) z zasobami, co umożliwiłoby obejście zabezpieczeń, pozwalając na nieautoryzowany ruch do aplikacji, co potencjalnie prowadziłoby do wykorzystania luk, takich jak SQL injection lub cross-site scripting (XSS). Z drugiej strony, z uprawnieniem wafv2:DisassociateWebACL
, atakujący mógłby tymczasowo wyłączyć zabezpieczenia, narażając zasoby na luki bez wykrycia.
Dodatkowe uprawnienia byłyby potrzebne w zależności od typu chronionego zasobu:
Powiąż
apigateway:SetWebACL
apprunner:AssociateWebAcl
appsync:SetWebACL
cognito-idp:AssociateWebACL
ec2:AssociateVerifiedAccessInstanceWebAcl
elasticloadbalancing:SetWebAcl
Rozwiąż
apigateway:SetWebACL
apprunner:DisassociateWebAcl
appsync:SetWebACL
cognito-idp:DisassociateWebACL
ec2:DisassociateVerifiedAccessInstanceWebAcl
elasticloadbalancing:SetWebAcl
Potencjalny wpływ: Kompromitacja bezpieczeństwa zasobów, zwiększone ryzyko wykorzystania oraz potencjalne zakłócenia usług w środowiskach AWS chronionych przez AWS WAF.
wafv2:CreateIPSet
, wafv2:UpdateIPSet
, wafv2:DeleteIPSet
Atakujący mógłby tworzyć, aktualizować i usuwać zestawy IP zarządzane przez AWS WAF. Może to być niebezpieczne, ponieważ mógłby tworzyć nowe zestawy IP, aby zezwolić na złośliwy ruch, modyfikować zestawy IP w celu zablokowania legalnego ruchu, aktualizować istniejące zestawy IP, aby uwzględnić złośliwe adresy IP, usuwać zaufane adresy IP lub usuwać krytyczne zestawy IP, które mają na celu ochronę krytycznych zasobów.
Poniższy przykład pokazuje, jak nadpisać istniejący zestaw IP pożądanym zestawem IP:
Potencjalny wpływ: Nieautoryzowany dostęp i blokowanie legalnego ruchu.
wafv2:CreateRegexPatternSet
, wafv2:UpdateRegexPatternSet
, wafv2:DeleteRegexPatternSet
Napastnik z tymi uprawnieniami mógłby manipulować zestawami wzorców wyrażeń regularnych używanymi przez AWS WAF do kontrolowania i filtrowania przychodzącego ruchu na podstawie określonych wzorców.
Tworzenie nowych wzorców regex pomogłoby napastnikowi w zezwoleniu na szkodliwą treść
Aktualizując istniejące wzorce, napastnik mógłby obejść zasady bezpieczeństwa
Usunięcie wzorców zaprojektowanych w celu blokowania złośliwych działań mogłoby doprowadzić napastnika do wysyłania złośliwych ładunków i obejścia środków bezpieczeństwa.
Potencjalny wpływ: Ominięcie zabezpieczeń, co pozwala na wprowadzenie złośliwej treści i potencjalne ujawnienie wrażliwych danych lub zakłócenie usług i zasobów chronionych przez AWS WAF.
wavf2:PutLoggingConfiguration
& iam:CreateServiceLinkedRole
), wafv2:DeleteLoggingConfiguration
Napastnik z uprawnieniami wafv2:DeleteLoggingConfiguration
mógłby usunąć konfigurację logowania z określonego Web ACL. Następnie, z uprawnieniami wavf2:PutLoggingConfiguration
i iam:CreateServiceLinkedRole
, napastnik mógłby utworzyć lub zastąpić konfiguracje logowania (po ich usunięciu), aby całkowicie uniemożliwić logowanie lub przekierować logi do nieautoryzowanych miejsc, takich jak kosze Amazon S3, grupy logów Amazon CloudWatch Logs lub Amazon Kinesis Data Firehose pod kontrolą.
Podczas procesu tworzenia, usługa automatycznie ustawia niezbędne uprawnienia, aby umożliwić zapis logów do określonego miejsca logowania:
Amazon CloudWatch Logs: AWS WAF tworzy politykę zasobów na wyznaczonej grupie logów CloudWatch. Polityka ta zapewnia, że AWS WAF ma wymagane uprawnienia do zapisywania logów w grupie logów.
Amazon S3 Bucket: AWS WAF tworzy politykę kosza na wyznaczonym koszu S3. Polityka ta przyznaje AWS WAF niezbędne uprawnienia do przesyłania logów do określonego kosza.
Amazon Kinesis Data Firehose: AWS WAF tworzy rolę powiązaną z usługą specjalnie do interakcji z Kinesis Data Firehose. Ta rola pozwala AWS WAF na dostarczanie logów do skonfigurowanego strumienia Firehose.
Możliwe jest zdefiniowanie tylko jednego miejsca logowania na web ACL.
Potencjalny wpływ: Ukryta widoczność zdarzeń bezpieczeństwa, utrudnienie procesu reagowania na incydenty oraz ułatwienie ukrytych złośliwych działań w środowiskach chronionych przez AWS WAF.
wafv2:DeleteAPIKey
Atakujący z tymi uprawnieniami mógłby usunąć istniejące klucze API, co uczyniłoby CAPTCHA nieskutecznym i zakłóciłoby funkcjonalność, która na nim polega, taką jak przesyłanie formularzy i kontrole dostępu. W zależności od implementacji tego CAPTCHA, mogłoby to prowadzić do obejścia CAPTCHA lub do DoS, jeśli zarządzanie błędami nie jest odpowiednio ustawione w zasobie.
Potencjalny wpływ: Wyłączenie ochrony CAPTCHA lub zakłócenie funkcjonalności aplikacji, co prowadzi do naruszeń bezpieczeństwa i potencjalnej kradzieży danych.
wafv2:TagResource
, wafv2:UntagResource
Atakujący mógłby dodać, zmodyfikować lub usunąć tagi z zasobów AWS WAFv2, takich jak Web ACL, grupy reguł, zestawy IP, zestawy wzorców regex i konfiguracje logowania.
Potencjalny wpływ: Manipulacja zasobami, wyciek informacji, manipulacja kosztami i zakłócenia operacyjne.
Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)