AWS - WAF Enum

AWS - WAF Enum

Support HackTricks

AWS WAF

AWS WAF ist eine Webanwendungsfirewall, die entwickelt wurde, um Webanwendungen oder APIs vor verschiedenen Web-Exploits zu schützen, die ihre Verfügbarkeit, Sicherheit oder Ressourcennutzung beeinträchtigen können. Es ermöglicht Benutzern, den eingehenden Datenverkehr zu steuern, indem sie Sicherheitsregeln festlegen, die typische Angriffsvektoren wie SQL-Injection oder Cross-Site-Scripting mindern, und indem sie benutzerdefinierte Filterregeln definieren.

Schlüsselkonzepte

Web ACL (Zugriffskontrollliste)

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

Regelgruppe

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

Jede Regelgruppe hat ihre zugehörige Kapazität, die hilft, die Betriebsmittel zu berechnen und zu steuern, die verwendet werden, um Ihre Regeln, Regelgruppen und Web ACLs auszuführen. 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 Haupttypen von Regeln:

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

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

Verwaltete Regeln

AWS WAF bietet vorkonfigurierte, verwaltete Regelsets, die von AWS und Verkäufern im AWS Marketplace gepflegt werden. Diese Regelsets bieten Schutz vor häufigen Bedrohungen und werden regelmäßig aktualisiert, um neue Schwachstellen zu adressieren.

IP-Set

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

Regex-Muster-Set

Ein Regex-Muster-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.

Lock-Token

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

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 werden sicher verwaltet, um den Zugriff zu steuern und sicherzustellen, dass nur autorisierte Benutzer Änderungen an WAF-Konfigurationen vornehmen können.

  • Beispiel: Integration der CAPTCHA-API.

Berechtigungspolitik

Eine Berechtigungspolitik ist eine IAM-Politik, die festlegt, wer Aktionen an 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.

Geltungsbereich

Der Geltungsbereichsparameter 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 über die Region us-east-1 verwaltet, unabhängig davon, wo der Inhalt bereitgestellt wird.

Hauptmerkmale

Überwachungsbedingungen (Bedingungen)

Bedingungen geben die Elemente der eingehenden HTTP/HTTPS-Anfragen an, die AWS WAF überwacht, einschließlich XSS, geografischer Standort (GEO), IP-Adressen, Größenbeschränkungen, SQL-Injection und Muster (Strings und Regex-Matching). Es ist wichtig zu beachten, dass Anfragen, die auf CloudFront-Ebene basierend auf dem Land 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 kann erhöht werden).

  • 100 Regeln und 50 Web ACLs.

  • Maximal 5 rate-basierte Regeln.

  • Ein Durchsatz von 10.000 Anfragen pro Sekunde, wenn WAF mit einem Application Load Balancer implementiert ist.

Regelaktionen

Aktionen werden jeder Regel zugewiesen, wobei die Optionen sind:

  • Erlauben: 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 Anfragen, die die Bedingungen der Regel erfüllen. Dies ist nützlich für das Testen von Regeln, um die Genauigkeit der Regel zu bestätigen, bevor sie auf Erlauben oder Blockieren gesetzt wird.

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

Wenn eine Anfrage keine Regel innerhalb der Web ACL erfüllt, unterliegt sie der Standardaktion (Erlauben oder Blockieren). Die Reihenfolge der Regelausführung, die innerhalb einer Web ACL definiert ist, ist entscheidend und folgt typischerweise dieser Reihenfolge:

  1. Erlauben Sie auf der Whitelist stehende IPs.

  2. Blockieren Sie auf der Blacklist stehende IPs.

  3. Blockieren Sie Anfragen, die schädlichen Signaturen entsprechen.

CloudWatch-Integration

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

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-Geltungsbereich verwenden: --scope CLOUDFRONT --region=us-east-1.

  • API und SDKs - Verwenden Sie für alle Aufrufe den Region-Endpunkt 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 / Bypass

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

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

In vielen der Delete- und Update-Operationen wäre es notwendig, das Lock-Token bereitzustellen. Dieses Token wird zur Steuerung der Parallelität über die Ressourcen verwendet und stellt sicher, dass Änderungen nicht versehentlich von mehreren Benutzern oder Prozessen, die versuchen, dieselbe Ressource gleichzeitig zu aktualisieren, überschrieben werden. 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 wäre in der Lage, die Sicherheit der betroffenen Ressource zu kompromittieren, indem er:

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

  • Regelgruppen aktualisiert und in der Lage ist, deren Aktionen beispielsweise von Block auf Allow zu ändern.

  • Regelgruppen löscht, die kritische Sicherheitsmaßnahmen bereitstellen.

# 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 Verkehr 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 folgendermaßen 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, Datenverletzungen und potenzielle DoS-Angriffe.

wafv2:CreateWebACL, wafv2:UpdateWebACL, wafv2:DeleteWebACL

Mit diesen Berechtigungen wäre ein Angreifer in der Lage:

  • Ein neues Web ACL zu erstellen, indem Regeln eingeführt werden, die entweder bösartigen Datenverkehr durchlassen oder legitimen Datenverkehr blockieren, wodurch das WAF effektiv nutzlos wird oder ein Denial of Service verursacht wird.

  • Bestehende Web ACLs zu aktualisieren, indem er in der Lage ist, Regeln zu ändern, um Angriffe wie SQL-Injection oder Cross-Site-Scripting zuzulassen, die zuvor blockiert wurden, oder den normalen Datenverkehr zu stören, indem gültige Anfragen blockiert werden.

  • Ein Web ACL zu 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>

Die folgenden Beispiele zeigen, wie man eine Web-ACL aktualisiert, um den legitimen Verkehr von einem bestimmten IP-Set zu blockieren. Wenn die Ursprungs-IP mit keiner dieser IPs übereinstimmt, wäre die Standardaktion ebenfalls das Blockieren, was zu einem DoS führen würde.

Original 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 der 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 folgendermaßen 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: Unbefugter Zugriff, Datenverletzungen und potenzielle DoS-Angriffe.

wafv2:AssociateWebACL, wafv2:DisassociateWebACL

Die wafv2:AssociateWebACL Berechtigung würde es einem Angreifer ermöglichen, Web-ACLs (Access Control Lists) mit Ressourcen zu verknüpfen, wodurch Sicherheitskontrollen umgangen werden könnten, was unbefugtem Datenverkehr den Zugang zur Anwendung ermöglicht und potenziell zu Ausnutzungen wie SQL-Injection oder Cross-Site-Scripting (XSS) führen könnte. Im Gegensatz dazu könnte der Angreifer mit der wafv2:DisassociateWebACL Berechtigung vorübergehend Sicherheitsmaßnahmen deaktivieren und die Ressourcen ohne Erkennung anfällig machen.

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

  • Associate

  • apigateway:SetWebACL

  • apprunner:AssociateWebAcl

  • appsync:SetWebACL

  • cognito-idp:AssociateWebACL

  • ec2:AssociateVerifiedAccessInstanceWebAcl

  • elasticloadbalancing:SetWebAcl

  • Disassociate

  • 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 von Ausnutzung und potenzielle Dienstunterbrechungen innerhalb von AWS-Umgebungen, die durch AWS WAF geschützt sind.

wafv2:CreateIPSet , wafv2:UpdateIPSet, wafv2:DeleteIPSet

Ein Angreifer könnte in der Lage sein, die von AWS WAF verwalteten IP-Sets zu erstellen, zu aktualisieren und zu löschen. Dies könnte gefährlich sein, da er neue IP-Sets erstellen könnte, um bösartigen Datenverkehr zuzulassen, IP-Sets ändern könnte, um legitimen Datenverkehr zu blockieren, bestehende IP-Sets aktualisieren könnte, um bösartige IP-Adressen einzuschließen, vertrauenswürdige IP-Adressen entfernen oder kritische IP-Sets löschen könnte, die zum Schutz kritischer Ressourcen gedacht sind.

# 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 man das vorhandene IP-Set durch das gewünschte IP-Set überschreibt:

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 legitimer Daten.

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 bestimmten Mustern zu steuern und zu filtern.

  • Das Erstellen neuer Regex-Muster würde einem Angreifer helfen, schädliche Inhalte zuzulassen.

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

  • Das Löschen von Mustern, die dazu bestimmt sind, bösartige Aktivitäten zu blockieren, könnte einem Angreifer ermöglichen, schädliche 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 zulässt und potenziell sensible Daten offenlegt oder Dienste und Ressourcen, die durch AWS WAF geschützt sind, stört.

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

Ein Angreifer mit der wafv2:DeleteLoggingConfiguration wäre in der Lage, die Protokollkonfiguration aus dem angegebenen Web ACL zu entfernen. Anschließend könnte ein Angreifer mit den Berechtigungen wavf2:PutLoggingConfiguration und iam:CreateServiceLinkedRole Protokollkonfigurationen erstellen oder ersetzen (nachdem er sie gelöscht hat), um entweder das Protokollieren ganz zu verhindern oder Protokolle an unbefugte Ziele umzuleiten, wie z.B. Amazon S3-Buckets, Amazon CloudWatch Logs-Protokollgruppen 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 für die angegebene CloudWatch Logs-Protokollgruppe. Diese Richtlinie stellt sicher, dass AWS WAF die erforderlichen Berechtigungen hat, um Protokolle in die Protokollgruppe zu schreiben.

  • Amazon S3 Bucket: AWS WAF erstellt eine Bucket-Richtlinie für den angegebenen S3-Bucket. Diese Richtlinie gewährt AWS WAF die notwendigen Berechtigungen, um Protokolle in den angegebenen Bucket hochzuladen.

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

Es ist möglich, nur 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: Eingeschränkte Sichtbarkeit auf Sicherheitsereignisse, erschwert den Vorfallreaktionsprozess und erleichtert verdeckte böswillige Aktivitäten in AWS WAF-geschützten Umgebungen.

wafv2:DeleteAPIKey

Ein Angreifer mit diesen Berechtigungen könnte vorhandene API-Schlüssel löschen, wodurch das CAPTCHA unwirksam wird und die Funktionalität, die darauf angewiesen ist, wie z.B. Formularübermittlungen und Zugriffskontrollen, gestört wird. Abhängig von der Implementierung dieses CAPTCHAs könnte dies entweder zu einem CAPTCHA-Umgehung oder zu einem DoS führen, wenn das Fehlermanagement in der Ressource nicht ordnungsgemäß eingestellt 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 Anwendungsfunktionalität, was zu Sicherheitsverletzungen und potenziellem Datendiebstahl führen kann.

wafv2:TagResource, wafv2:UntagResource

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

# 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 betriebliche Störungen.

Referenzen

Unterstützen Sie HackTricks

Last updated