1. Cross Site Scripting aka XSS:
Начало
QAClub #21
1 марта 2012
Колодяжный Иван
1 из 20
2. Agenda
• Безопасность и Web
• JavaScript и HTML
• XSS – что это такое и с чем его едят?
• XSS: тогда и сейчас
• Делаем первые шаги
• Как это было у них?
• Поиск XSS на сайте
• Что дальше?
• Пару слов о защите
QAClub #21 2 из 20
3. Безопасность и Web
• Пользовательские
данные
• Вирусы и трояны
• Атаки на сайты
QAClub #21 3 из 20
4. JavaScript и HTML
• Как работает браузер?
• Что из себя представляет HTML?
• DOM модель
• JavaScript
• Cookies
QAClub #21 4 из 20
5. XSS – что это такое и с чем его едят?
• Буквально: «межсайтовый скриптинг»
• По факту: XSS injection – инъекция
сторонних скриптов на атакуемый сайт
QAClub #21 5 из 20
6. XSS: тогда и сейчас
• 1990-е: фан и печеньки
– Прикалываться над пользователями
– Воровать админские cookies на форумах
• 2000-е: карты, деньги, два ствола
– Все так же воруем аккаунты
– Показываем баннеры и рекламу
– Атакуем «чужие» сайты
QAClub #21 6 из 20
9. Способы решения
• Заставить пользователя перейти по ссылке
• Ввести скрипт на в поле ввода
• Прячем скрипт
• Отключение клиентской валидации
• Ломать – не строить, или не валидный
HTML
• Баги браузеров
QAClub #21 9 из 20
10. Заставить пользователя перейти по
ссылке
• Вариант A:
<a href=“mysite.com” onclick=“<script>alert('hello
QAClub')</script>”>misite.com</a>
• Вариант B:
<a href=“javacript:alert('hello QAClub')”>misite.com</a>
QAClub #21 10 из 20
11. Ввести скрипт на в поле ввода
• Простой алгоритм:
– Находим поле ввода (input)
– Вводим в него hello <script>alert('hello
QAClub')</script> QAClub
– Смотрим что получилось
QAClub #21 11 из 20
12. Прячем скрипт
• Самый простой способ – HTML(URL)
encode/decode
– <script>alert('hello
QAClub')</script>
– %3cscript%3ealert(%27hello+QAClub%27)%3c%2fscri
pt%3e
– См. Предыдущий способ
• Advanced level:
– Unicode encode
– etc
QAClub #21 12 из 20
14. Advanced level
• Ломать – не строить, или не валидный
HTML
• Баги браузеров
QAClub #21 14 из 20
15. Как это было у них?
• Twitter, сентябрь 2011 – неправильная
обработка атрибутов тега <img>
• Facebook, апрель 2011 – неправильная
обработка атрибутов тега <a>
• Google – Analytics, support forum, Reader
QAClub #21 15 из 20
16. Поиск XSS на сайте
• Статический анализ кода
• Автоматизация поиска на сайте:
– Использование Web GUI
– Использование POST и GET запросов
QAClub #21 16 из 20
17. Пару слов о защите
• Не доверять пользовательским данным
• Модули для веб-серверов для фильтрации
запросов
• IPS/IDS
QAClub #21 17 из 20
18. Что дальше?
• Advanced способы
• Думаем, думаем, думаем
• Автоматизация рутины
QAClub #21 18 из 20