20
Cross Site Scripting aka XSS: Начало QAClub #21 1 марта 2012 Колодяжный Иван 1 из 20

Cross Site Scripting aka XSS: Начало

Embed Size (px)

Citation preview

Cross Site Scripting aka XSS: Начало

QAClub #211 марта 2012

Колодяжный Иван

1 из 20

QAClub #21

Agenda

• Безопасность и Web• JavaScript и HTML• XSS – что это такое и с чем его едят?• XSS: тогда и сейчас• Делаем первые шаги• Как это было у них?• Поиск XSS на сайте• Что дальше?• Пару слов о защите

2 из 20

QAClub #21

Безопасность и Web

• Пользовательские данные

• Вирусы и трояны• Атаки на сайты

3 из 20

QAClub #21

JavaScript и HTML

• Как работает браузер?• Что из себя представляет HTML?• DOM модель• JavaScript• Cookies

4 из 20

QAClub #21

XSS – что это такое и с чем его едят?

• Буквально: «межсайтовый скриптинг»• По факту: XSS injection – инъекция

сторонних скриптов на атакуемый сайт

5 из 20

QAClub #21

XSS: тогда и сейчас

• 1990-е: фан и печеньки– Прикалываться над пользователями– Воровать админские cookies на форумах

• 2000-е: карты, деньги, два ствола– Все так же воруем аккаунты– Показываем баннеры и рекламу– Атакуем «чужие» сайты

6 из 20

QAClub #21

Делаем первые шаги

7 из 20

QAClub #21

Задача

• Внедрить скрипт на сайт:<script>alert(‘hello QAClub’)</script>

8 из 20

QAClub #21

Способы решения

• Заставить пользователя перейти по ссылке• Ввести скрипт на в поле ввода• Прячем скрипт• Отключение клиентской валидации• Ломать – не строить, или не валидный

HTML• Баги браузеров

9 из 20

QAClub #21

Заставить пользователя перейти по ссылке

• Вариант A:<a href=“mysite.com” onclick=“<script>alert('hello QAClub')</script>”>misite.com</a>

• Вариант B:<a href=“javacript:alert('hello QAClub')”>misite.com</a>

10 из 20

QAClub #21

Ввести скрипт на в поле ввода

• Простой алгоритм:– Находим поле ввода (input)– Вводим в него hello <script>alert('hello

QAClub')</script> QAClub– Смотрим что получилось

11 из 20

QAClub #21

Прячем скрипт

• Самый простой способ – HTML(URL) encode/decode– &lt;script&gt;alert(&#39;hello

QAClub&#39;)&lt;/script&gt;– %3cscript%3ealert(%27hello+QAClub%27)%3c

%2fscript%3e– См. Предыдущий способ

• Advanced level:– Unicode encode– etc

12 из 20

QAClub #21

Отключение клиентской валидации

• Дебаггер JavaScript в браузере• Отправка POST/GET запросов мимо

браузера

13 из 20

QAClub #21

Advanced level

• Ломать – не строить, или не валидный HTML

• Баги браузеров

14 из 20

QAClub #21

Как это было у них?

• Twitter, сентябрь 2011 – неправильная обработка атрибутов тега <img>

• Facebook, апрель 2011 – неправильная обработка атрибутов тега <a>

• Google – Analytics, support forum, Reader

15 из 20

QAClub #21

Поиск XSS на сайте

• Статический анализ кода• Автоматизация поиска на сайте:– Использование Web GUI– Использование POST и GET запросов

16 из 20

QAClub #21

Пару слов о защите

• Не доверять пользовательским данным• Модули для веб-серверов для фильтрации

запросов• IPS/IDS

17 из 20

QAClub #21

Что дальше?

• Advanced способы• Думаем, думаем, думаем• Автоматизация рутины

18 из 20

QAClub #21

Список используемой литаратуры

http://blog.e0ne.info/?tag=/xss

19 из 20

Спасибо

Skype: e0ne-userBlog: http://blog.e0ne.info/

QAClub #21 19 из 19

E-mail: [email protected]: @e0ne