SOME - Same Origin Method Execution

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

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

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

Last updated