cross site scripting attack tutorial with examples
Ένας πλήρης οδηγός επίθεσης Cross Site Scripting (XSS), πώς να το αποτρέψετε και δοκιμές XSS.
Το Cross Site Scripting (XSS) είναι μια από τις πιο δημοφιλείς και ευάλωτες επιθέσεις που είναι γνωστή από κάθε προηγμένο δοκιμαστή. Θεωρείται ως μία από τις πιο επικίνδυνες επιθέσεις για τις εφαρμογές Ιστού και μπορεί επίσης να έχει επιβλαβείς συνέπειες.
Το XSS συγκρίνεται συχνά με παρόμοιες επιθέσεις από την πλευρά του πελάτη, καθώς κατά τη διάρκεια αυτής της επίθεσης χρησιμοποιούνται κυρίως γλώσσες από τον πελάτη. Ωστόσο, η επίθεση XSS θεωρείται επικίνδυνη, λόγω της ικανότητάς της να καταστρέφει ακόμη λιγότερο ευάλωτες τεχνολογίες.
Αυτό το σεμινάριο επίθεσης XSS, θα σας δώσουμε μια πλήρη επισκόπηση των τύπων, των εργαλείων και των προληπτικών μέτρων με τέλεια παραδείγματα με απλούς όρους για την εύκολη κατανόησή σας.
Τι θα μάθετε:
- Εισαγωγή στο XSS Attack
- Πώς εκτελείται το XSS;
- Τύποι επιθέσεων δέσμης ενεργειών μεταξύ ιστότοπων
- Πώς να δοκιμάσετε το XSS;
- Εργαλεία δοκιμών XSS
- Σύγκριση με άλλες επιθέσεις
- Τρόποι πρόληψης του XSS
- Πρόληψη σύμφωνα με τις τεχνολογίες
- Φύλλα εξαπάτησης XSS
- συμπέρασμα
- Συνιστώμενη ανάγνωση
Εισαγωγή στο XSS Attack
Η επίθεση Cross Site Scripting είναι μια κακόβουλη εισαγωγή κώδικα, η οποία θα εκτελεστεί στο πρόγραμμα περιήγησης του θύματος. Κακόβουλο σενάριο μπορεί να αποθηκευτεί στον διακομιστή ιστού και να εκτελείται κάθε φορά που ο χρήστης καλεί την κατάλληλη λειτουργικότητα. Μπορεί επίσης να εκτελεστεί με τις άλλες μεθόδους - χωρίς αποθηκευμένο σενάριο στον διακομιστή ιστού.
Ο κύριος σκοπός αυτής της επίθεσης είναι να κλέψει τα δεδομένα ταυτότητας του άλλου χρήστη - cookie, διακριτικά συνεδρίας και άλλες πληροφορίες. Στις περισσότερες περιπτώσεις, αυτή η επίθεση χρησιμοποιείται για να κλέψει τα cookie του άλλου ατόμου. Όπως γνωρίζουμε, τα cookies μας βοηθούν να συνδεθούμε αυτόματα. Επομένως, με κλεμμένα cookie, μπορούμε να συνδεθούμε με τις άλλες ταυτότητες. Και αυτός είναι ένας από τους λόγους, για τους οποίους αυτή η επίθεση θεωρείται ως μία από τις πιο επικίνδυνες επιθέσεις.
Η επίθεση XSS εκτελείται από την πλευρά του πελάτη. Μπορεί να εκτελεστεί με διαφορετικές γλώσσες προγραμματισμού από την πλευρά του πελάτη. Ωστόσο, πιο συχνά αυτή η επίθεση εκτελείται με Javascript και HTML.
Συνιστώμενη ανάγνωση=> Εκμάθηση HTML Injection
Πώς εκτελείται το XSS;
Η επίθεση Cross Site Scripting σημαίνει αποστολή και ένεση κακόβουλου κώδικα ή σεναρίου. Ο κακόβουλος κώδικας γράφεται συνήθως με γλώσσες προγραμματισμού από την πλευρά του πελάτη, όπως Javascript, HTML, VBScript , Flash, κ.λπ. Ωστόσο, το Javascript και το HTML χρησιμοποιούνται κυρίως για την εκτέλεση αυτής της επίθεσης.
Αυτή η επίθεση μπορεί να εκτελεστεί με διαφορετικούς τρόπους. Ανάλογα με τον τύπο της επίθεσης XSS, το κακόβουλο σενάριο ενδέχεται να αντικατοπτρίζεται στο πρόγραμμα περιήγησης του θύματος ή να αποθηκεύεται στη βάση δεδομένων και να εκτελείται κάθε φορά, όταν ο χρήστης καλεί την κατάλληλη λειτουργία.
Ο κύριος λόγος για αυτήν την επίθεση είναι ακατάλληλη επικύρωση εισόδου χρήστη, όπου κακόβουλη είσοδος μπορεί να εισέλθει στην έξοδο. Ένας κακόβουλος χρήστης μπορεί να εισαγάγει ένα σενάριο, το οποίο θα εισαχθεί στον κώδικα του ιστότοπου. Στη συνέχεια, το πρόγραμμα περιήγησης δεν είναι σε θέση να γνωρίζει εάν ο εκτελεσμένος κώδικας είναι κακόβουλος ή όχι.
Επομένως, κακόβουλο σενάριο εκτελείται στο πρόγραμμα περιήγησης του θύματος ή οποιαδήποτε πλαστή φόρμα εμφανίζεται για τους χρήστες. Υπάρχουν διάφορες μορφές στις οποίες μπορεί να συμβεί επίθεση XSS.
Οι κύριες μορφές του Cross Site Scripting είναι οι εξής:
- Το Cross Site Scripting μπορεί να συμβεί στο κακόβουλο σενάριο που εκτελείται στην πλευρά του πελάτη.
- Πλαστή σελίδα ή φόρμα που εμφανίζεται στον χρήστη (όπου το θύμα πληκτρολογεί διαπιστευτήρια ή κάνει κλικ σε κακόβουλο σύνδεσμο).
- Στις ιστοσελίδες με εμφανιζόμενες διαφημίσεις.
- Κακόβουλα email που εστάλησαν στο θύμα.
Αυτή η επίθεση συμβαίνει όταν ο κακόβουλος χρήστης εντοπίσει τα ευπαθή μέρη του ιστότοπου και τον αποστέλλει ως κατάλληλη κακόβουλη εισαγωγή. Κακόβουλο σενάριο εισάγεται στον κώδικα και στη συνέχεια αποστέλλεται ως έξοδος στον τελικό χρήστη.
Ας αναλύσουμε ένα απλό παράδειγμα: Σκεφτείτε ότι διαθέτουμε ιστότοπο με πεδίο αναζήτησης.
Εάν το πεδίο αναζήτησης είναι ευάλωτο, όταν ο χρήστης εισάγει οποιοδήποτε σενάριο, τότε θα εκτελεστεί.
Σκεφτείτε, ένας χρήστης εισάγει ένα πολύ απλό σενάριο όπως φαίνεται παρακάτω:
alert(‘XSS’)
Στη συνέχεια, αφού κάνετε κλικ στο 'Αναζήτηση' κουμπί, το εισαγόμενο σενάριο θα εκτελεστεί.
Όπως βλέπουμε στο Παράδειγμα ,εκτελείται το σενάριο που πληκτρολογείται στο πεδίο αναζήτησης. Αυτό δείχνει απλώς την ευπάθεια της επίθεσης XSS. Ωστόσο, μπορεί να πληκτρολογηθεί και ένα πιο επιβλαβές σενάριο.
Πολλοί δοκιμαστές συνδυάζουν την επίθεση Cross Site Scripting με Έγχυση Javascript , το οποίο εκτελείται επίσης από την πλευρά του πελάτη. Και στα δύο, εγχέεται κακόβουλο σενάριο επιθέσεων. Ωστόσο, στην περίπτωση επίθεσης XSS οι ετικέτες δεν είναι απαραίτητες για την εκτέλεση του σεναρίου.
Για παράδειγμα :
;
Επίσης, μπορεί να είναι ένα σενάριο που εκτελείται στο άλλο συμβάν.
Για παράδειγμα:Σε ποντίκι.
Ας αναλύσουμε ένα άλλο παράδειγμα:Σκεφτείτε, έχουμε μια σελίδα, όπου η τελευταία κριτική βιβλίου εμφανίζεται στον ιστότοπο.
Ο κώδικας αυτής της σελίδας θα φαίνεται όπως φαίνεται παρακάτω:
print '' print '. If this vulnerability is present in the web application, an indicated text will be inserted intags. Trying to pass some code through HTTP request as this is also a method to check if this attack is possible.
Generally, while testing for possible XSS attack, input validation should be checked and the tester should be conscious while checking the website’s output. Also if a code review is being performed, it is important to find how input can get into the output.
XSS Testing Tools
As Cross Site Scripting attack is one of the most popular risky attacks, there are a plenty of tools to test it automatically. We can find various scanners to check for possible XSS attack vulnerabilities – like, Nesus and Nikto. Both of which are considered as quite reliable.
From my software testing career, I would like to mention SOAP UI tool. SOAP UI can be considered as a quite strong tool for checking against the possible XSS attacks. It contains ready templates for checking against this attack. It really simplifies the testing process.
However, in order to test for this vulnerability with SOAP UI tool, API level testing should already be automated with that tool. Another solution to test against XSS can be browser plugins. However, plugins are considered as quite a weak tool to check against this type of attack.
Even while testing automatically, the tester should have good knowledge of this attack type and should be able to analyze the results appropriately.
Good knowledge is also helpful while selecting the testing tool. Also, it is important to know, that while performing scanning for security vulnerabilities with an automatic tool, testing manually is also a good practice and this way the tester will be able to see the results and analyze them.
Recommended Tool:
#1) Kiuwan

Find and fix vulnerabilities in your code at every stage of the SDLC.
Kiuwan is compliant with the most stringent security standards including OWASP, CWE, SANS 25, HIPPA, and more. Integrate Kiuwan in your IDE for instant feedback during development.
Kiuwan supports all major programming languages and integrates with leading DevOps tools.
=> Scan your code for free
Comparison with Other Attacks
XSS is considered to be one of the riskiest attacks, as its main purpose is to steal the website’s or system’s user identities. Also, XSS attack can be performed with different client-side languages like Javascript, HTML, VBScript, Flash, etc. And this makes it more harmful and widespread than the other possible attacks.
Testing for XSS attack is quite similar to testing for the other possible client-side attacks. However, it is important to remember what additional cases should be checked while testing for XSS.
Another thing, that makes this attack riskier is the possibility to be stored in the web service – this way it can affect many users for a longer period of time. XSS sometimes can be performed to even less vulnerable systems and its vulnerabilities are sometimes difficult to be found.
Also, while comparing with the other attacks, XSS has many ways to be performed and affect the website as well.
Ways to Prevent XSS
Though this type of attack is considered to be one of the most dangerous and risky one, still a preventing plan should be prepared. Because of the popularity of this attack, there are quite many ways to prevent it.
Commonly used main prevention methods include:
- Data validation
- Filtering
- Escaping
The first step in the prevention of this attack is Input validation . Everything, that is entered by the user should be precisely validated, because the user’s input may find its way to the output. Data validation can be named as the basis for ensuring the system’s security. I would remind, that the idea of validation is not to allow inappropriate input.
Therefore it just helps to reduce the risks, but may not be enough to prevent the possible XSS vulnerability.
Another good prevention method is user’s input filtering. The idea of the filtering is to search for risky keywords in the user’s input and remove them or replace them by empty strings.
Those keywords may be:
- tags
- Javascript commands
- HTML markup
Input filtering is quite easy to practice. It can be performed in different ways too.
Like:
- By developers who have written server-side code.
- Appropriate programming language’s library is being used.
In this case, some developers write their own code to search for appropriate keywords and remove them. However, the easier way would be to select appropriate programming languages library to filter the user’s input. I would like to comment, that using libraries is a more reliable way, as those libraries were used and tested by many developers.
Another possible prevention method is characters escaping . In this practice, appropriate characters are being changed by special codes. For Example, Meanwhile, good testing should not be forgotten as well. It should be invested in good software testers knowledge and reliable software testing tools. This way good software quality will be better assured.
Prevention According to Technologies
As already discussed, filtering and characters escaping are the main prevention methods. However, it can be performed differently in different programming languages. Some programming languages have appropriate filtering libraries and some do not.
It should be mentioned, that filtering can be performed quite easily in Java and PHP programming languages, as they have appropriate libraries for it.
Java technology is quite widely used, therefore there are many solutions to it. If you are using Spring technology and if you would like to escape HTML for the whole application, then you have to write the appropriate code in the project’s web.xml file.
defaultHtmlEscape true
Αυτός ο κωδικός θα αλλάξει τη διαφυγή HTML για ολόκληρη την εφαρμογή.
Εάν θέλετε να αλλάξετε τη διαφυγή HTML για τις κατάλληλες φόρμες σελίδας, τότε ο κώδικας πρέπει να γραφτεί ως εξής:
Υπάρχουν πολλά έτοιμα φίλτρα XSS με τη μορφή αρχείου .jar. Θα ήθελα να υπενθυμίσω, ότι το αρχείο .jar πρέπει να προστεθεί στο έργο σας και μόνο τότε μπορούν να χρησιμοποιηθούν οι βιβλιοθήκες του. Ένα τέτοιο φίλτρο XSS είναι το xssflt.jar, το οποίο είναι ένα φίλτρο servlet. Αυτό το αρχείο .jar μπορεί εύκολα να ληφθεί από το Διαδίκτυο και να προστεθεί στο έργο σας.
Αυτό το φίλτρο ελέγχει κάθε αίτημα που αποστέλλεται στην εφαρμογή και το καθαρίζει από πιθανή ένεση.
πώς να καλέσετε μια μέθοδο χρησιμοποιώντας πίνακα αντικειμένων στην Java
Όταν προστίθεται ένα αρχείο external.jar στο έργο, πρέπει επίσης να περιγραφεί στο αρχείο web.xml:
XSSFilter com.cj.xss.XSSFilter
Μια άλλη πιθανή λύση είναι η βιβλιοθήκη ESAPI. Η βιβλιοθήκη ESAPI είναι συμβατή με πολλές γλώσσες προγραμματισμού. Μπορείτε να βρείτε βιβλιοθήκες ESAPI για γλώσσες προγραμματισμού Java και PHP. Πρόκειται για μια ανοιχτή πηγή και δωρεάν βιβλιοθήκη, η οποία βοηθά στον έλεγχο της ασφάλειας της εφαρμογής.
Φύλλα εξαπάτησης XSS
XSS Cheat Sheets μπορεί να είναι πολύ χρήσιμη για την πρόληψη σεναρίων μεταξύ ιστότοπων. Είναι μια κατευθυντήρια γραμμή για τους προγραμματιστές σχετικά με τον τρόπο πρόληψης επιθέσεων XSS. Οι κανόνες είναι πολύ χρήσιμοι και δεν πρέπει να ξεχαστούν κατά την ανάπτυξη. XSS Cheat Sheets μπορούν να βρεθούν σε κοινότητες διαδικτύου όπως το OWASP (The Open Web Application Security Project).
Διαφορετικοί τύποι Cheat Sheets:
- Φύλλο εξαπάτησης πρόληψης XSS
- Φύλλο εξαπάτησης DOM XSS
- Φύλλο εξαπάτησης φίλτρου XSS
Η κύρια κατευθυντήρια γραμμή θα ήταν το Cheat Sheet Prevention XSS, καθώς παρέχει κοινούς κανόνες για την πρόληψη των επιθέσεων XSS. Αν ακολουθήσατε τους κανόνες DOM XSS Cheat Sheet και XSS Filter Evasion Cheat Sheet, θα πρέπει να ακολουθήσετε το XSS Prevention Cheat Sheet.
Όπως αναφέρθηκε, το XSS Cheat Sheet Sheet μπορεί να βρεθεί στην κοινότητα OWASP. Αυτό το Cheat Sheet μας παρέχει μια λίστα κανόνων, που θα μας βοηθούσαν να μειώσουμε τους κινδύνους πιθανών επιθέσεων XSS. Δεν είναι μόνο οι κανόνες κωδικοποίησης αλλά και οι ευπάθειες ασφαλείας σε προληπτική βάση.
Λίγοι από τους κανόνες περιλαμβάνουν:
- Δεν πρέπει να εισάγετε μη αξιόπιστα δεδομένα.
- Η HTML πρέπει να ξεφύγει πριν από την εισαγωγή τυχόν μη αξιόπιστων δεδομένων.
- Το χαρακτηριστικό πρέπει να ξεφύγει πριν από την εισαγωγή των μη αξιόπιστων δεδομένων κ.λπ.
Ως εκ τούτου, το Cheat Sheet μπορεί να είναι πολύ χρήσιμο στην πρόληψη αυτού του τύπου επιθέσεων.
συμπέρασμα
Κατά τη δοκιμή, συνιστάται ιδιαίτερα η αξιολόγηση των κινδύνων που προκαλούν πιθανές επιθέσεις XSS. Η επίθεση XSS μπορεί να επηρεάσει εφαρμογές ιστού, οι οποίες φαίνεται να είναι ασφαλείς επίσης.
Θεωρείται μία από τις πιο επιβλαβείς και επικίνδυνες επιθέσεις. Ως εκ τούτου, δεν πρέπει να ξεχνάμε αυτόν τον τύπο δοκιμών. Κατά τη διεξαγωγή δοκιμών κατά του XSS, είναι σημαντικό να έχετε καλές γνώσεις σχετικά με αυτήν την επίθεση. Και αυτή είναι η βάση για την ορθή ανάλυση των αποτελεσμάτων των δοκιμών και την επιλογή των κατάλληλων εργαλείων δοκιμών.
Είστε υπεύθυνος δοκιμών που έχει ασχοληθεί με επιθέσεις XSS μεταξύ ιστότοπων; Έχετε ενδιαφέροντα γεγονότα σχετικά με τις επιθέσεις XSS που θα βοηθήσουν και τους αναγνώστες μας; Μη διστάσετε να μοιραστείτε τις εμπειρίες σας μαζί μας στην παρακάτω ενότητα σχολίων !!
Συνιστώμενη ανάγνωση
- Εκμάθηση έκλειψης σε βάθος για αρχάριους
- Tutorial HTML Injection: Τύποι & πρόληψη με παραδείγματα
- Εκμάθηση δοκιμών SQL Injection (Παράδειγμα και πρόληψη της επίθεσης SQL Injection)
- Τι είναι το DDoS Attack και πώς να το DDoS;
- Selenium Grid Tutorial: Ρύθμιση και παράδειγμα δοκιμών Cross Browser
- Εκμάθηση Java Reflection με παραδείγματα
- Εκπαιδευτικό πρόγραμμα SVN: Διαχείριση πηγαίου κώδικα χρησιμοποιώντας ανατροπή
- Εκμάθηση Python DateTime με παραδείγματα