AWS - WAF Enum

AWS - WAF Enum

Wsparcie dla HackTricks

AWS WAF

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.

Kluczowe pojęcia

Web ACL (Lista Kontroli Dostępu)

Web ACL to zbiór reguł, które można zastosować do 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ł

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 wartości podczas tworzenia, nie można jej zmienić.

Reguła

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

  1. Reguła standardowa: Ten typ reguły wykorzystuje określone warunki do ustalenia, czy zezwolić, zablokować lub zliczyć żądania webowe.

  2. Reguła oparta na szybkości: 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 szybkości to 2000 żądań.

Zarządzane reguły

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 w celu rozwiązania nowych luk.

Zestaw IP

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

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 konkretnych sekwencji znaków.

Token blokady

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

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ń

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.

Zakres

Parametr zakresu w AWS WAF określa, czy reguły i konfiguracje WAF mają zastosowanie do aplikacji regionalnej czy 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.

Kluczowe funkcje

Kryteria monitorowania (Warunki)

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 szybkości.

  • Przepustowość 10,000 żądań na sekundę, gdy WAF jest wdrożony z aplikacyjnym load balancerem.

Działania reguł

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:

  1. Zezwól na białe listy IP.

  2. Zablokuj czarne listy IP.

  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 co minutę domyślnie i przechowywane przez okres dwóch tygodni.

Enumeracja

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 usługami regionalnymi, powinieneś 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 Exploitation / Bypass

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.

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

Poniższe przykłady 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 wyglądałby następująco:

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

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.

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

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:

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

Polecenie do zaktualizowania 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 wyglądałby następująco:

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

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

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

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.

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

Poniższy przykład pokazuje, jak nadpisać istniejący zestaw IP pożądanym zestawem 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 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 umożliwić napastnikowi wysyłanie złośliwych ładunków i obejście ś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>

Potencjalny wpływ: Ominięcie zabezpieczeń, umożliwiające wprowadzenie złośliwej treści i potencjalne ujawnienie danych wrażliwych lub zakłócenie usług i zasobów chronionych przez AWS WAF.

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

Atakujący z uprawnieniami wafv2:DeleteLoggingConfiguration mógłby usunąć konfigurację logowania z określonego Web ACL. Następnie, z uprawnieniami wavf2:PutLoggingConfiguration i iam:CreateServiceLinkedRole, atakujący 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. Rola ta pozwala AWS WAF na dostarczanie logów do skonfigurowanego strumienia Firehose.

Możliwe jest zdefiniowanie tylko jednego miejsca logowania na 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: 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.

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

Potencjalny wpływ: Wyłączenie ochrony CAPTCHA lub zakłócenie funkcjonalności aplikacji, prowadzące do naruszeń bezpieczeństwa i potencjalnej kradzieży danych.

wafv2:TagResource, wafv2:UntagResource

Napastnik 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 oraz konfiguracje logowania.

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

Potencjalny wpływ: Manipulacja zasobami, wyciek informacji, manipulacja kosztami i zakłócenia operacyjne.

Odniesienia

Wsparcie HackTricks

Last updated