XSS για αρχάριους: Εντοπισμός και εκμετάλλευση ευπαθειών σε φόρμες

black flat screen computer monitor

Εισαγωγή

Το Cross-Site Scripting (XSS) είναι μία από τις πιο γνωστές ευπάθειες στον χώρο του web security. Εμφανίζεται όταν μια εφαρμογή επιτρέπει σε κακόβουλο κώδικα JavaScript να εισαχθεί και να εκτελεστεί στον browser του χρήστη.
Σε αυτό το άρθρο θα δούμε τι είναι το XSS, πώς λειτουργεί και πώς μπορούμε να το εντοπίσουμε σε φόρμες, με απλά παραδείγματα.

Τι είναι το XSS;

Το XSS ανήκει στην κατηγορία των injection attacks.
Μια τυπική ευπάθεια XSS επιτρέπει σε έναν επιτιθέμενο να:

  • Κλέψει cookies και session tokens.
  • Τροποποιήσει το περιεχόμενο μιας σελίδας.
  • Ανακατευθύνει τον χρήστη σε κακόβουλες σελίδες.
  • Εκτελέσει phishing επιθέσεις.

Υπάρχουν τρεις βασικοί τύποι:

  1. Stored XSS – ο κακόβουλος κώδικας αποθηκεύεται στη βάση δεδομένων.
  2. Reflected XSS – ο κώδικας επιστρέφεται αμέσως μέσω παραμέτρων URL ή φορμών.
  3. DOM-based XSS – η ευπάθεια οφείλεται στη δυναμική διαχείριση DOM από JavaScript.

Παράδειγμα XSS σε φόρμα

Ας υποθέσουμε ότι έχουμε μια φόρμα αναζήτησης χωρίς φίλτρα ασφαλείας:

<form method="GET" action="search.php">
  <input type="text" name="q">
  <input type="submit" value="Αναζήτηση">
</form>

Αν η σελίδα search.php εμφανίζει απευθείας την τιμή του q χωρίς έλεγχο:

<?php echo "Αποτελέσματα για: " . $_GET['q']; ?>

Ο εισβολέας μπορεί να εισάγει:

<script>alert('XSS');</script>

Και ο browser θα εκτελέσει τον κώδικα!

Πώς να εντοπίσουμε XSS σε φόρμες

  • Δοκίμασε να εισάγεις βασικά payloads όπως:
<script>alert(1)</script>
  • Χρησιμοποίησε πιο stealth payloads όπως:
<img src=x onerror=alert(1)>
  • Παρατήρησε αν η είσοδος επιστρέφεται στην σελίδα χωρίς φίλτρα.
  • Χρησιμοποίησε εργαλεία όπως το Burp Suite ή το OWASP ZAP για αυτοματοποίηση.

Πώς να προστατευτούμε από XSS

Οι προγραμματιστές πρέπει να εφαρμόσουν:

  • Escaping εξόδου (Output Escaping): Όλες οι εισροές να κωδικοποιούνται πριν εμφανιστούν στο HTML.
  • Χρήση CSP (Content Security Policy): Περιορίζει ποιοι scripts μπορούν να εκτελεστούν.
  • Input Validation: Αποδοχή μόνο έγκυρων χαρακτήρων.
  • XSS Filters σε Frameworks: Τα περισσότερα frameworks (π.χ. Django, Laravel) έχουν built-in προστασία.

Συμπέρασμα

Το XSS είναι μία από τις πιο συχνές αλλά και πιο εύκολα αποτρέψιμες ευπάθειες. Η κατανόηση της λειτουργίας του και η σωστή ασφάλεια στις φόρμες είναι κρίσιμες για κάθε προγραμματιστή και ethical hacker.