SOME - Same Origin Method Execution
Same Origin Method Execution
Θα υπάρξουν περιπτώσεις όπου μπορείτε να εκτελέσετε κάποιο περιορισμένο javascript σε μια σελίδα. Για παράδειγμα, στην περίπτωση όπου μπορείτε να ελέγξετε μια τιμή callback που θα εκτελεστεί.
Σε αυτές τις περιπτώσεις, ένα από τα καλύτερα πράγματα που μπορείτε να κάνετε είναι να έχετε πρόσβαση στο DOM για να καλέσετε όποια ευαίσθητη ενέργεια μπορείτε να βρείτε εκεί (όπως το να κάνετε κλικ σε ένα κουμπί). Ωστόσο, συνήθως θα βρείτε αυτή την ευπάθεια σε μικρές τελικές οντότητες χωρίς τίποτα ενδιαφέρον στο DOM.
Σε αυτά τα σενάρια, αυτή η επίθεση θα είναι πολύ χρήσιμη, επειδή ο στόχος της είναι να μπορέσει να καταχραστεί την περιορισμένη εκτέλεση JS μέσα σε ένα DOM από μια διαφορετική σελίδα από την ίδια τοποθεσία με πολύ ενδιαφέρουσες ενέργειες.
Βασικά, η ροή της επίθεσης είναι η εξής:
Βρείτε ένα callback που μπορείτε να καταχραστείτε (πιθανώς περιορισμένο σε [\w\._]).
Αν δεν είναι περιορισμένο και μπορείτε να εκτελέσετε οποιοδήποτε JS, μπορείτε απλά να το καταχραστείτε ως κανονικό XSS
Κάντε τον θύμα να ανοίξει μια σελίδα που ελέγχεται από τον επιτιθέμενο
Η σελίδα θα ανοίξει μόνη της σε ένα διαφορετικό παράθυρο (το νέο παράθυρο θα έχει το αντικείμενο
opener
που αναφέρεται στην αρχική)Η αρχική σελίδα θα φορτώσει τη σελίδα όπου βρίσκεται το ενδιαφέρον DOM.
Η δεύτερη σελίδα θα φορτώσει τη ευάλωτη σελίδα καταχρώντας το callback και χρησιμοποιώντας το
opener
αντικείμενο για να έχει πρόσβαση και να εκτελέσει κάποια ενέργεια στην αρχική σελίδα (η οποία τώρα περιέχει το ενδιαφέρον DOM).
Σημειώστε ότι ακόμη και αν η αρχική σελίδα έχει πρόσβαση σε μια νέα διεύθυνση URL μετά τη δημιουργία της δεύτερης σελίδας, το αντικείμενο opener
της δεύτερης σελίδας είναι ακόμα έγκυρη αναφορά στην πρώτη σελίδα στο νέο DOM.
Επιπλέον, προκειμένου η δεύτερη σελίδα να μπορεί να χρησιμοποιήσει το αντικείμενο opener, και οι δύο σελίδες πρέπει να είναι στην ίδια τοποθεσία. Αυτός είναι ο λόγος που, προκειμένου να καταχραστείτε αυτή την ευπάθεια, πρέπει να βρείτε κάποιο είδος XSS στην ίδια τοποθεσία.
Exploitation
Μπορείτε να χρησιμοποιήσετε αυτή τη φόρμα για να δημιουργήσετε ένα PoC για να εκμεταλλευτείτε αυτόν τον τύπο ευπάθειας: https://www.someattack.com/Playground/SOMEGenerator
Για να βρείτε μια διαδρομή DOM σε ένα HTML στοιχείο με ένα κλικ μπορείτε να χρησιμοποιήσετε αυτή την επέκταση προγράμματος περιήγησης: https://www.someattack.com/Playground/targeting_tool
Example
Μπορείτε να βρείτε ένα ευάλωτο παράδειγμα στο https://www.someattack.com/Playground/
Σημειώστε ότι σε αυτό το παράδειγμα ο διακομιστής είναι δημιουργώντας κώδικα javascript και προσθέτοντάς τον στο HTML με βάση το περιεχόμενο της παραμέτρου callback:
<script>opener.{callbacl_content}</script>
. Γι' αυτό σε αυτό το παράδειγμα δεν χρειάζεται να υποδείξετε τη χρήση τουopener
ρητά.Επίσης, ελέγξτε αυτή την αναφορά CTF: https://ctftime.org/writeup/36068
References
Last updated