AWS - WAF Enum

AWS - WAF Enum

Unterstützen Sie HackTricks

AWS WAF

AWS WAF ist eine Web Application Firewall, die entwickelt wurde, um Webanwendungen oder APIs vor verschiedenen Web-Exploits zu schützen, die sich auf deren Verfügbarkeit, Sicherheit oder Ressourcenverbrauch auswirken können. Benutzer können eingehenden Datenverkehr kontrollieren, indem sie Sicherheitsregeln festlegen, die typische Angriffsvektoren wie SQL-Injektion oder Cross-Site-Scripting abwehren, und auch benutzerdefinierte Filterregeln definieren.

Schlüsselkonzepte

Web ACL (Access Control List)

Ein Web ACL ist eine Sammlung von Regeln, die auf Ihre Webanwendungen oder APIs angewendet werden können. Wenn Sie ein Web ACL mit einer Ressource verknüpfen, überprüft AWS WAF eingehende Anfragen basierend auf den in dem Web ACL definierten Regeln und führt die angegebenen Aktionen aus.

Regelgruppe

Eine Regelgruppe ist eine wiederverwendbare Sammlung von Regeln, die auf mehrere Web ACLs angewendet werden können. Regelgruppen helfen dabei, konsistente Regelsets über verschiedene Webanwendungen oder APIs hinweg zu verwalten und aufrechtzuerhalten.

Jede Regelgruppe hat ihre zugehörige Kapazität, die hilft, die Betriebsressourcen zu berechnen und zu kontrollieren, die zum Ausführen Ihrer Regeln, Regelgruppen und Web ACLs verwendet werden. Sobald ihr Wert bei der Erstellung festgelegt ist, kann er nicht mehr geändert werden.

Regel

Eine Regel definiert eine Reihe von Bedingungen, die AWS WAF verwendet, um eingehende Webanfragen zu überprüfen. Es gibt zwei Hauptarten von Regeln:

  1. Reguläre Regel: Dieser Regeltyp verwendet spezifizierte Bedingungen, um zu bestimmen, ob Webanfragen zugelassen, blockiert oder gezählt werden sollen.

  2. Rate-Based Rule: Zählt Anfragen von einer bestimmten IP-Adresse über einen Zeitraum von fünf Minuten. Hier definieren Benutzer einen Schwellenwert, und wenn die Anzahl der Anfragen von einer IP-Adresse innerhalb von fünf Minuten diesen Grenzwert überschreitet, werden nachfolgende Anfragen von dieser IP-Adresse blockiert, bis die Anfragehäufigkeit unter den Schwellenwert fällt. Der Mindestschwellenwert für rate-basierte Regeln beträgt 2000 Anfragen.

Managed Rules

AWS WAF bietet vordefinierte, verwaltete Regelsets, die von AWS und AWS Marketplace-Verkäufern gepflegt werden. Diese Regelsets bieten Schutz vor gängigen Bedrohungen und werden regelmäßig aktualisiert, um neue Schwachstellen zu beheben.

IP-Set

Ein IP-Set ist eine Liste von IP-Adressen oder IP-Adressbereichen, die Sie zulassen oder blockieren möchten. IP-Sets vereinfachen die Verwaltung von IP-basierten Regeln.

Regex Pattern Set

Ein Regex Pattern Set enthält eine oder mehrere reguläre Ausdrücke (Regex), die Muster definieren, nach denen in Webanfragen gesucht werden soll. Dies ist nützlich für komplexere Übereinstimmungsszenarien, wie das Filtern spezifischer Zeichenfolgen.

Sperrtoken

Ein Sperrtoken wird zur Nebenläufigkeitskontrolle verwendet, wenn Updates an WAF-Ressourcen vorgenommen werden. Es stellt sicher, dass Änderungen nicht versehentlich von mehreren Benutzern oder Prozessen überschrieben werden, die gleichzeitig versuchen, dieselbe Ressource zu aktualisieren.

API-Schlüssel

API-Schlüssel in AWS WAF werden verwendet, um Anfragen an bestimmte API-Operationen zu authentifizieren. Diese Schlüssel sind verschlüsselt und sicher verwaltet, um den Zugriff zu kontrollieren und sicherzustellen, dass nur autorisierte Benutzer Änderungen an WAF-Konfigurationen vornehmen können.

  • Beispiel: Integration der CAPTCHA-API.

Berechtigungsrichtlinie

Eine Berechtigungsrichtlinie ist eine IAM-Richtlinie, die angibt, wer Aktionen auf AWS WAF-Ressourcen ausführen kann. Durch die Definition von Berechtigungen können Sie den Zugriff auf WAF-Ressourcen steuern und sicherstellen, dass nur autorisierte Benutzer Konfigurationen erstellen, aktualisieren oder löschen können.

Bereich

Der Bereichsparameter in AWS WAF gibt an, ob die WAF-Regeln und -Konfigurationen auf eine regionale Anwendung oder eine Amazon CloudFront-Verteilung angewendet werden.

  • REGIONAL: Gilt für regionale Dienste wie Application Load Balancers (ALB), Amazon API Gateway REST API, AWS AppSync GraphQL API, Amazon Cognito-Benutzerpool, AWS App Runner-Dienst und AWS Verified Access-Instanz. Sie geben die AWS-Region an, in der sich diese Ressourcen befinden.

  • CLOUDFRONT: Gilt für Amazon CloudFront-Verteilungen, die global sind. WAF-Konfigurationen für CloudFront werden unabhängig davon, wo der Inhalt bereitgestellt wird, über die Region us-east-1 verwaltet.

Hauptfunktionen

Überwachungskriterien (Bedingungen)

Bedingungen geben die Elemente von eingehenden HTTP/HTTPS-Anfragen an, die von AWS WAF überwacht werden, darunter XSS, geografischer Standort (GEO), IP-Adressen, Größenbeschränkungen, SQL-Injektion und Muster (Zeichenfolgen und Regex-Übereinstimmung). Es ist wichtig zu beachten, dass Anfragen, die auf CloudFront-Ebene basierend auf Ländern eingeschränkt sind, WAF nicht erreichen.

Jedes AWS-Konto kann konfigurieren:

  • 100 Bedingungen für jeden Typ (außer für Regex, wo nur 10 Bedingungen erlaubt sind, aber dieses Limit erhöht werden kann).

  • 100 Regeln und 50 Web ACLs.

  • Maximal 5 rate-basierte Regeln.

  • Eine Durchsatzrate von 10.000 Anfragen pro Sekunde, wenn WAF mit einem Application Load Balancer implementiert wird.

Regelaktionen

Aktionen werden jeder Regel zugewiesen, mit den Optionen:

  • Zulassen: Die Anfrage wird an die entsprechende CloudFront-Verteilung oder den Application Load Balancer weitergeleitet.

  • Blockieren: Die Anfrage wird sofort beendet.

  • Zählen: Zählt die Bedingungen der Regel erfüllenden Anfragen. Dies ist nützlich für die Regelprüfung, um die Genauigkeit der Regel vor der Einstellung auf Zulassen oder Blockieren zu bestätigen.

  • CAPTCHA und Challenge: Es wird überprüft, dass die Anfrage nicht von einem Bot stammt, indem CAPTCHA-Rätsel und stille Herausforderungen verwendet werden.

Wenn eine Anfrage keiner Regel innerhalb des Web ACL entspricht, wird die Standardaktion (Zulassen oder Blockieren) ausgeführt. Die Reihenfolge der Regelausführung, die innerhalb eines Web ACL definiert ist, ist entscheidend und folgt in der Regel dieser Sequenz:

  1. Zulassen von IP-Adressen in der Whitelist.

  2. Blockieren von IP-Adressen in der Blacklist.

  3. Blockieren von Anfragen, die mit schädlichen Signaturen übereinstimmen.

CloudWatch-Integration

AWS WAF integriert sich mit CloudWatch zur Überwachung und bietet Metriken wie AllowedRequests, BlockedRequests, CountedRequests und PassedRequests. Diese Metriken werden standardmäßig alle Minute gemeldet und für einen Zeitraum von zwei Wochen gespeichert.

Enumeration

Um mit CloudFront-Verteilungen zu interagieren, müssen Sie die Region US East (N. Virginia) angeben:

  • CLI - Geben Sie die Region US East an, wenn Sie den CloudFront-Bereich verwenden: --scope CLOUDFRONT --region=us-east-1 .

  • API und SDKs - Verwenden Sie für alle Aufrufe den Regionsendpunkt us-east-1.

Um mit regionalen Diensten zu interagieren, sollten Sie die Region angeben:

  • Beispiel mit der Region Europa (Spanien): --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 / Umgehung

Aus der Perspektive eines Angreifers kann dieser Dienst dem Angreifer helfen, WAF-Schutzmaßnahmen und Netzwerkexpositionen zu identifizieren, die ihm helfen könnten, andere Websites zu kompromittieren.

Ein Angreifer könnte jedoch auch daran interessiert sein, diesen Dienst zu stören, damit die Websites nicht durch die WAF geschützt sind.

Bei vielen der Lösch- und Aktualisierungsvorgänge wäre es notwendig, das Sperrtoken bereitzustellen. Dieses Token wird zur Nebenläufigkeitskontrolle über die Ressourcen verwendet, um sicherzustellen, dass Änderungen nicht versehentlich von mehreren Benutzern oder Prozessen überschrieben werden, die gleichzeitig versuchen, dieselbe Ressource zu aktualisieren. Um dieses Token zu erhalten, könnten Sie die entsprechenden List- oder Get-Operationen über die spezifische Ressource durchführen.

wafv2:CreateRuleGroup, wafv2:UpdateRuleGroup, wafv2:DeleteRuleGroup

Ein Angreifer könnte die Sicherheit der betroffenen Ressource kompromittieren, indem er:

  • Regelgruppen erstellt, die beispielsweise legitimen Datenverkehr von legitimen IP-Adressen blockieren könnten, was zu einem Denial-of-Service führen würde.

  • Regelgruppen aktualisiert, um beispielsweise ihre Aktionen von Block auf Allow zu ändern.

  • Regelgruppen löscht, die wichtige Sicherheitsmaßnahmen bieten.

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

Die folgenden Beispiele zeigen eine Regelgruppe, die legitimen Datenverkehr von bestimmten IP-Adressen blockieren würde:

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

Die rule.json Datei würde wie folgt aussehen:

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

Potenzielle Auswirkungen: Unbefugter Zugriff, Datenlecks und potenzielle DoS-Angriffe.

wafv2:CreateWebACL, wafv2:UpdateWebACL, wafv2:DeleteWebACL

Mit diesen Berechtigungen könnte ein Angreifer:

  • Ein neues Web-ACL erstellen, Regeln einführen, die bösartigen Datenverkehr durchlassen oder legitimen Datenverkehr blockieren, wodurch die WAF wirkungslos wird oder einen Denial-of-Service verursachen.

  • Bestehende Web-ACLs aktualisieren, Regeln ändern, um Angriffe wie SQL-Injektion oder Cross-Site-Scripting zu ermöglichen, die zuvor blockiert wurden, oder den normalen Datenverkehrsfluss stören, indem gültige Anfragen blockiert werden.

  • Ein Web-ACL löschen, wodurch die betroffenen Ressourcen vollständig ungeschützt bleiben und einer breiten Palette von Webangriffen ausgesetzt sind.

Sie können das angegebene WebACL nur löschen, wenn ManagedByFirewallManager falsch ist.

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

Das folgende Beispiel zeigt, wie man eine Web-ACL aktualisiert, um den legitimen Datenverkehr aus einem bestimmten IP-Set zu blockieren. Wenn die Ursprungs-IP nicht mit einer dieser IPs übereinstimmt, würde die Standardaktion es ebenfalls blockieren und so eine DoS verursachen.

Ursprüngliche 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"
}

Befehl zum Aktualisieren des 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

Die rule.json Datei würde wie folgt aussehen:

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

Potenzielle Auswirkungen: Nicht autorisierter Zugriff, Datenlecks und potenzielle DoS-Angriffe.

wafv2:AssociateWebACL, wafv2:DisassociateWebACL

Die Berechtigung wafv2:AssociateWebACL würde einem Angreifer ermöglichen, Web-ACLs (Zugriffskontrolllisten) mit Ressourcen zu verknüpfen, wodurch Sicherheitskontrollen umgangen werden könnten. Dies würde nicht autorisierten Datenverkehr zur Anwendung durchlassen und potenziell zu Exploits wie SQL-Injektionen oder Cross-Site-Scripting (XSS) führen. Im Gegensatz dazu könnte der Angreifer mit der Berechtigung wafv2:DisassociateWebACL vorübergehend Sicherheitsschutzmaßnahmen deaktivieren und die Ressourcen so anfällig machen, ohne entdeckt zu werden.

Die zusätzlichen Berechtigungen wären je nach geschütztem Ressourcentyp erforderlich:

  • Verknüpfen

  • apigateway:SetWebACL

  • apprunner:AssociateWebAcl

  • appsync:SetWebACL

  • cognito-idp:AssociateWebACL

  • ec2:AssociateVerifiedAccessInstanceWebAcl

  • elasticloadbalancing:SetWebAcl

  • Trennen

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

Potenzielle Auswirkungen: Kompromittierte Ressourcensicherheit, erhöhtes Risiko für Ausnutzung und potenzielle Serviceunterbrechungen in AWS-Umgebungen, die von AWS WAF geschützt werden.

wafv2:CreateIPSet, wafv2:UpdateIPSet, wafv2:DeleteIPSet

Ein Angreifer könnte in der Lage sein, die IP-Sets zu erstellen, zu aktualisieren und zu löschen, die von AWS WAF verwaltet werden. Dies könnte gefährlich sein, da neue IP-Sets erstellt werden könnten, um bösartigen Datenverkehr zuzulassen, IP-Sets modifiziert werden könnten, um legitimen Datenverkehr zu blockieren, bestehende IP-Sets aktualisiert werden könnten, um bösartige IP-Adressen einzuschließen, vertrauenswürdige IP-Adressen entfernt oder wichtige IP-Sets gelöscht werden könnten, die dazu bestimmt sind, wichtige Ressourcen zu schützen.

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

Das folgende Beispiel zeigt, wie das vorhandene IP-Set durch das gewünschte IP-Set überschrieben wird:

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

Potenzielle Auswirkungen: Unbefugter Zugriff und Blockierung legitimen Datenverkehrs.

wafv2:CreateRegexPatternSet, wafv2:UpdateRegexPatternSet, wafv2:DeleteRegexPatternSet

Ein Angreifer mit diesen Berechtigungen könnte die regulären Ausdrucksmuster-Sets manipulieren, die von AWS WAF verwendet werden, um den eingehenden Datenverkehr basierend auf spezifischen Mustern zu kontrollieren und zu filtern.

  • Durch das Erstellen neuer Regex-Muster könnte ein Angreifer schädliche Inhalte zulassen.

  • Durch das Aktualisieren der vorhandenen Muster könnte ein Angreifer Sicherheitsregeln umgehen.

  • Das Löschen von Mustern, die dazu bestimmt sind, bösartige Aktivitäten zu blockieren, könnte einen Angreifer dazu verleiten, bösartige Payloads zu senden und die Sicherheitsmaßnahmen zu umgehen.

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

Potenzielle Auswirkungen: Umgehung von Sicherheitskontrollen, die bösartige Inhalte zulassen und möglicherweise sensible Daten offenlegen oder Dienste und Ressourcen gefährden, die von AWS WAF geschützt werden.

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

Ein Angreifer mit den Berechtigungen wafv2:DeleteLoggingConfiguration könnte die Protokollierungskonfiguration aus dem angegebenen Web ACL entfernen. Anschließend könnte ein Angreifer mit den Berechtigungen wavf2:PutLoggingConfiguration und iam:CreateServiceLinkedRole Protokollierungskonfigurationen erstellen oder ersetzen (nachdem sie gelöscht wurden), um entweder die Protokollierung vollständig zu verhindern oder Protokolle an nicht autorisierte Ziele umzuleiten, wie z. B. Amazon S3-Buckets, Amazon CloudWatch Logs-Log-Gruppen oder einen Amazon Kinesis Data Firehose unter Kontrolle.

Während des Erstellungsprozesses richtet der Dienst automatisch die erforderlichen Berechtigungen ein, um das Schreiben von Protokollen an das angegebene Protokollziel zu ermöglichen:

  • Amazon CloudWatch Logs: AWS WAF erstellt eine Ressourcenrichtlinie in der zugewiesenen CloudWatch Logs-Log-Gruppe. Diese Richtlinie stellt sicher, dass AWS WAF über die erforderlichen Berechtigungen zum Schreiben von Protokollen in die Log-Gruppe verfügt.

  • Amazon S3-Bucket: AWS WAF erstellt eine Bucket-Richtlinie im zugewiesenen S3-Bucket. Diese Richtlinie gewährt AWS WAF die erforderlichen Berechtigungen zum Hochladen von Protokollen in den angegebenen Bucket.

  • Amazon Kinesis Data Firehose: AWS WAF erstellt eine servicebezogene Rolle speziell für die Interaktion mit Kinesis Data Firehose. Diese Rolle ermöglicht es AWS WAF, Protokolle an den konfigurierten Firehose-Stream zu übermitteln.

Es ist nur möglich, ein Protokollziel pro Web ACL zu definieren.

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

Potenzielle Auswirkungen: Beeinträchtigung der Sichtbarkeit von Sicherheitsereignissen, Erschwerung des Incident-Response-Prozesses und Unterstützung verdeckter bösartiger Aktivitäten innerhalb von AWS WAF-geschützten Umgebungen.

wafv2:DeleteAPIKey

Ein Angreifer mit diesen Berechtigungen könnte bestehende API-Schlüssel löschen, was die CAPTCHA unwirksam macht und die Funktionalität beeinträchtigt, die darauf angewiesen ist, wie z. B. Formulareinreichungen und Zugriffssteuerungen. Abhängig von der Implementierung dieser CAPTCHA könnte dies entweder zu einem CAPTCHA-Bypass oder zu einem DoS führen, wenn das Fehlermanagement nicht ordnungsgemäß im Ressourcenbereich festgelegt ist.

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

Potenzielle Auswirkungen: Deaktivierung von CAPTCHA-Schutzmaßnahmen oder Störung der Anwendungs​​funktionalität, was zu Sicherheitsverletzungen und potenziellem Datenraub führen kann.

wafv2:TagResource, wafv2:UntagResource

Ein Angreifer könnte Tags zu AWS WAFv2-Ressourcen hinzufügen, ändern oder entfernen, wie z. B. Web-ACLs, Regelgruppen, IP-Sets, Regex-Muster-Sets und Protokollierungskonfigurationen.

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

Potenzielle Auswirkungen: Ressourcenmanipulation, Informationsleckage, Kostenmanipulation und Betriebsunterbrechung.

Referenzen

Unterstützen Sie HackTricks

Last updated