DOM XSS
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)
DOM ευπάθειες συμβαίνουν όταν δεδομένα από πηγές που ελέγχονται από επιτιθέμενους (όπως location.search
, document.referrer
, ή document.cookie
) μεταφέρονται με ανασφαλή τρόπο σε στόχους. Οι στόχοι είναι συναρτήσεις ή αντικείμενα (π.χ., eval()
, document.body.innerHTML
) που μπορούν να εκτελέσουν ή να αποδώσουν επιβλαβές περιεχόμενο αν λάβουν κακόβουλα δεδομένα.
Πηγές είναι είσοδοι που μπορούν να χειραγωγηθούν από επιτιθέμενους, συμπεριλαμβανομένων των URLs, cookies και διαδικτυακών μηνυμάτων.
Στόχοι είναι δυνητικά επικίνδυνες καταλήξεις όπου τα κακόβουλα δεδομένα μπορούν να οδηγήσουν σε αρνητικές συνέπειες, όπως η εκτέλεση σεναρίων.
Ο κίνδυνος προκύπτει όταν τα δεδομένα ρέουν από μια πηγή σε έναν στόχο χωρίς κατάλληλη επικύρωση ή απολύμανση, επιτρέποντας επιθέσεις όπως το XSS.
You can find a more updated list of sources and sinks in https://github.com/wisec/domxsswiki/wiki
Κοινές πηγές:
Κοινές Σημείες Εισόδου:
jQuery | |||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
| |
|
|
| |
|
|
| |
|
|
|
|
|
|
| |
|
|
| |
|
|
| |
|
| ||
|
| `` | `` |
Η innerHTML
σημείο εισόδου δεν δέχεται script
στοιχεία σε κανέναν σύγχρονο περιηγητή, ούτε θα εκτελούνται τα γεγονότα svg onload
. Αυτό σημαίνει ότι θα χρειαστεί να χρησιμοποιήσετε εναλλακτικά στοιχεία όπως img
ή iframe
.
Αυτού του είδους το XSS είναι πιθανώς το πιο δύσκολο να βρεθεί, καθώς πρέπει να κοιτάξετε μέσα στον κώδικα JS, να δείτε αν χρησιμοποιεί οποιοδήποτε αντικείμενο του οποίου την τιμή ελέγχετε, και σε αυτή την περίπτωση, να δείτε αν υπάρχει οποιοσδήποτε τρόπος να το εκμεταλλευτείτε για να εκτελέσετε αυθαίρετο JS.
Επέκταση περιηγητή για να ελέγχει κάθε δεδομένο που φτάνει σε μια πιθανή σημείο εισόδου: https://github.com/kevin-mizu/domloggerpp
Από: https://portswigger.net/web-security/dom-based/open-redirection
Οι ευπάθειες ανοιχτής ανακατεύθυνσης στο DOM συμβαίνουν όταν ένα σενάριο γράφει δεδομένα, τα οποία μπορεί να ελέγξει ένας επιτιθέμενος, σε μια σημείο εισόδου ικανή να ξεκινήσει πλοήγηση σε διάφορους τομείς.
Είναι κρίσιμο να κατανοήσετε ότι η εκτέλεση αυθαίρετου κώδικα, όπως javascript:alert(1)
, είναι δυνατή αν έχετε έλεγχο στην αρχή της διεύθυνσης URL όπου συμβαίνει η ανακατεύθυνση.
Σημεία Εισόδου:
From: https://portswigger.net/web-security/dom-based/cookie-manipulation
Οι ευπάθειες χειρισμού cookie που βασίζονται στο DOM συμβαίνουν όταν ένα σενάριο ενσωματώνει δεδομένα, τα οποία μπορούν να ελεγχθούν από έναν επιτιθέμενο, στην τιμή ενός cookie. Αυτή η ευπάθεια μπορεί να οδηγήσει σε απροσδόκητη συμπεριφορά της ιστοσελίδας αν το cookie χρησιμοποιείται εντός του ιστότοπου. Επιπλέον, μπορεί να εκμεταλλευτεί για να πραγματοποιηθεί μια επίθεση σταθεροποίησης συνεδρίας αν το cookie εμπλέκεται στην παρακολούθηση των συνεδριών χρηστών. Ο κύριος αποδέκτης που σχετίζεται με αυτή την ευπάθεια είναι:
Sinks:
From: https://portswigger.net/web-security/dom-based/javascript-injection
Οι ευπάθειες εισαγωγής JavaScript που βασίζονται στο DOM δημιουργούνται όταν ένα σενάριο εκτελεί δεδομένα, τα οποία μπορούν να ελεγχθούν από έναν επιτιθέμενο, ως κώδικα JavaScript.
Sinks:
From: https://portswigger.net/web-security/dom-based/document-domain-manipulation
Ευπάθειες χειρισμού document-domain προκύπτουν όταν ένα σενάριο ορίζει την ιδιότητα document.domain
χρησιμοποιώντας δεδομένα που μπορεί να ελέγξει ένας επιτιθέμενος.
Η ιδιότητα document.domain
παίζει έναν κεντρικό ρόλο στην επιβολή της πολιτικής ίδιας προέλευσης από τους περιηγητές. Όταν δύο σελίδες από διαφορετικές προελεύσεις ορίζουν το document.domain
τους στην ίδια τιμή, μπορούν να αλληλεπιδρούν χωρίς περιορισμούς. Αν και οι περιηγητές επιβάλλουν ορισμένους περιορισμούς στις τιμές που μπορούν να ανατεθούν στο document.domain
, αποτρέποντας την ανάθεση εντελώς άσχετων τιμών στην πραγματική προέλευση της σελίδας, υπάρχουν εξαιρέσεις. Συνήθως, οι περιηγητές επιτρέπουν τη χρήση υποτομέων ή γονικών τομέων.
Sinks:
From: https://portswigger.net/web-security/dom-based/websocket-url-poisoning
WebSocket-URL poisoning συμβαίνει όταν ένα σενάριο χρησιμοποιεί ελέγξιμα δεδομένα ως τον στόχο URL για μια σύνδεση WebSocket.
Sinks:
Ο κατασκευαστής WebSocket
μπορεί να οδηγήσει σε ευπάθειες WebSocket-URL poisoning.
From: https://portswigger.net/web-security/dom-based/link-manipulation
DOM-based link-manipulation vulnerabilities προκύπτουν όταν ένα σενάριο γράφει δεδομένα ελέγχου επιτιθέμενου σε έναν στόχο πλοήγησης μέσα στην τρέχουσα σελίδα, όπως ένας κλικαρίσιμος σύνδεσμος ή η URL υποβολής μιας φόρμας.
Sinks:
From: https://portswigger.net/web-security/dom-based/ajax-request-header-manipulation
Οι ευπάθειες χειρισμού αιτημάτων Ajax προκύπτουν όταν ένα σενάριο γράφει δεδομένα που ελέγχονται από τον επιτιθέμενο σε ένα αίτημα Ajax που εκδίδεται χρησιμοποιώντας ένα αντικείμενο XmlHttpRequest
.
Sinks:
From: https://portswigger.net/web-security/dom-based/local-file-path-manipulation
Οι ευπάθειες τοπικής παραποίησης διαδρομής αρχείου προκύπτουν όταν ένα σενάριο περνά δεδομένα που ελέγχονται από τον επιτιθέμενο σε μια API διαχείρισης αρχείων ως παράμετρο filename
. Αυτή η ευπάθεια μπορεί να εκμεταλλευτεί από έναν επιτιθέμενο για να κατασκευάσει μια διεύθυνση URL που, αν επισκεφθεί από έναν άλλο χρήστη, θα μπορούσε να οδηγήσει στο να ανοίξει ή να γράψει ο περιηγητής του χρήστη ένα αυθαίρετο τοπικό αρχείο.
Sinks:
From: https://portswigger.net/web-security/dom-based/client-side-sql-injection
Οι ευπάθειες SQL injection στον πελάτη συμβαίνουν όταν ένα σενάριο ενσωματώνει δεδομένα που ελέγχονται από τον επιτιθέμενο σε ένα ερώτημα SQL στον πελάτη με ανασφαλή τρόπο.
Sinks:
From: https://portswigger.net/web-security/dom-based/html5-storage-manipulation
Οι ευπάθειες χειρισμού HTML5-storage προκύπτουν όταν ένα σενάριο αποθηκεύει δεδομένα που ελέγχονται από τον επιτιθέμενο στην αποθήκευση HTML5 του φυλλομετρητή (localStorage
ή sessionStorage
). Ενώ αυτή η ενέργεια δεν είναι εγγενώς μια ευπάθεια ασφαλείας, γίνεται προβληματική αν η εφαρμογή στη συνέχεια διαβάσει τα αποθηκευμένα δεδομένα και τα επεξεργαστεί με ανασφαλή τρόπο. Αυτό θα μπορούσε να επιτρέψει σε έναν επιτιθέμενο να εκμεταλλευτεί τον μηχανισμό αποθήκευσης για να διεξάγει άλλες επιθέσεις βασισμένες στο DOM, όπως η διασταυρούμενη σcripting και η ένεση JavaScript.
Sinks:
From: https://portswigger.net/web-security/dom-based/client-side-xpath-injection
Ευπάθειες DOM-based XPath-injection συμβαίνουν όταν ένα σενάριο ενσωματώνει δεδομένα που ελέγχονται από τον επιτιθέμενο σε ένα ερώτημα XPath.
Sinks:
From: https://portswigger.net/web-security/dom-based/client-side-json-injection
Οι ευπάθειες JSON-injection που βασίζονται στο DOM συμβαίνουν όταν ένα σενάριο ενσωματώνει δεδομένα που ελέγχονται από τον επιτιθέμενο σε μια συμβολοσειρά που αναλύεται ως δομή δεδομένων JSON και στη συνέχεια επεξεργάζεται από την εφαρμογή.
Sinks:
From: https://portswigger.net/web-security/dom-based/web-message-manipulation
Ευπάθειες web-message προκύπτουν όταν ένα σενάριο στέλνει δεδομένα ελεγχόμενα από τον επιτιθέμενο ως web message σε άλλο έγγραφο μέσα στον περιηγητή. Ένα παράδειγμα ευάλωτης web-message χειραγώγησης μπορεί να βρεθεί στην Ακαδημία Ασφαλείας Ιστού του PortSwigger.
Sinks:
Η μέθοδος postMessage()
για την αποστολή web messages μπορεί να οδηγήσει σε ευπάθειες αν ο ακροατής γεγονότων για την παραλαβή μηνυμάτων χειρίζεται τα εισερχόμενα δεδομένα με μη ασφαλή τρόπο.
From: https://portswigger.net/web-security/dom-based/dom-data-manipulation
Ευπάθειες DOM-data manipulation προκύπτουν όταν ένα σενάριο γράφει δεδομένα ελεγχόμενα από τον επιτιθέμενο σε ένα πεδίο μέσα στο DOM που χρησιμοποιείται στην ορατή διεπαφή χρήστη ή στη λογική πλευρά του πελάτη. Αυτή η ευπάθεια μπορεί να εκμεταλλευτεί από έναν επιτιθέμενο για να κατασκευάσει μια διεύθυνση URL που, αν επισκεφθεί από άλλο χρήστη, μπορεί να αλλάξει την εμφάνιση ή τη συμπεριφορά της διεπαφής χρήστη πλευράς του πελάτη.
Sinks:
From: https://portswigger.net/web-security/dom-based/denial-of-service
Ευπάθειες άρνησης υπηρεσίας βασισμένες σε DOM συμβαίνουν όταν ένα σενάριο περνά δεδομένα που ελέγχονται από τον επιτιθέμενο με ανασφαλή τρόπο σε μια προβληματική API πλατφόρμα. Αυτό περιλαμβάνει APIs που, όταν καλούνται, μπορούν να οδηγήσουν τον υπολογιστή του χρήστη να καταναλώνει υπερβολικές ποσότητες CPU ή χώρου δίσκου. Τέτοιες ευπάθειες μπορεί να έχουν σημαντικές παρενέργειες, όπως η περιορισμένη λειτουργικότητα της ιστοσελίδας από τον περιηγητή, απορρίπτοντας τις προσπάθειες αποθήκευσης δεδομένων στο localStorage
ή τερματίζοντας απασχολημένα σενάρια.
Sinks:
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)