SAML Attacks
Επιθέσεις SAML
Βασικές Πληροφορίες
pageSAML BasicsΕργαλείο
SAMLExtractor: Ένα εργαλείο που μπορεί να πάρει ένα URL ή μια λίστα από URL και να εκτυπώσει το URL κατανάλωσης SAML.
Κύκλος XML
Στο XML, η υπογεγραμμένη μέρος του XML αποθηκεύεται στη μνήμη, στη συνέχεια γίνεται κάποια κωδικοποίηση/αποκωδικοποίηση και ελέγχεται η υπογραφή. Ιδανικά, αυτή η κωδικοποίηση/αποκωδικοποίηση δεν θα έπρεπε να αλλάζει τα δεδομένα, αλλά βάσει αυτού του σεναρίου, τα δεδομένα που ελέγχονται και τα αρχικά δεδομένα μπορεί να μην είναι τα ίδια.
Για παράδειγμα, ελέγξτε τον παρακάτω κώδικα:
Η εκτέλεση του προγράμματος εναντίον του REXML 3.2.4 ή προηγούμενων εκδόσεων θα οδηγούσε στην ακόλουθη έξοδο:
Έτσι είδε το αρχικό XML έγγραφο το REXML από το πρόγραμμα παραπάνω:
Και έτσι το είδε μετά από μια διαδικασία ανάλυσης και σειριοποίησης:
Για περισσότερες πληροφορίες σχετικά με την ευπάθεια και πώς να την καταχραστείτε:
Επιθέσεις Περιτυλιγμένης Υπογραφής XML
Στις επιθέσεις Περιτυλιγμένης Υπογραφής XML (XSW), οι επιτιθέμενοι εκμεταλλεύονται μια ευπάθεια που προκύπτει όταν τα XML έγγραφα επεξεργάζονται μέσω δύο διακριτών φάσεων: έλεγχος υπογραφής και εκτέλεση λειτουργίας. Αυτές οι επιθέσεις περιλαμβάνουν την τροποποίηση της δομής του XML έγγραφου. Συγκεκριμένα, ο επιτιθέμενος εισάγει πλαστά στοιχεία που δεν αμφισβητούν την εγκυρότητα της υπογραφής XML. Αυτή η παραπλάνηση στοχεύει στη δημιουργία μιας αντίθεσης μεταξύ των στοιχείων που αναλύονται από τη λογική εφαρμογής και αυτών που ελέγχονται από τη μονάδα επαλήθευσης υπογραφής. Ως αποτέλεσμα, ενώ η υπογραφή XML παραμένει τεχνικά έγκυρη και περνά τον έλεγχο επαλήθευσης, η λογική εφαρμογής επεξεργάζεται τα πλαστά στοιχεία. Ως εκ τούτου, ο επιτιθέμενος παρακάμπτει αποτελεσματικά την προστασία ακεραιότητας και την αυθεντικοποίηση προέλευσης της υπογραφής XML, επιτρέποντας την εισαγωγή αυθαίρετου περιεχομένου χωρίς ανίχνευση.
Οι παρακάτω επιθέσεις βασίζονται στο αυτό το blog post και αυτό το άρθρο. Ελέγξτε αυτά για περισσότερες λεπτομέρειες.
XSW #1
Στρατηγική: Προστίθεται ένα νέο ριζικό στοιχείο που περιέχει την υπογραφή.
Συνέπεια: Ο επαληθευτής μπορεί να μπερδευτεί μεταξύ του νόμιμου "Response -> Assertion -> Subject" και του κακόβουλου "καινούργιου Response -> Assertion -> Subject", οδηγώντας σε προβλήματα ακεραιότητας δεδομένων.
XSW #2
Διαφορά από το XSW #1: Χρησιμοποιεί μια αποσυνδεδεμένη υπογραφή αντί για μια περιτυλιγμένη υπογραφή.
Συνέπεια: Η "κακή" δομή, παρόμοια με το XSW #1, στοχεύει να παραπλανήσει την επιχειρηματική λογική μετά τον έλεγχο ακεραιότητας.
XSW #3
Στρατηγική: Δημιουργείται μια κακή Assertion στον ίδιο ιεραρχικό επίπεδο με την αρχική assertion.
Συνέπεια: Σκοπός είναι να μπερδέψει την επιχειρηματική λογική ώστε να χρησιμοποιήσει τα κακόβουλα δεδομένα.
XSW #4
Διαφορά από το XSW #3: Η αρχική Assertion γίνεται παιδί της αντιγραμμένης (κακής) Assertion.
Συνέπεια: Παρόμοια με το XSW #3, αλλά τροποποιεί πιο επιθετικά τη δομή του XML.
XSW #5
Μοναδική πτυχή: Ούτε η Υπογραφή ούτε η αρχική Assertion ακολουθούν τις προτεινόμενες διαμορφώσεις (περιτυλιγμένη/αποσυνδεδεμένη/περιτυλιγμένη).
Συνέπεια: Η αντιγραμμένη Assertion περιβάλλει την Υπογραφή, τροποποιώντας την αναμενόμενη δομή του έγγραφου.
XSW #6
Στρατηγική: Παρόμοια τοποθέτηση με το XSW #4 και #5, αλλά με μια παραλλαγή.
Συνέπεια: Η αντιγραμμένη Assertion περιβάλλει την Υπογραφή,
Εργαλεία
Μπορείτε επίσης να χρησιμοποιήσετε την επέκταση Burp SAML Raider για να δημιουργήσετε το POC από ένα αίτημα SAML για να ελέγξετε τυχόν ευπάθειες XXE και ευπάθειες SAML.
Ελέγξτε επίσης αυτήν την ομιλία: https://www.youtube.com/watch?v=WHn-6xHL7mI
XSLT μέσω SAML
Για περισσότερες πληροφορίες σχετικά με το XSLT, μεταβείτε στο:
pageXSLT Server Side Injection (Extensible Stylesheet Language Transformations)Οι Μετατροπές Επεκτάσιμης Γλώσσας Φύλλων Στυλ (XSLT) μπορούν να χρησιμοποιηθούν για τη μετατροπή εγγράφων XML σε διάφορες μορφές όπως HTML, JSON ή PDF. Είναι σημαντικό να σημειωθεί ότι οι μετατροπές XSLT πραγματοποιούνται πριν από τον έλεγχο της ψηφιακής υπογραφής. Αυτό σημαίνει ότι μια επίθεση μπορεί να είναι επιτυχής ακόμα και χωρίς μια έγκυρη υπογραφή. Μια αυτο-υπογεγραμμένη ή μη έγκυρη υπογραφή είναι αρκετή για να συνεχίσει η επίθεση.
Εδώ μπορείτε να βρείτε ένα POC για να ελέγξετε αυτού του είδους τις ευπάθειες, στη σελίδα hacktricks που αναφέρεται στην αρχή αυτής της ενότητας μπορείτε να βρείτε φορτία.
Εργαλείο
Μπορείτε επίσης να χρησιμοποιήσετε την επέκταση Burp SAML Raider για να δημιουργήσετε το POC από ένα αίτημα SAML για να ελέγξετε τυχόν ευπάθειες XSLT.
Ελέγξτε επίσης αυτήν την ομιλία: https://www.youtube.com/watch?v=WHn-6xHL7mI
Αποκλεισμός Υπογραφής XML
Ο Αποκλεισμός Υπογραφής XML παρατηρεί τη συμπεριφορά των υλοποιήσεων SAML όταν το στοιχείο Υπογραφής δεν είναι παρόν. Εάν αυτό το στοιχείο λείπει, η επικύρωση της υπογραφής μπορεί να μην πραγματοποιηθεί, καθιστώντας το ευάλωτο. Μπορείτε να δοκιμάσετε αυτό αλλάζοντας το περιεχόμενο που συνήθως επικυρώνεται από την υπογραφή.
Εργαλείο
Μπορείτε επίσης να χρησιμοποιήσετε την επέκταση Burp SAML Raider. Παρεμβάλλετε την απάντηση SAML και κάντε κλικ στο Αφαίρεση Υπογραφών
. Με την αφαίρεση των υπογραφών, αφήστε το αίτημα να συνεχίσει προς τον στόχο. Εάν η υπογραφή δεν απαιτείται από την Υπηρεσία
Πλαστογράφηση Πιστοποιητικού
Η πλαστογράφηση πιστοποιητικού είναι μια τεχνική για να ελέγξετε αν ένας Πάροχος Υπηρεσιών (SP) επαληθεύει σωστά ότι ένα μήνυμα SAML έχει υπογραφεί από έναν αξιόπιστο Πάροχο Ταυτότητας (IdP). Περιλαμβάνει τη χρήση ενός *αυτο-υπογεγραμμένου πιστοποιητικού για να υπογράψει την απάντηση ή την κατάθεση SAML, πράγμα που βοηθά στην αξιολόγηση της διαδικασίας επαλήθευσης εμπιστοσύνης μεταξύ του SP και του IdP.
Πώς να πραγματοποιήσετε πλαστογράφηση πιστοποιητικού
Οι παρακάτω βήματα περιγράφουν τη διαδικασία χρησιμοποιώντας την επέκταση Burp SAML Raider:
Παρεμβάλλετε την απάντηση SAML.
Εάν η απάντηση περιέχει μια υπογραφή, στείλτε το πιστοποιητικό στο SAML Raider Certs χρησιμοποιώντας το κουμπί
Αποστολή Πιστοποιητικού στα SAML Raider Certs
.Στην καρτέλα SAML Raider Certificates, επιλέξτε το εισαγόμενο πιστοποιητικό και κάντε κλικ στο
Αποθήκευση και Αυτο-Υπογραφή
για να δημιουργήσετε ένα αυτο-υπογεγραμμένο αντίγραφο του αρχικού πιστοποιητικού.Επιστρέψτε στο παρεμβαλλόμενο αίτημα στο Proxy του Burp. Επιλέξτε το νέο αυτο-υπογεγραμμένο πιστοποιητικό από την αναπτυσσόμενη λίστα XML Signature.
Αφαιρέστε οποιεσδήποτε υπάρχουσες υπογραφές με το κουμπί
Αφαίρεση Υπογραφών
.Υπογράψτε το μήνυμα ή την κατάθεση με το νέο πιστοποιητικό χρησιμοποιώντας το κουμπί
(Επαν-)Υπογραφή Μηνύματος
ή(Επαν-)Υπογραφή Κατάθεσης
, ανάλογα.Προωθήστε το υπογεγραμμένο μήνυμα. Η επιτυχημένη πιστοποίηση υποδεικνύει ότι ο SP αποδέχεται μηνύματα που έχουν υπογραφεί από το αυτο-υπογεγραμμένο πιστοποιητικό σας, αποκαλύπτοντας πιθανές ευπάθειες στη διαδικασία επαλήθευσης των μηνυμάτων SAML.
Σύγχυση Παραλήπτη Διακριτικού / Σύγχυση Στόχου Πάροχου Υπηρεσιών
Η Σύγχυση Παραλήπτη Διακριτικού και η Σύγχυση Στόχου Πάροχου Υπηρεσιών αφορούν τον έλεγχο εάν ο Πάροχος Υπηρεσιών επαληθεύει σωστά τον προορισμένο παραλήπτη μιας απάντησης. Ουσιαστικά, ένας Πάροχος Υπηρεσιών θα πρέπει να απορρίπτει μια απάντηση πιστοποίησης εάν αυτή ήταν προορισμένη για έναν διαφορετικό πάροχο. Το κρίσιμο στοιχείο εδώ είναι το πεδίο Παραλήπτης, που βρίσκεται μέσα στο στοιχείο SubjectConfirmationData μιας απάντησης SAML. Αυτό το πεδίο καθορίζει μια διεύθυνση URL που υποδεικνύει πού πρέπει να αποσταλεί η Δήλωση. Εάν ο πραγματικός παραλήπτης δεν ταιριάζει με τον προοριζόμενο Πάροχ
XSS στη λειτουργία αποσύνδεσης
Η αρχική έρευνα μπορεί να βρεθεί στον ακόλουθο σύνδεσμο: αυτός ο σύνδεσμος.
Κατά τη διαδικασία της αναζήτησης καταλόγου με βία, ανακαλύφθηκε μια σελίδα αποσύνδεσης στην παρακάτω διεύθυνση:
Μετά την πρόσβαση σε αυτόν τον σύνδεσμο, παρατηρήθηκε μια ανακατεύθυνση προς:
Αυτό αποκάλυψε ότι ο παράμετρος base
δέχεται ένα URL. Λαμβάνοντας υπόψη αυτό, προέκυψε η ιδέα να αντικατασταθεί το URL με javascript:alert(123);
σε μια προσπάθεια να προκαλείται μια επίθεση XSS (Cross-Site Scripting).
Μαζική Εκμετάλλευση
Το εργαλείο SAMLExtractor χρησιμοποιήθηκε για να αναλυθούν υποτομείς του uberinternal.com
για τον εντοπισμό τον τομέων που χρησιμοποιούν την ίδια βιβλιοθήκη. Στη συνέχεια, αναπτύχθηκε ένα σενάριο για να επιτεθεί στη σελίδα oidauth/prompt
. Αυτό το σενάριο ελέγχει για την ύπαρξη ευπάθειας XSS (Cross-Site Scripting) εισάγοντας δεδομένα και ελέγχοντας αν αντανακλώνται στην έξοδο. Σε περιπτώσεις όπου τα εισαγόμενα δεδομένα αντανακλώνται, το σενάριο επισημαίνει τη σελίδα ως ευπάθη.
Αναφορές
Last updated