Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα,

 

κάνω το εξής:

 

Έχω ένα textarea, ένα button και ένα <p></p>.

Αυτά έχουνε την δυνατότητα όταν γράφω στο textaerea με το πάτημα του κουμπιού, το κείμενο να μεταφέρεται στο tag p. Επομένως όταν γράφω πχ <h1>test</h1> να εμφανίζεται στο p το test σε header 1. Οταν όμως βάζω script κώδικα δεν εκτελείται..Καμιά ιδέα τι μπορεί να φταίει; Θα πρέπει μήπως να το τρέξω σε server και την αμέσως επόμενη φορά που θα φορτωθεί η σελίδα να εκτελεστεί το script; 

Δημοσ.

Καμιά ιδέα τι μπορεί να φταίει;

Όχι, γιατί δε μας δίνεις αρκετές πληροφορίες. Τι ακριβώς είναι αυτό που γίνεται με το πάτημα του κουμπιού; Πού είναι ο σχετικός κώδικας;

Δημοσ.

Ο κώδικας είναι πολύ απλός

<!DOCTYPE html>
<html>
<head>
<script>
function myFunction() {
    var x = document.getElementById("textarea").value;
    document.getElementById("demo").innerHTML = x;
}
</script>
</head>
<body>

<textarea id="textarea" rows="4" cols="50">   </textarea>
<button onclick="myFunction()">Try it</button>
<p id="demo"></p>
</body>
</html>

Δημοσ.

Όταν βάζεις κώδικα Javascript σε ένα σημείο με αυτόν τον τρόπο, δεν εκτελείται.

 

Τώρα σχετικά με το XSS, δεν γίνεται όπως πας να το κάνεις. Για να γίνει μια τέτοια επίθεση, πρέπει να στείλεις τα δεδομένα σε ένα script και από εκεί και πέρα, θα πρέπει το script να επιστρέψει τα δεδομένα που έδωσες και αν δεν έχει την κατάλληλη προστασία, μπορείς να πετύχεις μια τέτοια επίθεση αν έχεις δώσει ως δεδομένα κάποιον κώδικα Javascript. Άρα για να κάνεις εξάσκηση, θα πρέπει να φτιάξεις script και να επιχειρήσεις τις επιθέσεις σου εκεί. 

 

Ορίστε ένα παράδειγμα σε php, αυτό το script επιστρέφει ότι όνομα του δώσεις σε έντονη γραμματοσειρά:

<?php 

$name = $_GET['name'];
echo "<b>$name</b>";

?>

Άρα για να κάνεις επίθεση, αντί όνομα που περιμένει, του δίνεις τον κώδικα Javascript και θα τον επιστρέψει όπως είναι, με αποτέλεσμα να εκτελεσθεί.

 

Παράδειγμα: script.php?name=<script>alert('hacked');</script>

Δημοσ.

To spec λέει ότι <script> elements που εισάγονται μέσω innerHTML δεν εκτελούνται. Επομένως δε μπορείς να δεις XSS έτσι (αν και θα πρέπει να δεις τα script elements στο DOM).


Τώρα σχετικά με το XSS, δεν γίνεται όπως πας να το κάνεις. Για να γίνει μια τέτοια επίθεση, πρέπει να στείλεις τα δεδομένα σε ένα script και από εκεί και πέρα, θα πρέπει το script να επιστρέψει τα δεδομένα που έδωσες και αν δεν έχει την κατάλληλη προστασία, μπορείς να πετύχεις μια τέτοια επίθεση αν έχεις δώσει ως δεδομένα κάποιον κώδικα Javascript.

 

Υπάρχουν πάρα μα πάρα πολλοί τρόποι να κάνεις XSS και ο παραπάνω είναι ένας μόνο από αυτούς. Ορίστε ένας άλλος (κλικ τα δυο κουμπιά με τη σειρά). Ορίστε ένας άλλος που είναι σχεδόν το ίδιο με αυτό που προσπαθεί να κάνει ο OP -- θα μπορούσε κανείς πολύ εύκολα να κάνει το XSS "αυτόματο" βάζοντας ένα element με position absolute κλπ κλπ μπροστά από τα πάντα και onmouseover δώσε πόνο.

Δημοσ.

Υπάρχουν πάρα μα πάρα πολλοί τρόποι να κάνεις XSS και ο παραπάνω είναι ένας μόνο από αυτούς. Ορίστε ένας άλλος (κλικ τα δυο κουμπιά με τη σειρά). Ορίστε ένας άλλος που είναι σχεδόν το ίδιο με αυτό που προσπαθεί να κάνει ο OP -- θα μπορούσε κανείς πολύ εύκολα να κάνει το XSS "αυτόματο" βάζοντας ένα element με position absolute κλπ κλπ μπροστά από τα πάντα και onmouseover δώσε πόνο.

Φυσικά και υπάρχουν διάφοροι τρόποι να εκτελέσεις κάποιον κώδικα, δεν είπα κάτι αντίθετο, εγώ αυτό που επισήμανα είναι πως για να κάνεις μια τέτοια επίθεση, πρέπει να στέλνεις τα δεδομένα στον server και να σου τα επιστρέφει αυτός, αλλιώς δεν είναι XSS, απλώς παίζεις μόνος σου με την Javascript.

  • Like 1

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...