Το toxssin είναι ένα penetration testing εργαλείο ανοιχτού κώδικα που αυτοματοποιεί τη διαδικασία εκμετάλλευσης ευπαθειών Cross-Site Scripting (XSS). Αποτελείται από έναν διακομιστή https που λειτουργεί ως διερμηνέας για την κίνηση που παράγεται από το malicious JavaScript payload που τροφοδοτεί αυτό το πρόγραμμα (toxin.js). Δημιουργός του προγράμματος είναι ο έλληνας προγραμματιστής Παναγιώτης Χάρτας
Το project αυτό ξεκίνησε (και εξακολουθεί να είναι) μια προσπάθεια για τη διερεύνηση του βάθους εκμετάλλευσης που μπορεί να εισάγει μια ευπάθεια XSS με τη χρήση του vanilla JavaScript.
Με τον όρο Cross-site Scripting ή XSS αναφερόμαστε σε μία ευπάθεια ασφάλειας που επιτρέπει σε έναν κακόβουλο χρήστη να εγχύσει κώδικα JavaScript σε μία ιστοσελίδα. Με τη σειρά του, ο κώδικας αυτός θα εκτελεστεί στον φυλλομετρητή του χρήστη που θα επιχειρήσει να επισκεφθεί την συγκεκριμένη ιστοσελίδα. Οι επιτιθέμενοι μπορούν να εκμεταλλευτούν μία cross-site scripting ευπάθεια προκειμένου να παρακάμψουν ελέγχους πρόσβασης, όπως το Same-Origin Policy.
Ο αντίκτυπος των εν λόγω επιθέσεων ποικίλλει από μικρές αλλαγές που ενδεχομένως επηρεάζουν την εμπειρία ενός χρήστη, μέχρι μεγάλης εμβέλειας ζημιές, ανάλογα με την ευαισθησία των δεδομένων που χειρίζεται ο ευάλωτος ιστότοπος, αλλά και τις προσπάθειες μετρίασης των αρνητικών συνεπειών.
Table of Contents
Χαρακτηριστικά
Από προεπιλογή, το JavaScript του toxssin περνάει αυτόματα σε όλα τα στοιχεία και τις πληροφορίες μιας ιστοσελίδας, κάνοντας κατάχρηση του αντικειμένου XMLHttpRequest για την υποκλοπή δεδομένων:
- cookies,
- keystrokes,
- paste events,
- input change events,
- file selections,
- form submissions,
- server responses,
- table data,
Μερικά σημαντικά χαρακτηριστικά του toxssin:
- Προσπαθεί να δημιουργήσει XSS persistence ενώ ο χρήστης περιηγείται στον ιστότοπο, υποκλέπτοντας τα αιτήματα και τις απαντήσεις http και ξαναδημιουργεί το έγγραφο, ενώ στην πραγματικότητα η θέση του εγγράφου δεν αλλάζει ποτέ,
- Υποστηρίζει διαχείριση των sessions (μπορείτε να το χρησιμοποιήσετε για την ταυτόχρονη εκμετάλλευση πολλαπλών στόχων, π.χ. εκτελώντας μια σειρά επιθέσεων phishing με βάση το XSS ή εκμεταλλευόμενοι κάποιο stored XSS),
- Υποστηρίζει την εκτέλεση προσαρμοσμένων JS scripts σε sessions (αφού συνδεθεί ένα πρόγραμμα περιήγησης, μπορείτε να εκτελέσετε προσαρμοσμένα JS scripts σε αυτό),
- Καταγράφει αυτόματα κάθε session.
Εγκατάσταση και χρήση
git clone https://github.com/t3l3machus/toxssin
cd ./toxssin
pip3 install -r requirements.txt
Για να ξεκινήσετε το toxssin.py, θα πρέπει να κατεβάσετε τα αρχεία ssl και ιδιωτικού κλειδιού.
Επιτυγχάνεται με την ακόλουθη εντολή:
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365
Συνιστάται να εκτελείτε το toxssin με ένα αξιόπιστο πιστοποιητικό. Έπειτα είστε σε θέση να τρέξετε το πρόγραμμα, εκτελώντας τον διακομιστή toxssin ως εξής:
# python3 toxssin.py -u https://your.domain.com -c /your/certificate.pem -k /your/privkey.pem
Περισσότερες λεπτομέρειες θα βρείτε εδώ.
Δυσκολίες εκμετάλλευσης XSS
Υπάρχουν 4 σημαντικά εμπόδια όταν πρόκειται για επιθέσεις Cross-Site Scripting:
- το σφάλμα “Mixed Content”, το οποίο μπορεί να επιλυθεί εξυπηρετώντας το JavaScript payload μέσω https.
- το σφάλμα “NET::ERR_CERT_AUTHORITY_INVALID”, το οποίο υποδεικνύει ότι το πιστοποιητικό του διακομιστή δεν είναι αξιόπιστο / έχει λήξει και μπορεί να παρακαμφθεί με τη χρήση πιστοποιητικού που έχει εκδοθεί από αξιόπιστη πηγή.
- Κοινή χρήση πόρων διαφορετικής προέλευσης (CORS), η οποία αντιμετωπίζεται κατάλληλα από τον διακομιστή toxssin.
- Η επικεφαλίδα Content-Security-Policy με το script-src ορισμένο μόνο σε συγκεκριμένο τομέα, θα εμποδίσει τη φόρτωση scripts με cross-domain src. Το Toxssin βασίζεται στη συνάρτηση eval() για να παραδώσει το payload, οπότε, αν ο ιστότοπος έχει CSP και το unsafe-eval source δεν έχει καθοριστεί στο script-src, η επίθεση πιθανότατα θα αποτύχει.
Βίντεο οδηγός
Στιγμιότυπα εφαρμογής
Μπορείτε να κατεβάσετε το πρόγραμμα από εδώ