Немного о XSS уязвимостях

3 Мар
2012

Сегодня для «хакерства» отнюдь не обязательно обладать специфическими знаниями. Достаточно иметь желание и общее представление о том, как это работает. Общее, это на уровне «Там есть теги. Теги должны быть закрыты». Все остальное ищется гуглом.

XSS уязвимость, это возможность вставить в код сайта произвольный javascript.
Обычно, на уязвимости тестируют, вбивая во все доступные поля, нечто вроде «><script.>alert(1)</script.>, где «> закрывает открытые теги, а <script.>alert(1)</script.> собственно скрипт, вызывающий окошко, которое сообщает об успехе.
Чем же она опасна? Тем, что скинув пользователю в личку, ссылку вида _ttp://www.site.ru/pages/search/?q=%1%22%33%, можно получить его куки от этого сайта, подменив безобидный <script.>alert(1)</script.> скриптом перехватчика. Исходники последнего ищутся гуглом минуты за три.
Причем существуют специализированные сайты, где достаточно зарегистрироваться и взять готовый код скрипта для вставки. А потом только проверять админку на предмет награбленных куки. Все для удобства «хакера» — даже хостинг регистрировать не придется.

Однажды ночью мне не спалось. Читал статью о XSS уязвимостях и решил повбивать их в самописные движки, здраво рассудив, что в крупных open sourse проектах все дыры давно закрыты.
Как ни странно, многие сайты считают, что брать публичный движок «не солидно». И пишут свой, продолжая наступать на те же грабли.
Минут за десять, нашел два подходящих сайта: litres.ru(один из первых магазинов электронных книг fb2 в рунете) и avito.ru (крупная доска объявлений, периодически рекламирующаяся по TV).
Скрипты вбивались в поиск, ибо заморачиваться с комментариями было лень. «Классический» метод проверки

«><script.>alert(1)</script.>

результата не дал. Однако, более «замороченный» способ, легко обошел фильтр.

‘;alert(String.fromCharCode(88,83,83))//\’;alert(String.fromCharCode(88,83,83))//»;alert(String.fromCharCode(88,83,83))//\»;alert(String.fromCharCode(88,83,83))//—></script.>»>’><script.>alert(1)</script.>

Отписал админам о найденной уязвимости, с предложением поблагодарить меня на webmoney. Интересна реакция обоих сайтов.

Avito.ru уязвимость исправили, вежливо поблагодарили, но webmoney зажали и расплатились «фантиками». То есть предложили пополнить мне «кошелек avito», с которого можно оплачивать премиум объявления. Ради такого дела даже зарегистрировался там. Теперь у меня есть аккаунт на avito, с балансом 5000 рублей, которым я вряд ли воспользуюсь. Разве что продам кому нибудь…

Litres.ru уязвимость исправили и… тишина. Хотя, свой «кошелек» есть и на litres, могли бы и туда фантиков закинуть. Но мне даже спасибо не сказали.

Если найду новую уязвимость на avito, сообщу ли я об этом? Да. «Дорог не подарок, а внимание». Я понимаю, что поблагодарить им ничего не стоило, но мне приятно.
Если найду уязвимость на litres, сообщу ли об этом? Нет, не думаю. Не люблю знаете ли, когда меня игнорируют.

К слову о птичках, avito — крупная, быстроразвивающаяся площадка. Litres — как был относительно небольшим магазином, так им и остается. И не надо мне рассказывать про инвесторов — в litres тоже вливали очень серьезные деньги. Отношение к людям, оно сказывается, да.
По материалам Хабрахабр.



загрузка...

Комментарии:

Наверх