AWS - WAF Enum
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
AWS WAF είναι ένα firewall εφαρμογών ιστού σχεδιασμένο να προστατεύει τις εφαρμογές ιστού ή τα APIs από διάφορες διαδικτυακές επιθέσεις που μπορεί να επηρεάσουν τη διαθεσιμότητά τους, την ασφάλεια ή την κατανάλωση πόρων. Δίνει τη δυνατότητα στους χρήστες να ελέγχουν την εισερχόμενη κίνηση, ρυθμίζοντας κανόνες ασφαλείας που μετριάζουν τυπικούς επιθετικούς παράγοντες όπως η SQL injection ή η διασταυρούμενη σάρωση και επίσης καθορίζοντας προσαρμοσμένους κανόνες φιλτραρίσματος.
Ένα Web ACL είναι μια συλλογή κανόνων που μπορείτε να εφαρμόσετε στις εφαρμογές ιστού ή τα APIs σας. Όταν συνδέετε ένα Web ACL με έναν πόρο, το AWS WAF εξετάζει τις εισερχόμενες αιτήσεις με βάση τους κανόνες που ορίζονται στο Web ACL και εκτελεί τις καθορισμένες ενέργειες.
Μια Rule Group είναι μια επαναχρησιμοποιήσιμη συλλογή κανόνων που μπορείτε να εφαρμόσετε σε πολλαπλά Web ACLs. Οι ομάδες κανόνων βοηθούν στη διαχείριση και τη διατήρηση συνεπών συνόλων κανόνων σε διαφορετικές εφαρμογές ιστού ή APIs.
Κάθε ομάδα κανόνων έχει τη σχετική της χωρητικότητα, η οποία βοηθά στον υπολογισμό και τον έλεγχο των λειτουργικών πόρων που χρησιμοποιούνται για την εκτέλεση των κανόνων σας, των ομάδων κανόνων και των Web ACLs. Μόλις οριστεί η τιμή της κατά τη δημιουργία, δεν είναι δυνατή η τροποποίησή της.
Ένας κανόνας ορίζει ένα σύνολο συνθηκών που χρησιμοποιεί το AWS WAF για να εξετάσει τις εισερχόμενες αιτήσεις ιστού. Υπάρχουν δύο κύριοι τύποι κανόνων:
Regular Rule: Αυτός ο τύπος κανόνα χρησιμοποιεί καθορισμένες συνθήκες για να προσδιορίσει εάν θα επιτρέψει, θα αποκλείσει ή θα μετρήσει τις αιτήσεις ιστού.
Rate-Based Rule: Μετρά τις αιτήσεις από μια συγκεκριμένη διεύθυνση IP σε μια πεντάλεπτη περίοδο. Εδώ, οι χρήστες καθορίζουν ένα όριο, και αν ο αριθμός των αιτήσεων από μια IP υπερβεί αυτό το όριο εντός πέντε λεπτών, οι επόμενες αιτήσεις από αυτήν την IP αποκλείονται μέχρι να πέσει ο ρυθμός αιτήσεων κάτω από το όριο. Το ελάχιστο όριο για τους κανόνες με βάση το ρυθμό είναι 2000 αιτήσεις.
Το AWS WAF προσφέρει προρυθμισμένα, διαχειριζόμενα σύνολα κανόνων που διατηρούνται από το AWS και τους πωλητές της AWS Marketplace. Αυτά τα σύνολα κανόνων παρέχουν προστασία από κοινές απειλές και ενημερώνονται τακτικά για να αντιμετωπίσουν νέες ευπάθειες.
Ένα IP Set είναι μια λίστα διευθύνσεων IP ή περιοχών διευθύνσεων IP που θέλετε να επιτρέψετε ή να αποκλείσετε. Τα IP sets απλοποιούν τη διαδικασία διαχείρισης κανόνων που βασίζονται σε IP.
Ένα Regex Pattern Set περιέχει μία ή περισσότερες κανονικές εκφράσεις (regex) που ορίζουν μοτίβα προς αναζήτηση σε αιτήσεις ιστού. Αυτό είναι χρήσιμο για πιο σύνθετα σενάρια αντιστοίχισης, όπως η φιλτράρισμα συγκεκριμένων ακολουθιών χαρακτήρων.
Ένα Lock Token χρησιμοποιείται για τον έλεγχο ταυτόχρονης πρόσβασης κατά την ενημέρωση πόρων WAF. Διασφαλίζει ότι οι αλλαγές δεν θα αντικατασταθούν τυχαία από πολλούς χρήστες ή διαδικασίες που προσπαθούν να ενημερώσουν τον ίδιο πόρο ταυτόχρονα.
Τα API Keys στο AWS WAF χρησιμοποιούνται για την αυθεντικοποίηση αιτήσεων σε ορισμένες λειτουργίες API. Αυτά τα κλειδιά είναι κρυπτογραφημένα και διαχειρίζονται με ασφάλεια για να ελέγχουν την πρόσβαση και να διασφαλίζουν ότι μόνο οι εξουσιοδοτημένοι χρήστες μπορούν να κάνουν αλλαγές στις ρυθμίσεις WAF.
Example: Ενσωμάτωση του API CAPTCHA.
Μια Permission Policy είναι μια πολιτική IAM που καθορίζει ποιος μπορεί να εκτελεί ενέργειες στους πόρους AWS WAF. Με τον καθορισμό αδειών, μπορείτε να ελέγξετε την πρόσβαση στους πόρους WAF και να διασφαλίσετε ότι μόνο οι εξουσιοδοτημένοι χρήστες μπορούν να δημιουργούν, να ενημερώνουν ή να διαγράφουν ρυθμίσεις.
Η παράμετρος scope στο 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
, ανεξάρτητα από το πού σερβίρεται το περιεχόμενο.
Conditions καθορίζουν τα στοιχεία των εισερχόμενων αιτήσεων HTTP/HTTPS που παρακολουθεί το AWS WAF, τα οποία περιλαμβάνουν XSS, γεωγραφική τοποθεσία (GEO), διευθύνσεις IP, περιορισμούς μεγέθους, SQL Injection και μοτίβα (αντιστοίχιση συμβολοσειρών και regex). Είναι σημαντικό να σημειωθεί ότι οι αιτήσεις που περιορίζονται στο επίπεδο CloudFront με βάση τη χώρα δεν θα φτάσουν στο WAF.
Κάθε λογαριασμός AWS μπορεί να ρυθμίσει:
100 conditions για κάθε τύπο (εκτός από Regex, όπου επιτρέπονται μόνο 10 conditions, αλλά αυτό το όριο μπορεί να αυξηθεί).
100 rules και 50 Web ACLs.
Μέγιστο 5 rate-based rules.
Ένα throughput 10,000 requests ανά δευτερόλεπτο όταν το WAF εφαρμόζεται με έναν application load balancer.
Οι ενέργειες ανατίθενται σε κάθε κανόνα, με τις επιλογές να είναι:
Allow: Η αίτηση προωθείται στην κατάλληλη διανομή CloudFront ή στον Application Load Balancer.
Block: Η αίτηση τερματίζεται αμέσως.
Count: Μετρά τις αιτήσεις που πληρούν τις συνθήκες του κανόνα. Αυτό είναι χρήσιμο για τη δοκιμή κανόνων, επιβεβαιώνοντας την ακρίβεια του κανόνα πριν τον ορίσετε σε Allow ή Block.
CAPTCHA and Challenge: Επαληθεύεται ότι η αίτηση δεν προέρχεται από bot χρησιμοποιώντας γρίφους CAPTCHA και σιωπηλές προκλήσεις.
Εάν μια αίτηση δεν ταιριάζει με κανέναν κανόνα εντός του Web ACL, υποβάλλεται στην προεπιλεγμένη ενέργεια (Allow ή Block). Η σειρά εκτέλεσης των κανόνων, που ορίζεται εντός ενός Web ACL, είναι κρίσιμη και συνήθως ακολουθεί αυτή τη σειρά:
Allow Whitelisted IPs.
Block Blacklisted IPs.
Block requests matching any detrimental signatures.
Το AWS WAF ενσωματώνεται με το CloudWatch για παρακολούθηση, προσφέροντας μετρήσεις όπως AllowedRequests, BlockedRequests, CountedRequests και PassedRequests. Αυτές οι μετρήσεις αναφέρονται κάθε λεπτό από προεπιλογή και διατηρούνται για μια περίοδο δύο εβδομάδων.
Για να αλληλεπιδράσετε με τις διανομές CloudFront, πρέπει να καθορίσετε την περιοχή US East (N. Virginia):
CLI - Καθορίστε την περιοχή US East όταν χρησιμοποιείτε το scope CloudFront: --scope CLOUDFRONT --region=us-east-1
.
API και SDKs - Για όλες τις κλήσεις, χρησιμοποιήστε το endpoint περιοχής us-east-1.
Για να αλληλεπιδράσετε με περιφερειακές υπηρεσίες, θα πρέπει να καθορίσετε την περιοχή:
Παράδειγμα με την περιοχή Ευρώπη (Ισπανία): --scope REGIONAL --region=eu-south-2
Από την οπτική γωνία ενός επιτιθέμενου, αυτή η υπηρεσία μπορεί να βοηθήσει τον επιτιθέμενο να εντοπίσει τις προστασίες WAF και τις εκθέσεις δικτύου που θα μπορούσαν να τον βοηθήσουν να παραβιάσει άλλες ιστοσελίδες.
Ωστόσο, ένας επιτιθέμενος θα μπορούσε επίσης να ενδιαφέρεται να διαταράξει αυτή την υπηρεσία ώστε οι ιστοσελίδες να μην προστατεύονται από το WAF.
Σε πολλές από τις λειτουργίες Διαγραφής και Ενημέρωσης θα ήταν απαραίτητο να παρέχετε το lock token. Αυτό το token χρησιμοποιείται για τον έλεγχο ταυτόχρονης πρόσβασης στους πόρους, διασφαλίζοντας ότι οι αλλαγές δεν θα αντικατασταθούν κατά λάθος από πολλούς χρήστες ή διαδικασίες που προσπαθούν να ενημερώσουν τον ίδιο πόρο ταυτόχρονα. Για να αποκτήσετε αυτό το token, μπορείτε να εκτελέσετε τις αντίστοιχες λειτουργίες list ή get στον συγκεκριμένο πόρο.
wafv2:CreateRuleGroup
, wafv2:UpdateRuleGroup
, wafv2:DeleteRuleGroup
Ένας επιτιθέμενος θα μπορούσε να παραβιάσει την ασφάλεια του επηρεαζόμενου πόρου με:
Δημιουργία ομάδων κανόνων που θα μπορούσαν, για παράδειγμα, να μπλοκάρουν νόμιμη κίνηση από νόμιμες διευθύνσεις IP, προκαλώντας άρνηση υπηρεσίας.
Ενημέρωση ομάδων κανόνων, έχοντας τη δυνατότητα να τροποποιήσει τις ενέργειές τους, για παράδειγμα από Block σε Allow.
Διαγραφή ομάδων κανόνων που παρέχουν κρίσιμα μέτρα ασφάλειας.
Τα παρακάτω παραδείγματα δείχνουν μια ομάδα κανόνων που θα μπλοκάρει νόμιμη κίνηση από συγκεκριμένες διευθύνσεις IP:
Το αρχείο rule.json θα φαίνεται ως εξής:
Πιθανές Επιπτώσεις: Μη εξουσιοδοτημένη πρόσβαση, παραβιάσεις δεδομένων και πιθανές επιθέσεις DoS.
wafv2:CreateWebACL
, wafv2:UpdateWebACL
, wafv2:DeleteWebACL
Με αυτές τις άδειες, ένας επιτιθέμενος θα μπορούσε να:
Δημιουργήσει μια νέα Web ACL, εισάγοντας κανόνες που είτε επιτρέπουν κακόβουλη κίνηση είτε μπλοκάρουν νόμιμη κίνηση, καθιστώντας ουσιαστικά το WAF άχρηστο ή προκαλώντας άρνηση υπηρεσίας.
Ενημερώσει υπάρχουσες Web ACLs, έχοντας τη δυνατότητα να τροποποιήσει κανόνες για να επιτρέψει επιθέσεις όπως SQL injection ή cross-site scripting, οι οποίες προηγουμένως μπλοκάρονταν, ή να διαταράξει τη φυσιολογική ροή κίνησης μπλοκάροντας έγκυρες αιτήσεις.
Διαγράψει μια Web ACL, αφήνοντας τους επηρεαζόμενους πόρους εντελώς απροστάτευτους, εκθέτοντάς τους σε ένα ευρύ φάσμα διαδικτυακών επιθέσεων.
Μπορείτε να διαγράψετε την καθορισμένη WebACL μόνο αν ManagedByFirewallManager είναι false.
Τα παρακάτω παραδείγματα δείχνουν πώς να ενημερώσετε ένα Web ACL για να αποκλείσετε την νόμιμη κίνηση από ένα συγκεκριμένο σύνολο IP. Εάν η αρχική IP δεν ταιριάζει με καμία από αυτές τις IP, η προεπιλεγμένη ενέργεια θα είναι επίσης να την αποκλείσει, προκαλώντας μια DoS.
Original Web ACL:
Εντολή για την ενημέρωση του Web ACL:
Το αρχείο rule.json θα φαίνεται ως εξής:
Πιθανές Επιπτώσεις: Μη εξουσιοδοτημένη πρόσβαση, παραβιάσεις δεδομένων και πιθανές επιθέσεις 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
Πιθανές Επιπτώσεις: Συμβιβασμένη ασφάλεια πόρων, αυξημένος κίνδυνος εκμετάλλευσης και πιθανές διαταραχές υπηρεσιών εντός των περιβαλλόντων AWS που προστατεύονται από το AWS WAF.
wafv2:CreateIPSet
, wafv2:UpdateIPSet
, wafv2:DeleteIPSet
Ένας επιτιθέμενος θα μπορούσε να δημιουργήσει, να ενημερώσει και να διαγράψει τα IP sets που διαχειρίζεται το AWS WAF. Αυτό θα μπορούσε να είναι επικίνδυνο καθώς θα μπορούσε να δημιουργήσει νέα IP sets για να επιτρέψει κακόβουλη κίνηση, να τροποποιήσει IP sets προκειμένου να αποκλείσει νόμιμη κίνηση, να ενημερώσει υπάρχοντα IP sets για να συμπεριλάβει κακόβουλες διευθύνσεις IP, να αφαιρέσει αξιόπιστες διευθύνσεις IP ή να διαγράψει κρίσιμα IP sets που προορίζονται για την προστασία κρίσιμων πόρων.
Το παρακάτω παράδειγμα δείχνει πώς να επικαλύψετε το υπάρχον IP set με το επιθυμητό IP set:
Πιθανές Επιπτώσεις: Μη εξουσιοδοτημένη πρόσβαση και αποκλεισμός νόμιμης κίνησης.
wafv2:CreateRegexPatternSet
, wafv2:UpdateRegexPatternSet
, wafv2:DeleteRegexPatternSet
Ένας επιτιθέμενος με αυτές τις άδειες θα μπορούσε να χειριστεί τα σύνολα προτύπων κανονικών εκφράσεων που χρησιμοποιούνται από το AWS WAF για να ελέγξει και να φιλτράρει την εισερχόμενη κίνηση με βάση συγκεκριμένα πρότυπα.
Η δημιουργία νέων προτύπων regex θα βοηθούσε έναν επιτιθέμενο να επιτρέψει επιβλαβές περιεχόμενο
Με την ενημέρωση των υπαρχόντων προτύπων, ένας επιτιθέμενος θα μπορούσε να παρακάμψει τους κανόνες ασφαλείας
Η διαγραφή προτύπων που έχουν σχεδιαστεί για να αποκλείουν κακόβουλες δραστηριότητες θα μπορούσε να οδηγήσει έναν επιτιθέμενο στο να στείλει κακόβουλα payloads και να παρακάμψει τα μέτρα ασφαλείας.
Πιθανές Επιπτώσεις: Παράκαμψη ελέγχων ασφαλείας, επιτρέποντας κακόβουλο περιεχόμενο και ενδεχομένως εκθέτοντας ευαίσθητα δεδομένα ή διαταράσσοντας υπηρεσίες και πόρους που προστατεύονται από το 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.
Πιθανές Επιπτώσεις: Ασαφής ορατότητα σε γεγονότα ασφαλείας, δυσκολία στη διαδικασία αντίκτυπου περιστατικών και διευκόλυνση κρυφών κακόβουλων δραστηριοτήτων σε περιβάλλοντα προστατευμένα από AWS WAF.
wafv2:DeleteAPIKey
Ένας επιτιθέμενος με αυτές τις άδειες θα μπορούσε να διαγράψει υπάρχοντα API keys, καθιστώντας το CAPTCHA αναποτελεσματικό και διαταράσσοντας τη λειτουργικότητα που βασίζεται σε αυτό, όπως υποβολές φορμών και ελέγχους πρόσβασης. Ανάλογα με την υλοποίηση αυτού του CAPTCHA, αυτό θα μπορούσε να οδηγήσει είτε σε παράκαμψη του CAPTCHA είτε σε DoS αν η διαχείριση σφαλμάτων δεν έχει ρυθμιστεί σωστά στην πηγή.
Πιθανές Επιπτώσεις: Απενεργοποίηση προστασιών CAPTCHA ή διακοπή της λειτουργικότητας της εφαρμογής, οδηγώντας σε παραβιάσεις ασφαλείας και πιθανή κλοπή δεδομένων.
wafv2:TagResource
, wafv2:UntagResource
Ένας επιτιθέμενος θα μπορούσε να προσθέσει, να τροποποιήσει ή να αφαιρέσει ετικέτες από τους πόρους AWS WAFv2, όπως Web ACLs, ομάδες κανόνων, σύνολα IP, σύνολα προτύπων regex και ρυθμίσεις καταγραφής.
Πιθανές Επιπτώσεις: Παρέμβαση σε πόρους, διαρροή πληροφοριών, χειραγώγηση κόστους και διαταραχή λειτουργίας.
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)