AWS - WAF Enum
Tip
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Δείτε τα subscription plans!
- Εγγραφείτε στο 💬 Discord group ή την telegram group ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
AWS WAF
AWS WAF είναι ένα firewall εφαρμογών ιστού σχεδιασμένο να προστατεύει εφαρμογές ιστού ή APIs από διάφορες διαδικτυακές επιθέσεις που μπορεί να επηρεάσουν τη διαθεσιμότητά τους, την ασφάλεια ή την κατανάλωση πόρων. Δίνει τη δυνατότητα στους χρήστες να ελέγχουν την εισερχόμενη κίνηση, ρυθμίζοντας κανόνες ασφαλείας που μετριάζουν τυπικούς επιθετικούς άξονες όπως η SQL injection ή η διασταυρούμενη σάρωση και επίσης καθορίζοντας προσαρμοσμένους κανόνες φιλτραρίσματος.
Βασικές έννοιες
Web ACL (Λίστα Ελέγχου Πρόσβασης)
Μια Web ACL είναι μια συλλογή κανόνων που μπορείτε να εφαρμόσετε στις εφαρμογές ιστού ή APIs σας. Όταν συνδέετε μια Web ACL με έναν πόρο, το AWS WAF εξετάζει τις εισερχόμενες αιτήσεις με βάση τους κανόνες που ορίζονται στη Web ACL και εκτελεί τις καθορισμένες ενέργειες.
Ομάδα Κανόνων
Μια Ομάδα Κανόνων είναι μια επαναχρησιμοποιήσιμη συλλογή κανόνων που μπορείτε να εφαρμόσετε σε πολλές Web ACLs. Οι ομάδες κανόνων βοηθούν στη διαχείριση και τη διατήρηση συνεπών συνόλων κανόνων σε διαφορετικές εφαρμογές ιστού ή APIs.
Κάθε ομάδα κανόνων έχει τη σχετική της ικανότητα, η οποία βοηθά στον υπολογισμό και τον έλεγχο των λειτουργικών πόρων που χρησιμοποιούνται για την εκτέλεση των κανόνων σας, των ομάδων κανόνων και των Web ACLs. Μόλις οριστεί η τιμή της κατά τη δημιουργία, δεν είναι δυνατή η τροποποίησή της.
Κανόνας
Ένας κανόνας ορίζει ένα σύνολο συνθηκών που χρησιμοποιεί το AWS WAF για να εξετάσει τις εισερχόμενες αιτήσεις ιστού. Υπάρχουν δύο κύριοι τύποι κανόνων:
- Κανονικός Κανόνας: Αυτός ο τύπος κανόνα χρησιμοποιεί καθορισμένες συνθήκες για να προσδιορίσει αν θα επιτρέψει, θα αποκλείσει ή θα μετρήσει τις αιτήσεις ιστού.
- Κανόνας Βασισμένος σε Ρυθμό: Μετρά τις αιτήσεις από μια συγκεκριμένη διεύθυνση IP σε μια πεντάλεπτη περίοδο. Εδώ, οι χρήστες καθορίζουν ένα όριο, και αν ο αριθμός των αιτήσεων από μια IP υπερβεί αυτό το όριο εντός πέντε λεπτών, οι επόμενες αιτήσεις από αυτήν την IP αποκλείονται μέχρι να πέσει ο ρυθμός αιτήσεων κάτω από το όριο. Το ελάχιστο όριο για τους κανόνες βασισμένους σε ρυθμό είναι 2000 αιτήσεις.
Διαχειριζόμενοι Κανόνες
Το AWS WAF προσφέρει προρυθμισμένα, διαχειριζόμενα σύνολα κανόνων που διατηρούνται από το AWS και πωλητές της AWS Marketplace. Αυτά τα σύνολα κανόνων παρέχουν προστασία από κοινές απειλές και ενημερώνονται τακτικά για να αντιμετωπίζουν νέες ευπάθειες.
IP Set
Ένα IP Set είναι μια λίστα διευθύνσεων IP ή περιοχών διευθύνσεων IP που θέλετε να επιτρέψετε ή να αποκλείσετε. Τα IP sets απλοποιούν τη διαδικασία διαχείρισης κανόνων που βασίζονται σε IP.
Regex Pattern Set
Ένα Regex Pattern Set περιέχει μία ή περισσότερες κανονικές εκφράσεις (regex) που ορίζουν μοτίβα προς αναζήτηση σε αιτήσεις ιστού. Αυτό είναι χρήσιμο για πιο σύνθετα σενάρια αντιστοίχισης, όπως η φιλτράρισμα συγκεκριμένων ακολουθιών χαρακτήρων.
Lock Token
Ένα Lock Token χρησιμοποιείται για τον έλεγχο ταυτόχρονης πρόσβασης κατά την ενημέρωση πόρων WAF. Διασφαλίζει ότι οι αλλαγές δεν θα αντικατασταθούν τυχαία από πολλούς χρήστες ή διαδικασίες που προσπαθούν να ενημερώσουν τον ίδιο πόρο ταυτόχρονα.
API Keys
Τα API Keys στο AWS WAF χρησιμοποιούνται για την αυθεντικοποίηση αιτήσεων σε ορισμένες API λειτουργίες. Αυτά τα κλειδιά είναι κρυπτογραφημένα και διαχειρίζονται με ασφάλεια για να ελέγχουν την πρόσβαση και να διασφαλίζουν ότι μόνο οι εξουσιοδοτημένοι χρήστες μπορούν να κάνουν αλλαγές στις ρυθμίσεις του WAF.
- Παράδειγμα: Ενσωμάτωση του API CAPTCHA.
Πολιτική Άδειας
Μια Πολιτική Άδειας είναι μια πολιτική IAM που καθορίζει ποιος μπορεί να εκτελεί ενέργειες στους πόρους AWS WAF. Ορίζοντας άδειες, μπορείτε να ελέγξετε την πρόσβαση στους πόρους WAF και να διασφαλίσετε ότι μόνο οι εξουσιοδοτημένοι χρήστες μπορούν να δημιουργούν, να ενημερώνουν ή να διαγράφουν ρυθμίσεις.
Πεδίο Εφαρμογής
Η παράμετρος πεδίου εφαρμογής στο AWS WAF καθορίζει αν οι κανόνες και οι ρυθμίσεις WAF ισχύουν για μια περιφερειακή εφαρμογή ή μια διανομή Amazon CloudFront.
- REGIONAL: Ισχύει για περιφερειακές υπηρεσίες όπως οι Application Load Balancers (ALB), το Amazon API Gateway REST API, το AWS AppSync GraphQL API, η πισίνα χρηστών Amazon Cognito, η υπηρεσία AWS App Runner και η εγκατάσταση AWS Verified Access. Ορίζετε την περιοχή AWS όπου βρίσκονται αυτοί οι πόροι.
- CLOUDFRONT: Ισχύει για διανομές Amazon CloudFront, οι οποίες είναι παγκόσμιες. Οι ρυθμίσεις WAF για το CloudFront διαχειρίζονται μέσω της περιοχής
us-east-1, ανεξάρτητα από το πού σερβίρεται το περιεχόμενο.
Βασικά χαρακτηριστικά
Κριτήρια Παρακολούθησης (Συνθήκες)
Συνθήκες καθορίζουν τα στοιχεία των εισερχόμενων αιτήσεων HTTP/HTTPS που παρακολουθεί το AWS WAF, τα οποία περιλαμβάνουν XSS, γεωγραφική τοποθεσία (GEO), διευθύνσεις IP, περιορισμούς μεγέθους, SQL Injection και μοτίβα (αντιστοίχιση συμβολοσειρών και regex). Είναι σημαντικό να σημειωθεί ότι οι αιτήσεις που περιορίζονται στο επίπεδο CloudFront με βάση τη χώρα δεν θα φτάσουν στο WAF.
Κάθε λογαριασμός AWS μπορεί να ρυθμίσει:
- 100 συνθήκες για κάθε τύπο (εκτός από Regex, όπου επιτρέπονται μόνο 10 συνθήκες, αλλά αυτό το όριο μπορεί να αυξηθεί).
- 100 κανόνες και 50 Web ACLs.
- Μέγιστο 5 κανόνες βασισμένους σε ρυθμό.
- Ένα ρυθμό 10,000 αιτήσεων ανά δευτερόλεπτο όταν το WAF εφαρμόζεται με έναν application load balancer.
Ενέργειες Κανόνων
Οι ενέργειες ανατίθενται σε κάθε κανόνα, με τις επιλογές να είναι:
- Allow: Η αίτηση προωθείται στην κατάλληλη διανομή CloudFront ή στον Application Load Balancer.
- Block: Η αίτηση τερματίζεται αμέσως.
- Count: Μετρά τις αιτήσεις που πληρούν τις συνθήκες του κανόνα. Αυτό είναι χρήσιμο για τη δοκιμή κανόνων, επιβεβαιώνοντας την ακρίβεια του κανόνα πριν τον ορίσετε σε Allow ή Block.
- CAPTCHA και Challenge: Επαληθεύεται ότι η αίτηση δεν προέρχεται από ρομπότ χρησιμοποιώντας γρίφους CAPTCHA και σιωπηλές προκλήσεις.
Εάν μια αίτηση δεν ταιριάζει με κανέναν κανόνα εντός της Web ACL, υποβάλλεται στην προεπιλεγμένη ενέργεια (Allow ή Block). Η σειρά εκτέλεσης των κανόνων, που ορίζεται εντός μιας Web ACL, είναι κρίσιμη και συνήθως ακολουθεί αυτή τη σειρά:
- Allow Whitelisted IPs.
- Block Blacklisted IPs.
- Block requests matching any detrimental signatures.
Ενσωμάτωση CloudWatch
Το AWS WAF ενσωματώνεται με το CloudWatch για παρακολούθηση, προσφέροντας μετρήσεις όπως AllowedRequests, BlockedRequests, CountedRequests και PassedRequests. Αυτές οι μετρήσεις αναφέρονται κάθε λεπτό από προεπιλογή και διατηρούνται για μια περίοδο δύο εβδομάδων.
Αριθμητική
Για να αλληλεπιδράσετε με τις διανομές CloudFront, πρέπει να καθορίσετε την περιοχή US East (N. Virginia):
- CLI - Καθορίστε την περιοχή US East όταν χρησιμοποιείτε το πεδίο CloudFront:
--scope CLOUDFRONT --region=us-east-1. - API και SDKs - Για όλες τις κλήσεις, χρησιμοποιήστε το σημείο τέλους περιοχής us-east-1.
Για να αλληλεπιδράσετε με περιφερειακές υπηρεσίες, θα πρέπει να καθορίσετε την περιοχή:
- Παράδειγμα με την περιοχή Ευρώπη (Ισπανία):
--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
Tip
Από την οπτική γωνία ενός επιτιθέμενου, αυτή η υπηρεσία μπορεί να βοηθήσει τον επιτιθέμενο να εντοπίσει τις προστασίες WAF και τις εκθέσεις δικτύου που θα μπορούσαν να τον βοηθήσουν να παραβιάσει άλλες ιστοσελίδες.
Ωστόσο, ένας επιτιθέμενος θα μπορούσε επίσης να ενδιαφέρεται να διαταράξει αυτή την υπηρεσία ώστε οι ιστοσελίδες να μην είναι προστατευμένες από το WAF.
Σε πολλές από τις λειτουργίες Διαγραφής και Ενημέρωσης θα ήταν απαραίτητο να παρέχετε το lock token. Αυτό το token χρησιμοποιείται για τον έλεγχο ταυτότητας των πόρων, διασφαλίζοντας ότι οι αλλαγές δεν θα αντικατασταθούν κατά λάθος από πολλούς χρήστες ή διαδικασίες που προσπαθούν να ενημερώσουν τον ίδιο πόρο ταυτόχρονα. Για να αποκτήσετε αυτό το token, μπορείτε να εκτελέσετε τις αντίστοιχες λειτουργίες list ή get πάνω στον συγκεκριμένο πόρο.
wafv2:CreateRuleGroup, wafv2:UpdateRuleGroup, wafv2:DeleteRuleGroup
Ένας επιτιθέμενος θα μπορούσε να παραβιάσει την ασφάλεια του επηρεαζόμενου πόρου με:
- Δημιουργία ομάδων κανόνων που θα μπορούσαν, για παράδειγμα, να μπλοκάρουν νόμιμη κίνηση από νόμιμες διευθύνσεις IP, προκαλώντας άρνηση υπηρεσίας.
- Ενημέρωση ομάδων κανόνων, έχοντας τη δυνατότητα να τροποποιήσει τις ενέργειές τους, για παράδειγμα από Block σε Allow.
- Διαγραφή ομάδων κανόνων που παρέχουν κρίσιμα μέτρα ασφάλειας.
# 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>
Τα παρακάτω παραδείγματα δείχνουν μια ομάδα κανόνων που θα μπλοκάρει νόμιμη κίνηση από συγκεκριμένες διευθύνσεις 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
Το αρχείο rule.json θα φαίνεται ως εξής:
[
{
"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"
}
}
]
Πιθανές Επιπτώσεις: Μη εξουσιοδοτημένη πρόσβαση, παραβιάσεις δεδομένων και πιθανές επιθέσεις DoS.
wafv2:CreateWebACL, wafv2:UpdateWebACL, wafv2:DeleteWebACL
Με αυτές τις άδειες, ένας επιτιθέμενος θα μπορούσε να:
- Δημιουργήσει μια νέα Web ACL, εισάγοντας κανόνες που είτε επιτρέπουν κακόβουλη κίνηση είτε μπλοκάρουν νόμιμη κίνηση, καθιστώντας ουσιαστικά το WAF άχρηστο ή προκαλώντας άρνηση υπηρεσίας.
- Ενημερώσει υπάρχουσες Web ACLs, έχοντας τη δυνατότητα να τροποποιήσει κανόνες για να επιτρέψει επιθέσεις όπως SQL injection ή cross-site scripting, οι οποίες προηγουμένως μπλοκάρονταν, ή να διαταράξει τη φυσιολογική ροή κίνησης μπλοκάροντας έγκυρα αιτήματα.
- Διαγράψει μια Web ACL, αφήνοντας τους επηρεαζόμενους πόρους εντελώς απροστάτευτους, εκθέτοντάς τους σε ένα ευρύ φάσμα διαδικτυακών επιθέσεων.
Note
Μπορείτε να διαγράψετε την καθορισμένη WebACL μόνο αν ManagedByFirewallManager είναι false.
# Create Web ACL
aws wafv2 create-web-acl --name <value> --default-action <value> --visibility-config <value> \
--scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1> [--rules <value>] [--captcha-config <value>] [--description <value>]
# Update Web ACL
aws wafv2 update-web-acl --name <value> --id <value> --default-action <value> --visibility-config <value> --lock-token <value>\
--scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1> [--rules <value>] [--captcha-config <value>] [--description <value>]
# Delete Web ACL
aws wafv2 delete-web-acl --name <value> --id <value> --lock-token <value> --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>
Τα παρακάτω παραδείγματα δείχνουν πώς να ενημερώσετε ένα Web ACL για να αποκλείσετε την κανονική κίνηση από ένα συγκεκριμένο σύνολο IP. Εάν η αρχική IP δεν ταιριάζει με καμία από αυτές τις IP, η προεπιλεγμένη ενέργεια θα είναι επίσης να την αποκλείσει, προκαλώντας μια DoS.
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"
}
Εντολή για την ενημέρωση του 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
Το αρχείο rule.json θα φαίνεται ως εξής:
[
{
"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"
}
}
]
Πιθανές Επιπτώσεις: Μη εξουσιοδοτημένη πρόσβαση, παραβιάσεις δεδομένων και πιθανές επιθέσεις DoS.
wafv2:AssociateWebACL, wafv2:DisassociateWebACL
Η άδεια wafv2:AssociateWebACL θα επέτρεπε σε έναν επιτιθέμενο να συσχετίσει web ACLs (Λίστες Ελέγχου Πρόσβασης) με πόρους, επιτρέποντας την παράκαμψη των ελέγχων ασφαλείας, επιτρέποντας μη εξουσιοδοτημένη κίνηση να φτάσει στην εφαρμογή, πιθανώς οδηγώντας σε εκμεταλλεύσεις όπως SQL injection ή cross-site scripting (XSS). Αντίθετα, με την άδεια wafv2:DisassociateWebACL, ο επιτιθέμενος θα μπορούσε προσωρινά να απενεργοποιήσει τις προστασίες ασφαλείας, εκθέτοντας τους πόρους σε ευπάθειες χωρίς ανίχνευση.
Οι επιπλέον άδειες θα ήταν απαραίτητες ανάλογα με τον τύπο του προστατευόμενου πόρου:
- Συσχέτιση
- apigateway:SetWebACL
- apprunner:AssociateWebAcl
- appsync:SetWebACL
- cognito-idp:AssociateWebACL
- ec2:AssociateVerifiedAccessInstanceWebAcl
- elasticloadbalancing:SetWebAcl
- Αποσυσχέτιση
- 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>
Πιθανές Επιπτώσεις: Συμβιβασμένη ασφάλεια πόρων, αυξημένος κίνδυνος εκμετάλλευσης και πιθανές διαταραχές υπηρεσιών εντός των περιβαλλόντων AWS που προστατεύονται από το AWS WAF.
wafv2:CreateIPSet , wafv2:UpdateIPSet, wafv2:DeleteIPSet
Ένας επιτιθέμενος θα μπορούσε να δημιουργήσει, να ενημερώσει και να διαγράψει τα IP sets που διαχειρίζεται το AWS WAF. Αυτό θα μπορούσε να είναι επικίνδυνο, καθώς θα μπορούσε να δημιουργήσει νέα IP sets για να επιτρέψει κακόβουλη κίνηση, να τροποποιήσει IP sets προκειμένου να αποκλείσει νόμιμη κίνηση, να ενημερώσει υπάρχοντα IP sets για να συμπεριλάβει κακόβουλες διευθύνσεις IP, να αφαιρέσει αξιόπιστες διευθύνσεις IP ή να διαγράψει κρίσιμα IP sets που προορίζονται για την προστασία κρίσιμων πόρων.
# 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>
Το παρακάτω παράδειγμα δείχνει πώς να επικαλύψετε το υπάρχον IP set με το επιθυμητό IP set:
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
Πιθανές Επιπτώσεις: Μη εξουσιοδοτημένη πρόσβαση και αποκλεισμός νόμιμης κίνησης.
wafv2:CreateRegexPatternSet , wafv2:UpdateRegexPatternSet, wafv2:DeleteRegexPatternSet
Ένας επιτιθέμενος με αυτές τις άδειες θα μπορούσε να χειριστεί τα σύνολα προτύπων κανονικών εκφράσεων που χρησιμοποιούνται από το AWS WAF για να ελέγξει και να φιλτράρει την εισερχόμενη κίνηση με βάση συγκεκριμένα πρότυπα.
- Η δημιουργία νέων προτύπων regex θα βοηθούσε έναν επιτιθέμενο να επιτρέψει επιβλαβές περιεχόμενο
- Με την ενημέρωση των υπαρχόντων προτύπων, ένας επιτιθέμενος θα μπορούσε να παρακάμψει τους κανόνες ασφαλείας
- Η διαγραφή προτύπων που έχουν σχεδιαστεί για να αποκλείουν κακόβουλες δραστηριότητες θα μπορούσε να οδηγήσει έναν επιτιθέμενο στο να στείλει κακόβουλα payloads και να παρακάμψει τα μέτρα ασφαλείας.
# 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>
Πιθανές Επιπτώσεις: Παράκαμψη ελέγχων ασφαλείας, επιτρέποντας κακόβουλο περιεχόμενο και ενδεχομένως εκθέτοντας ευαίσθητα δεδομένα ή διαταράσσοντας υπηρεσίες και πόρους που προστατεύονται από το AWS WAF.
(wavf2:PutLoggingConfiguration & iam:CreateServiceLinkedRole), wafv2:DeleteLoggingConfiguration
Ένας επιτιθέμενος με το wafv2:DeleteLoggingConfiguration θα μπορούσε να αφαιρέσει τη ρύθμιση καταγραφής από το καθορισμένο Web ACL. Στη συνέχεια, με τα δικαιώματα wavf2:PutLoggingConfiguration και iam:CreateServiceLinkedRole, ένας επιτιθέμενος θα μπορούσε να δημιουργήσει ή να αντικαταστήσει τις ρυθμίσεις καταγραφής (μετά την αφαίρεση τους) για να αποτρέψει εντελώς την καταγραφή ή να ανακατευθύνει τα αρχεία καταγραφής σε μη εξουσιοδοτημένους προορισμούς, όπως οι κάδοι Amazon S3, η ομάδα καταγραφής Amazon CloudWatch Logs ή ένα Amazon Kinesis Data Firehose υπό έλεγχο.
Κατά τη διαδικασία δημιουργίας, η υπηρεσία ρυθμίζει αυτόματα τα απαραίτητα δικαιώματα για να επιτρέψει την εγγραφή αρχείων καταγραφής στον καθορισμένο προορισμό καταγραφής:
- Amazon CloudWatch Logs: Το AWS WAF δημιουργεί μια πολιτική πόρου στην καθορισμένη ομάδα καταγραφής CloudWatch Logs. Αυτή η πολιτική διασφαλίζει ότι το AWS WAF έχει τα απαραίτητα δικαιώματα για να γράφει αρχεία καταγραφής στην ομάδα καταγραφής.
- Amazon S3 Bucket: Το AWS WAF δημιουργεί μια πολιτική κάδου στον καθορισμένο κάδο S3. Αυτή η πολιτική παραχωρεί στο AWS WAF τα απαραίτητα δικαιώματα για να ανεβάσει αρχεία καταγραφής στον καθορισμένο κάδο.
- Amazon Kinesis Data Firehose: Το AWS WAF δημιουργεί έναν ρόλο συνδεδεμένης υπηρεσίας ειδικά για την αλληλεπίδραση με το Kinesis Data Firehose. Αυτός ο ρόλος επιτρέπει στο AWS WAF να παραδίδει αρχεία καταγραφής στο ρεύμα Firehose που έχει ρυθμιστεί.
[!ΣΗΜΕΙΩΣΗ] Είναι δυνατόν να οριστεί μόνο ένας προορισμός καταγραφής ανά 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>]
Πιθανές Επιπτώσεις: Ασαφής ορατότητα σε γεγονότα ασφαλείας, δυσκολία στη διαδικασία αντίκτυπου περιστατικών και διευκόλυνση κρυφών κακόβουλων δραστηριοτήτων σε περιβάλλοντα προστατευμένα από AWS WAF.
wafv2:DeleteAPIKey
Ένας επιτιθέμενος με αυτές τις άδειες θα μπορούσε να διαγράψει υπάρχοντα API keys, καθιστώντας το CAPTCHA αναποτελεσματικό και διαταράσσοντας τη λειτουργικότητα που βασίζεται σε αυτό, όπως οι υποβολές φορμών και οι έλεγχοι πρόσβασης. Ανάλογα με την υλοποίηση αυτού του CAPTCHA, αυτό θα μπορούσε να οδηγήσει είτε σε παράκαμψη του CAPTCHA είτε σε DoS αν η διαχείριση σφαλμάτων δεν έχει ρυθμιστεί σωστά στην πηγή.
# Delete API key
aws wafv2 delete-api-key --api-key <value> --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>
Πιθανές Επιπτώσεις: Απενεργοποίηση προστασιών CAPTCHA ή διακοπή της λειτουργικότητας της εφαρμογής, οδηγώντας σε παραβιάσεις ασφαλείας και πιθανή κλοπή δεδομένων.
wafv2:TagResource, wafv2:UntagResource
Ένας επιτιθέμενος θα μπορούσε να προσθέσει, να τροποποιήσει ή να αφαιρέσει ετικέτες από τους πόρους AWS WAFv2, όπως Web ACLs, ομάδες κανόνων, σύνολα IP, σύνολα προτύπων regex και ρυθμίσεις καταγραφής.
# Tag
aws wafv2 tag-resource --resource-arn <value> --tags <value>
# Untag
aws wafv2 untag-resource --resource-arn <value> --tag-keys <value>
Πιθανές Επιπτώσεις: Παρεμβολή πόρων, διαρροή πληροφοριών, χειραγώγηση κόστους και διαταραχή λειτουργιών.
Αναφορές
- https://www.citrusconsulting.com/aws-web-application-firewall-waf/#:~:text=Conditions%20allow%20you%20to%20specify,user%20via%20a%20web%20application
- https://docs.aws.amazon.com/service-authorization/latest/reference/list_awswafv2.html
Tip
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Δείτε τα subscription plans!
- Εγγραφείτε στο 💬 Discord group ή την telegram group ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
HackTricks Cloud

