hacktricks/pentesting-web/xss-cross-site-scripting/some-same-origin-method-execution.md

8.6 KiB
Raw Blame History

SOME - Same Origin Method Execution

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

WhiteIntel

WhiteIntel είναι μια μηχανή αναζήτησης που τροφοδοτείται από το dark-web και προσφέρει δωρεάν λειτουργίες για να ελέγξετε αν μια εταιρεία ή οι πελάτες της έχουν παραβιαστεί από stealer malwares.

Ο κύριος στόχος του WhiteIntel είναι να καταπολεμήσει τις καταλήψεις λογαριασμών και τις επιθέσεις ransomware που προκύπτουν από κακόβουλο λογισμικό που κλέβει πληροφορίες.

Μπορείτε να ελέγξετε την ιστοσελίδα τους και να δοκιμάσετε τη μηχανή τους δωρεάν στο:

{% embed url="https://whiteintel.io" %}


Same Origin Method Execution

Θα υπάρξουν περιπτώσεις όπου μπορείτε να εκτελέσετε κάποια περιορισμένη javascript σε μια σελίδα. Για παράδειγμα, στην περίπτωση όπου μπορείτε να ελέγξετε μια τιμή callback που θα εκτελεστεί.

Σε αυτές τις περιπτώσεις, ένα από τα καλύτερα πράγματα που μπορείτε να κάνετε είναι να πρόσβαση στο DOM για να καλέσετε όποια ευαίσθητη ενέργεια μπορείτε να βρείτε εκεί (όπως το να κάνετε κλικ σε ένα κουμπί). Ωστόσο, συνήθως θα βρείτε αυτή την ευπάθεια σε μικρές τελικές σημεία χωρίς τίποτα ενδιαφέρον στο DOM.

Σε αυτά τα σενάρια, αυτή η επίθεση θα είναι πολύ χρήσιμη, επειδή ο στόχος της είναι να μπορέσει να καταχραστεί την περιορισμένη εκτέλεση JS μέσα σε ένα DOM από μια διαφορετική σελίδα από την ίδια τοποθεσία με πολύ ενδιαφέρουσες ενέργειες.

Βασικά, η ροή της επίθεσης είναι η εξής:

  • Βρείτε ένα callback που μπορείτε να καταχραστείτε (πιθανώς περιορισμένο σε [\w\._]).
  • Αν δεν είναι περιορισμένο και μπορείτε να εκτελέσετε οποιοδήποτε JS, μπορείτε απλά να το καταχραστείτε ως κανονικό XSS
  • Κάντε την θύμα να ανοίξει μια σελίδα που ελέγχεται από τον επιτιθέμενο
  • Η σελίδα θα ανοίξει μόνη της σε ένα διαφορετικό παράθυρο (το νέο παράθυρο θα έχει το αντικείμενο opener που αναφέρεται στο αρχικό)
  • Η αρχική σελίδα θα φορτώσει τη σελίδα όπου βρίσκεται το ενδιαφέρον DOM.
  • Η δεύτερη σελίδα θα φορτώσει τη ευάλωτη σελίδα καταχρώντας το callback και χρησιμοποιώντας το opener αντικείμενο για να πρόσβαση και να εκτελέσει κάποια ενέργεια στην αρχική σελίδα (η οποία τώρα περιέχει το ενδιαφέρον DOM).

{% hint style="danger" %} Σημειώστε ότι ακόμη και αν η αρχική σελίδα έχει πρόσβαση σε μια νέα διεύθυνση URL μετά τη δημιουργία της δεύτερης σελίδας, το opener αντικείμενο της δεύτερης σελίδας είναι ακόμα μια έγκυρη αναφορά στην πρώτη σελίδα στο νέο DOM.

Επιπλέον, προκειμένου η δεύτερη σελίδα να μπορεί να χρησιμοποιήσει το αντικείμενο opener και οι δύο σελίδες πρέπει να είναι στην ίδια τοποθεσία. Αυτός είναι ο λόγος που, προκειμένου να καταχραστείτε αυτή την ευπάθεια, πρέπει να βρείτε κάποιο είδος XSS στην ίδια τοποθεσία. {% endhint %}

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

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}