AWS - WAF Enum

AWS - WAF Enum

Soutenez HackTricks

AWS WAF

AWS WAF est un pare-feu d'application web conçu pour protéger les applications web ou les APIs contre diverses attaques web qui pourraient affecter leur disponibilité, leur sécurité ou leur consommation de ressources. Il permet aux utilisateurs de contrôler le trafic entrant en configurant des règles de sécurité qui atténuent les vecteurs d'attaque courants tels que les injections SQL ou les scripts entre sites, ainsi qu'en définissant des règles de filtrage personnalisées.

Concepts clés

Liste de contrôle d'accès Web (Web ACL)

Une Web ACL est une collection de règles que vous pouvez appliquer à vos applications web ou APIs. Lorsque vous associez une Web ACL à une ressource, AWS WAF inspecte les requêtes entrantes en fonction des règles définies dans la Web ACL et prend les actions spécifiées.

Groupe de règles

Un groupe de règles est une collection réutilisable de règles que vous pouvez appliquer à plusieurs Web ACL. Les groupes de règles aident à gérer et à maintenir des ensembles de règles cohérents sur différentes applications web ou APIs.

Chaque groupe de règles a sa capacité associée, qui aide à calculer et à contrôler les ressources opérationnelles utilisées pour exécuter vos règles, groupes de règles et Web ACL. Une fois sa valeur définie lors de la création, il n'est pas possible de la modifier.

Règle

Une règle définit un ensemble de conditions que AWS WAF utilise pour inspecter les requêtes web entrantes. Il existe deux types principaux de règles :

  1. Règle régulière : Ce type de règle utilise des conditions spécifiées pour déterminer si les requêtes web doivent être autorisées, bloquées ou comptées.

  2. Règle basée sur le taux : Compte les requêtes à partir d'une adresse IP spécifique sur une période de cinq minutes. Ici, les utilisateurs définissent un seuil, et si le nombre de requêtes à partir d'une IP dépasse cette limite dans les cinq minutes, les requêtes ultérieures de cette IP sont bloquées jusqu'à ce que le taux de requêtes passe en dessous du seuil. Le seuil minimum pour les règles basées sur le taux est de 2000 requêtes.

Règles gérées

AWS WAF propose des ensembles de règles préconfigurées et gérées qui sont entretenus par AWS et les vendeurs du Marketplace AWS. Ces ensembles de règles offrent une protection contre les menaces courantes et sont régulièrement mis à jour pour traiter de nouvelles vulnérabilités.

Ensemble d'adresses IP

Un ensemble d'adresses IP est une liste d'adresses IP ou de plages d'adresses IP que vous souhaitez autoriser ou bloquer. Les ensembles d'adresses IP simplifient le processus de gestion des règles basées sur les adresses IP.

Ensemble de motifs Regex

Un ensemble de motifs Regex contient une ou plusieurs expressions régulières (regex) qui définissent des motifs à rechercher dans les requêtes web. Cela est utile pour des scénarios de correspondance plus complexes, tels que le filtrage de séquences de caractères spécifiques.

Jeton de verrouillage

Un jeton de verrouillage est utilisé pour le contrôle de la concurrence lors de la mise à jour des ressources WAF. Il garantit que les modifications ne sont pas écrasées accidentellement par plusieurs utilisateurs ou processus tentant de mettre à jour la même ressource simultanément.

Clés API

Les clés API dans AWS WAF sont utilisées pour authentifier les requêtes à certaines opérations API. Ces clés sont chiffrées et gérées de manière sécurisée pour contrôler l'accès et garantir que seuls les utilisateurs autorisés peuvent apporter des modifications aux configurations WAF.

  • Exemple : Intégration de l'API CAPTCHA.

Politique de permission

Une politique de permission est une politique IAM qui spécifie qui peut effectuer des actions sur les ressources AWS WAF. En définissant des autorisations, vous pouvez contrôler l'accès aux ressources WAF et vous assurer que seuls les utilisateurs autorisés peuvent créer, mettre à jour ou supprimer des configurations.

Portée

Le paramètre de portée dans AWS WAF spécifie si les règles WAF et les configurations s'appliquent à une application régionale ou à une distribution Amazon CloudFront.

  • REGIONAL : S'applique aux services régionaux tels que les équilibreurs de charge d'applications (ALB), l'API REST Amazon API Gateway, l'API GraphQL AWS AppSync, le pool d'utilisateurs Amazon Cognito, le service AWS App Runner et l'instance d'accès vérifié AWS. Vous spécifiez la région AWS où se trouvent ces ressources.

  • CLOUDFRONT : S'applique aux distributions Amazon CloudFront, qui sont mondiales. Les configurations WAF pour CloudFront sont gérées via la région us-east-1 indépendamment de l'endroit où le contenu est diffusé.

Fonctionnalités clés

Critères de surveillance (Conditions)

Les conditions spécifient les éléments des requêtes HTTP/HTTPS entrantes que AWS WAF surveille, notamment XSS, emplacement géographique (GEO), adresses IP, contraintes de taille, injection SQL et motifs (correspondance de chaînes et regex). Il est important de noter que les requêtes restreintes au niveau CloudFront en fonction du pays n'atteindront pas WAF.

Chaque compte AWS peut configurer :

  • 100 conditions pour chaque type (sauf pour Regex, où seules 10 conditions sont autorisées, mais cette limite peut être augmentée).

  • 100 règles et 50 Web ACL.

  • Un maximum de 5 règles basées sur le taux.

  • Un débit de 10 000 requêtes par seconde lorsque WAF est implémenté avec un équilibreur de charge d'applications.

Actions de règle

Des actions sont attribuées à chaque règle, avec les options suivantes :

  • Autoriser : La requête est transmise à la distribution CloudFront appropriée ou à l'équilibreur de charge d'applications.

  • Bloquer : La requête est immédiatement interrompue.

  • Compter : Compte les requêtes répondant aux conditions de la règle. Cela est utile pour tester la règle, confirmer l'exactitude de la règle avant de la définir sur Autoriser ou Bloquer.

  • CAPTCHA et Challenge : Il est vérifié que la requête ne provient pas d'un bot en utilisant des puzzles CAPTCHA et des défis silencieux.

Si une requête ne correspond à aucune règle dans la Web ACL, elle subit l'action par défaut (Autoriser ou Bloquer). L'ordre d'exécution des règles, défini dans une Web ACL, est crucial et suit généralement cette séquence :

  1. Autoriser les adresses IP en liste blanche.

  2. Bloquer les adresses IP en liste noire.

  3. Bloquer les requêtes correspondant à des signatures préjudiciables.

Intégration CloudWatch

AWS WAF s'intègre à CloudWatch pour la surveillance, offrant des métriques telles que AllowedRequests, BlockedRequests, CountedRequests et PassedRequests. Ces métriques sont rapportées toutes les minutes par défaut et conservées pendant une période de deux semaines.

Énumération

Pour interagir avec les distributions CloudFront, vous devez spécifier la région US East (N. Virginia) :

  • CLI - Spécifiez la région US East lorsque vous utilisez la portée CloudFront : --scope CLOUDFRONT --region=us-east-1.

  • API et SDK - Pour tous les appels, utilisez le point de terminaison de la région us-east-1.

Pour interagir avec les services régionaux, vous devez spécifier la région :

  • Exemple avec la région Europe (Espagne) : --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 / Contournement

Du point de vue d'un attaquant, ce service peut aider l'attaquant à identifier les protections WAF et les expositions réseau qui pourraient l'aider à compromettre d'autres sites web.

Cependant, un attaquant pourrait également être intéressé à perturber ce service afin que les sites web ne soient pas protégés par le WAF.

Dans de nombreuses opérations de suppression et de mise à jour, il serait nécessaire de fournir le jeton de verrouillage. Ce jeton est utilisé pour le contrôle de la concurrence sur les ressources, garantissant que les modifications ne sont pas accidentellement écrasées par plusieurs utilisateurs ou processus tentant de mettre à jour la même ressource simultanément. Pour obtenir ce jeton, vous pourriez effectuer les opérations liste ou obtenir correspondantes sur la ressource spécifique.

wafv2:CreateRuleGroup, wafv2:UpdateRuleGroup, wafv2:DeleteRuleGroup

Un attaquant pourrait compromettre la sécurité de la ressource affectée en :

  • Créant des groupes de règles qui pourraient, par exemple, bloquer le trafic légitime provenant d'adresses IP légitimes, provoquant un déni de service.

  • Mettant à jour des groupes de règles, en pouvant modifier ses actions par exemple de Bloquer à Autoriser.

  • Supprimant des groupes de règles qui fournissent des mesures de sécurité critiques.

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

Le(s) exemple(s) suivant(s) montre(nt) un groupe de règles qui bloquerait(nt) le trafic légitime en provenance d'adresses IP spécifiques :

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

Le fichier rule.json ressemblerait à :

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

Impact potentiel : Accès non autorisé, violations de données et potentielles attaques par déni de service.

wafv2:CreateWebACL, wafv2:UpdateWebACL, wafv2:DeleteWebACL

Avec ces autorisations, un attaquant serait capable de :

  • Créer un nouveau Web ACL, introduisant des règles qui permettent le trafic malveillant de passer ou bloquent le trafic légitime, rendant ainsi le WAF inutile ou provoquant un déni de service.

  • Mettre à jour les ACL Web existantes, en pouvant modifier les règles pour permettre des attaques telles que les injections SQL ou les scripts entre sites, qui étaient précédemment bloquées, ou perturber le flux de trafic normal en bloquant les demandes valides.

  • Supprimer un Web ACL, laissant les ressources affectées entièrement non protégées, les exposant à une large gamme d'attaques web.

Vous ne pouvez supprimer le WebACL spécifié que si ManagedByFirewallManager est faux.

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

Le cas suivant montre comment mettre à jour un ACL Web pour bloquer le trafic légitime à partir d'un ensemble d'adresses IP spécifique. Si l'adresse IP d'origine ne correspond à aucune de ces adresses IP, l'action par défaut serait également de le bloquer, provoquant un déni de service.

ACL Web d'origine :

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

Update Web ACL

To update the Web ACL, use the following command:

aws waf update-web-acl --web-acl-id <value> --updates <value>
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

Le fichier rule.json ressemblerait à :

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

Impact potentiel : Accès non autorisé, violations de données et potentielles attaques par déni de service (DoS).

wafv2:AssociateWebACL, wafv2:DisassociateWebACL

La permission wafv2:AssociateWebACL permettrait à un attaquant d'associer des listes de contrôle d'accès Web (ACL) à des ressources, lui permettant de contourner les contrôles de sécurité, autorisant ainsi le trafic non autorisé à atteindre l'application, ce qui pourrait entraîner des exploits tels que les injections SQL ou les scripts entre sites (XSS). En revanche, avec la permission wafv2:DisassociateWebACL, l'attaquant pourrait temporairement désactiver les protections de sécurité, exposant les ressources à des vulnérabilités sans être détecté.

Les autorisations supplémentaires seraient nécessaires en fonction du type de ressource protégée :

  • Associer

  • apigateway:SetWebACL

  • apprunner:AssociateWebAcl

  • appsync:SetWebACL

  • cognito-idp:AssociateWebACL

  • ec2:AssociateVerifiedAccessInstanceWebAcl

  • elasticloadbalancing:SetWebAcl

  • Dissocier

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

Impact potentiel : Sécurité des ressources compromise, risque accru d'exploitation et perturbations potentielles des services au sein des environnements AWS protégés par AWS WAF.

wafv2:CreateIPSet, wafv2:UpdateIPSet, wafv2:DeleteIPSet

Un attaquant serait capable de créer, mettre à jour et supprimer les ensembles d'adresses IP gérés par AWS WAF. Cela pourrait être dangereux car cela pourrait permettre de créer de nouveaux ensembles d'adresses IP pour autoriser du trafic malveillant, modifier des ensembles d'adresses IP afin de bloquer du trafic légitime, mettre à jour des ensembles d'adresses IP existants pour inclure des adresses IP malveillantes, supprimer des adresses IP de confiance ou supprimer des ensembles d'adresses IP critiques destinés à protéger des ressources critiques.

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

L'exemple suivant montre comment écraser l'ensemble IP existant par l'ensemble IP souhaité :

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

Impact potentiel : Accès non autorisé et blocage du trafic légitime.

wafv2:CreateRegexPatternSet , wafv2:UpdateRegexPatternSet, wafv2:DeleteRegexPatternSet

Un attaquant avec ces autorisations serait capable de manipuler les ensembles de motifs d'expressions régulières utilisés par AWS WAF pour contrôler et filtrer le trafic entrant en fonction de motifs spécifiques.

  • La création de nouveaux motifs regex aiderait un attaquant à autoriser du contenu nuisible

  • En mettant à jour les motifs existants, un attaquant pourrait contourner les règles de sécurité

  • Supprimer des motifs conçus pour bloquer des activités malveillantes pourrait amener un attaquant à envoyer des charges malveillantes et contourner les mesures de sécurité.

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

Impact potentiel : Contourner les contrôles de sécurité, permettant le contenu malveillant et potentiellement l'exposition de données sensibles ou la perturbation des services et des ressources protégés par AWS WAF.

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

Un attaquant ayant l'autorisation wafv2:DeleteLoggingConfiguration serait capable de supprimer la configuration de journalisation du Web ACL spécifié. Ensuite, avec les autorisations wavf2:PutLoggingConfiguration et iam:CreateServiceLinkedRole, un attaquant pourrait créer ou remplacer des configurations de journalisation (après les avoir supprimées) pour soit empêcher complètement la journalisation, soit rediriger les journaux vers des destinations non autorisées, telles que les compartiments Amazon S3, le groupe de journaux Amazon CloudWatch Logs ou un Amazon Kinesis Data Firehose sous contrôle.

Pendant le processus de création, le service configure automatiquement les autorisations nécessaires pour permettre l'écriture des journaux vers la destination de journalisation spécifiée :

  • Amazon CloudWatch Logs : AWS WAF crée une stratégie de ressource sur le groupe de journaux CloudWatch Logs désigné. Cette stratégie garantit qu'AWS WAF dispose des autorisations nécessaires pour écrire des journaux dans le groupe de journaux.

  • Compartiment Amazon S3 : AWS WAF crée une stratégie de compartiment sur le compartiment S3 désigné. Cette stratégie accorde à AWS WAF les autorisations nécessaires pour téléverser des journaux dans le compartiment spécifié.

  • Amazon Kinesis Data Firehose : AWS WAF crée un rôle lié au service spécifiquement pour interagir avec Kinesis Data Firehose. Ce rôle permet à AWS WAF de livrer des journaux au flux Firehose configuré.

Il est possible de définir une seule destination de journalisation par 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>]

Impact potentiel : Obscurcir la visibilité des événements de sécurité, compliquer le processus de réponse aux incidents et faciliter les activités malveillantes dissimulées au sein des environnements protégés par AWS WAF.

wafv2:DeleteAPIKey

Un attaquant avec ces autorisations serait capable de supprimer des clés API existantes, rendant le CAPTCHA inefficace et perturbant les fonctionnalités qui en dépendent, telles que les soumissions de formulaires et les contrôles d'accès. Selon la mise en œuvre de ce CAPTCHA, cela pourrait conduire soit à une bypass du CAPTCHA, soit à un déni de service (DoS) si la gestion des erreurs n'est pas correctement configurée dans la ressource.

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

Impact potentiel : Désactiver les protections CAPTCHA ou perturber la fonctionnalité de l'application, entraînant des violations de sécurité et un vol potentiel de données.

wafv2:TagResource, wafv2:UntagResource

Un attaquant pourrait ajouter, modifier ou supprimer des tags des ressources AWS WAFv2, telles que les listes de contrôle d'accès Web, les groupes de règles, les ensembles d'adresses IP, les ensembles de motifs regex et les configurations de journalisation.

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

Impact potentiel : Altération des ressources, fuite d'informations, manipulation des coûts et perturbation opérationnelle.

Références

Soutenez HackTricks

Last updated