AWS - WAF Enum

AWS - WAF Enum

Wesprzyj HackTricks

AWS WAF

AWS WAF to firewall aplikacji internetowych zaprojektowany do ochrony aplikacji internetowych lub interfejsów API przed różnymi atakami internetowymi, 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 ustawianie reguł bezpieczeństwa, które łagodzą typowe wektory ataków, takie jak wstrzyknięcia SQL lub ataki typu cross-site scripting oraz poprzez definiowanie niestandardowych reguł filtrowania.

Kluczowe pojęcia

Web ACL (Access Control List)

Web ACL to zbiór reguł, które można zastosować do aplikacji internetowych lub interfejsów API. Gdy skojarzysz Web ACL z zasobem, AWS WAF sprawdza przychodzące żądania na podstawie zdefiniowanych reguł w Web ACL i podejmuje określone działania.

Grupa reguł

Grupa reguł to wielokrotnie używany zbiór reguł, które można zastosować do wielu Web ACL-ów. Grupy reguł pomagają zarządzać i utrzymywać spójne zestawy reguł w różnych aplikacjach internetowych lub interfejsach API.

Każda grupa reguł ma swoją powiązaną pojemność, która pomaga obliczyć i kontrolować zasoby operacyjne używane do uruchamiania twoich reguł, grup reguł i Web ACL-ów. Po ustawieniu wartości podczas tworzenia, nie można jej modyfikować.

Reguła

Reguła definiuje zestaw warunków, które AWS WAF wykorzystuje do sprawdzania przychodzących żądań internetowych. Istnieją dwa główne typy reguł:

  1. Reguła regularna: Ten typ reguły używa określonych warunków do określenia, czy zezwolić, zablokować czy zliczyć żądania internetowe.

  2. Reguła oparta na częstości: Liczy żądania z określonego adresu IP w ciągu pięciu minut. Użytkownicy określają 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 częstości to 2000 żądań.

Zarządzane reguły

AWS WAF oferuje prekonfigurowane, zarządzane zestawy reguł utrzymywane przez AWS i sprzedawców z AWS Marketplace. Te zestawy reguł zapewniają ochronę przed powszechnymi zagrożeniami i są regularnie aktualizowane, aby rozwiązywać nowe podatności.

Zestaw adresów IP

Zestaw adresów IP to lista adresów IP lub zakresów adresów IP, które chcesz zezwolić lub zablokować. Zestawy IP ułatwiają zarządzanie regułami opartymi na adresach IP.

Zestaw wzorców Regex

Zestaw wzorców Regex zawiera jedno lub więcej wyrażeń regularnych (regex), które definiują wzorce do wyszukiwania w żądaniach internetowych. Jest to przydatne do bardziej złożonych scenariuszy dopasowywania, takich jak filtrowanie określonych sekwencji znaków.

Token blokady

Token blokady służy do kontroli współbieżności podczas aktualizacji zasobów WAF. Zapewnia, że zmiany nie zostaną przypadkowo nadpisane przez wielu użytkowników lub procesy próbujące jednocześnie aktualizować ten sam zasób.

Klucze API

Klucze API w AWS WAF służą do uwierzytelniania żądań do określonych operacji interfejsu API. Klucze te są szyfrowane i zarządzane w sposób bezpieczny, aby kontrolować dostęp i zapewnić, że tylko upoważnieni użytkownicy mogą dokonywać zmian w konfiguracjach WAF.

  • Przykład: Integracja z interfejsem API CAPTCHA.

Polityka uprawnień

Polityka uprawnień to polityka IAM, która określa, kto może wykonywać działania na zasobach AWS WAF. Poprzez definiowanie uprawnień możesz kontrolować dostęp do zasobów WAF i zapewnić, że tylko upoważnieni użytkownicy mogą tworzyć, aktualizować lub usuwać konfiguracje.

Zakres

Parametr zakresu w AWS WAF określa, czy reguły i konfiguracje WAF mają zastosowanie do regionalnej aplikacji czy dystrybucji Amazon CloudFront.

  • REGIONAL: Dotyczy usług regionalnych, takich jak Load Balancer aplikacji (ALB), interfejs API REST Amazon API Gateway, interfejs API GraphQL AWS AppSync, pulpit użytkownika Amazon Cognito, usługa AWS App Runner i instancja AWS Verified Access. 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 jest dostarczana zawartość.

Główne funkcje

Kryteria monitorowania (Warunki)

Warunki określają elementy przychodzących żądań HTTP/HTTPS, które AWS WAF monitoruje, obejmując XSS, lokalizację geograficzną (GEO), adresy IP, ograniczenia wielkości, wstrzyknięcia SQL i wzorce (dopasowanie ciągów i regex). Ważne jest, ż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 jest tylko 10 warunków, ale ten limit można zwiększyć).

  • 100 reguł i 50 Web ACL-ów.

  • Maksymalnie 5 reguł opartych na częstości.

  • Przepustowość 10 000 żądań na sekundę przy implementacji WAF z balanserem obciążenia aplikacji.

Działania reguł

Działania są przypisywane do każdej reguły, a opcje to:

  • Zezwól: Żądanie jest przekazywane do odpowiedniej dystrybucji CloudFront lub balansera obciążenia aplikacji.

  • Zablokuj: Żądanie jest natychmiast zakończone.

  • Zlicz: Liczy żądania spełniające warunki reguły. Jest to przydatne do testowania reguły, potwierdzając jej poprawność przed ustawieniem jej na Zezwalaj lub Blokuj.

  • CAPTCHA i Wyzwanie: Sprawdzane jest, czy żądanie nie pochodzi od bota, używając łamigłówek CAPTCHA i cichych wyzwań.

Jeśli żądanie nie pasuje do żadnej reguły w Web ACL, podlega domyślnej akcji (Zezwól lub Zablokuj). Kolejność wykonywania reguł, zdefiniowana w ramach Web ACL, jest kluczowa i zazwyczaj podąża za tą sekwencją:

  1. Zezwalaj na IP z białej listy.

  2. Zablokuj IP z czarnej listy.

  3. Zablokuj żądania pasujące do jakichkolwiek szkodliwych sygnatur.

Integracja z CloudWatch

AWS WAF integruje się z CloudWatch w celu monitorowania, oferując metryki takie jak AllowedRequests, BlockedRequests, CountedRequests i PassedRequests. Te metryki są raportowane domyślnie co minutę i przechowywane przez okres dwóch tygodni.

Wyliczanie

Aby działać z dystrybucjami CloudFront, musisz określić region US East (N. Virginia):

  • CLI - Określ region US East, gdy korzystasz z 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 działać z usługami regionalnymi, należy określić region:

  • Przykład z regionem Europa (Hiszpania): --scope REGIONAL --region=eu-south-2

# 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 Eksploatacja / Ominięcie

Z perspektywy atakującego, ta usługa może pomóc atakującemu zidentyfikować zabezpieczenia WAF oraz narażenia sieciowe, które mogą mu pomóc w skompromitowaniu innych stron internetowych.

Jednakże atakujący może także być zainteresowany zakłóceniem tej usługi, aby strony nie były chronione przez WAF.

W wielu operacjach Usuń i Aktualizuj konieczne będzie podanie tokena blokady. Ten token służy do kontroli współbieżności nad zasobami, zapewniając, że zmiany nie zostaną przypadkowo nadpisane przez wielu użytkowników lub procesy próbujące jednocześnie aktualizować 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 na przykład mogą blokować ruch z prawidłowych adresów IP, powodując odmowę usługi.

  • Aktualizowanie grup reguł, umożliwiając modyfikację działań, na przykład z Blokuj na Zezwalaj.

  • Usuwanie grup reguł, które zapewniają istotne środki bezpieczeństwa.

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

Przykłady poniżej pokazują grupę reguł, która zablokowałaby legalny ruch z określonych adresów IP:

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

Plik rule.json miałby postać:

[
{
"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"
}
}
]

Potencjalne skutki: Nieautoryzowany dostęp, naruszenia danych oraz potencjalne ataki typu DoS.

wafv2:CreateWebACL, wafv2:UpdateWebACL, wafv2:DeleteWebACL

Dzięki tym uprawnieniom atakujący mógłby:

  • Tworzyć nowe Web ACL, wprowadzając reguły, które pozwalają na przepuszczenie złośliwego ruchu lub blokują legalny ruch, efektywnie czyniąc WAF bezużytecznym lub powodując odmowę usługi.

  • Aktualizować istniejące Web ACL, mając możliwość modyfikacji reguł, aby zezwolić na ataki takie jak wstrzyknięcia SQL lub ataki typu cross-site scripting, które wcześniej były blokowane, lub zakłócić normalny przepływ ruchu, blokując poprawne żądania.

  • Usuwać 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 jeśli ManagedByFirewallManager ma wartość false.

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

Oto przykłady aktualizacji listy kontrolnej sieci Web w celu zablokowania legalnego ruchu 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ż go zablokuje, co spowoduje DoS.

Oryginalna lista kontrolna sieci Web:

{
"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"
}

Command to update the Web ACL:

Komenda aktualizacji Web ACL:

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

Plik rule.json miałby postać:

[
{
"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"
}
}
]

Potencjalne skutki: Nieautoryzowany dostęp, naruszenia danych oraz potencjalne ataki typu DoS.

wafv2:AssociateWebACL, wafv2:DisassociateWebACL

Uprawnienie wafv2:AssociateWebACL umożliwiłoby atakującemu powiązanie list kontrolnych dostępu (ACL) z zasobami, co pozwoliłoby ominąć kontrole bezpieczeństwa, umożliwiając nieautoryzowany ruch do aplikacji, potencjalnie prowadząc do eksploatacji takiej jak wstrzyknięcie SQL lub ataki typu cross-site scripting (XSS). Z kolei, dzięki uprawnieniu wafv2:DisassociateWebACL, atakujący mógłby tymczasowo wyłączyć zabezpieczenia, narażając zasoby na podatności bez wykrycia.

Dodatkowe uprawnienia będą wymagane w zależności od typu chronionego zasobu:

  • Powiąż

  • apigateway:SetWebACL

  • apprunner:AssociateWebAcl

  • appsync:SetWebACL

  • cognito-idp:AssociateWebACL

  • ec2:AssociateVerifiedAccessInstanceWebAcl

  • elasticloadbalancing:SetWebAcl

  • Rozłącz

  • apigateway:SetWebACL

  • apprunner:DisassociateWebAcl

  • appsync:SetWebACL

  • cognito-idp:DisassociateWebACL

  • ec2:DisassociateVerifiedAccessInstanceWebAcl

  • elasticloadbalancing:SetWebAcl

# Associate
aws wafv2 associate-web-acl --web-acl-arn <value> --resource-arn <value>
# Disassociate
aws wafv2 disassociate-web-acl --resource-arn <value>

Potencjalne skutki: Zwiększone ryzyko bezpieczeństwa zasobów, zwiększone ryzyko eksploatacji oraz potencjalne zakłócenia w świadczeniu usług w środowiskach AWS chronionych przez AWS WAF.

wafv2:CreateIPSet, wafv2:UpdateIPSet, wafv2:DeleteIPSet

Atakujący byłby w stanie 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 zawierały złośliwe adresy IP, usuwać zaufane adresy IP lub usuwać krytyczne zestawy IP, które mają chronić krytyczne zasoby.

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

Przykład poniżej pokazuje, jak nadpisać istniejący zestaw IP przez pożądany zestaw IP:

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

Potencjalny wpływ: Nieautoryzowany dostęp i blokada legalnego ruchu.

wafv2:CreateRegexPatternSet, wafv2:UpdateRegexPatternSet, wafv2:DeleteRegexPatternSet

Atakujący posiadający te uprawnienia byłby w stanie manipulować zestawami wzorców wyrażeń regularnych używanych przez AWS WAF do kontrolowania i filtrowania przychodzącego ruchu na podstawie określonych wzorców.

  • Tworzenie nowych wzorców regex pomogłoby atakującemu w dopuszczeniu szkodliwej zawartości

  • Aktualizując istniejące wzorce, atakujący mógłby ominąć zasady bezpieczeństwa

  • Usuwanie wzorców zaprojektowanych do blokowania złośliwych działań mogłoby skłonić atakującego do wysyłania złośliwych ładunków i omijania środków bezpieczeństwa.

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

Potencjalne skutki: Ominięcie kontroli bezpieczeństwa, umożliwiające wstrzyknięcie złośliwej zawartości i potencjalnie ujawnienie wrażliwych danych lub zakłócenie usług i zasobów chronionych przez AWS WAF.

(wavf2:PutLoggingConfiguration & iam:CreateServiceLinkedRole), wafv2:DeleteLoggingConfiguration

Atakujący posiadający uprawnienia wafv2:DeleteLoggingConfiguration mógłby usunąć konfigurację logowania z określonego Web ACL. Następnie, dzięki uprawnieniom wavf2:PutLoggingConfiguration i iam:CreateServiceLinkedRole, atakujący mógłby utworzyć lub zastąpić konfiguracje logowania (po ich usunięciu), aby albo całkowicie uniemożliwić logowanie, albo przekierować logi do nieautoryzowanych miejsc docelowych, takich jak wiadra Amazon S3, grupa logów Amazon CloudWatch Logs lub strumień Amazon Kinesis Data Firehose pod kontrolą.

Podczas procesu tworzenia usługa automatycznie ustawia niezbędne uprawnienia, aby umożliwić zapisywanie logów do określonego miejsca docelowego logowania:

  • Amazon CloudWatch Logs: AWS WAF tworzy politykę zasobu na wyznaczonej grupie logów CloudWatch Logs. Ta polityka zapewnia, że AWS WAF ma wymagane uprawnienia do zapisywania logów do grupy logów.

  • Wiadro Amazon S3: AWS WAF tworzy politykę wiadra na wyznaczonym wiadrze S3. Ta polityka nadaje AWS WAF uprawnienia niezbędne do przesyłania logów do określonego wiadra.

  • Amazon Kinesis Data Firehose: AWS WAF tworzy rolę powiązaną z usługą specjalnie do interakcji z Kinesis Data Firehose. Ta rola umożliwia AWS WAF dostarczanie logów do skonfigurowanego strumienia Firehose.

Możliwe jest zdefiniowanie tylko jednego miejsca docelowego logowania na jeden Web ACL.

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

Potencjalny wpływ: Zaciemnienie widoczności zdarzeń związanych z bezpieczeństwem, utrudnienie procesu reagowania na incydenty oraz ułatwienie ukrytych złośliwych działań w środowiskach chronionych przez AWS WAF.

wafv2:DeleteAPIKey

Atakujący posiadający te uprawnienia mógłby usunąć istniejące klucze API, uniemożliwiając działanie CAPTCHA i zakłócając funkcjonalność z nią związaną, taką jak przesyłanie formularzy i kontrole dostępu. W zależności od implementacji tego CAPTCHA, może to prowadzić do jego pominięcia lub DoS, jeśli zarządzanie błędami nie jest odpowiednio skonfigurowane w zasobie.

# Delete API key
aws wafv2 delete-api-key --api-key <value> --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>

Potencjalne skutki: 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 byłby w stanie dodać, zmodyfikować lub usunąć tagi z zasobów AWS WAFv2, takich jak listy kontrolne sieci Web ACL, grupy reguł, zestawy adresów IP, zestawy wzorców regex oraz konfiguracje logowania.

# Tag
aws wafv2 tag-resource --resource-arn <value> --tags <value>
# Untag
aws wafv2 untag-resource --resource-arn <value> --tag-keys <value>

Potencjalne skutki: Sfałszowanie zasobów, wyciek informacji, manipulacja kosztami i zakłócenia operacyjne.

Odnośniki

Wesprzyj HackTricks

Last updated