SlideShare a Scribd company logo
1 of 20
Cross Site Scripting aka XSS:
           Начало

                           QAClub #21
                         1 марта 2012
                     Колодяжный Иван


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

                         QAClub #21         2 из 20
Безопасность и Web


• Пользовательские
  данные
• Вирусы и трояны
• Атаки на сайты




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




                     QAClub #21      4 из 20
XSS – что это такое и с чем его едят?
• Буквально: «межсайтовый скриптинг»
• По факту: XSS injection – инъекция
  сторонних скриптов на атакуемый сайт




                   QAClub #21            5 из 20
XSS: тогда и сейчас
• 1990-е: фан и печеньки
  – Прикалываться над пользователями
  – Воровать админские cookies на форумах
• 2000-е: карты, деньги, два ствола
  – Все так же воруем аккаунты
  – Показываем баннеры и рекламу
  – Атакуем «чужие» сайты


                     QAClub #21             6 из 20
Делаем первые шаги




       QAClub #21    7 из 20
Задача
• Внедрить скрипт на сайт:
  <script>alert(‘hello QAClub’)</script>




                      QAClub #21           8 из 20
Способы решения
• Заставить пользователя перейти по ссылке
• Ввести скрипт на в поле ввода
• Прячем скрипт
• Отключение клиентской валидации
• Ломать – не строить, или не валидный
  HTML
• Баги браузеров

                   QAClub #21            9 из 20
Заставить пользователя перейти по
              ссылке
• Вариант 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
Ввести скрипт на в поле ввода
• Простой алгоритм:
  – Находим поле ввода (input)
  – Вводим в него hello <script>alert('hello
    QAClub')</script> QAClub
  – Смотрим что получилось




                        QAClub #21             11 из 20
Прячем скрипт
• Самый простой способ – HTML(URL)
  encode/decode
  – &lt;script&gt;alert(&#39;hello
    QAClub&#39;)&lt;/script&gt;
  – %3cscript%3ealert(%27hello+QAClub%27)%3c%2fscri
    pt%3e
  – См. Предыдущий способ
• Advanced level:
  – Unicode encode
  – etc

                       QAClub #21               12 из 20
Отключение клиентской валидации
• Дебаггер JavaScript в браузере
• Отправка POST/GET запросов мимо
  браузера




                  QAClub #21        13 из 20
Advanced level
• Ломать – не строить, или не валидный
  HTML
• Баги браузеров




                   QAClub #21            14 из 20
Как это было у них?
• Twitter, сентябрь 2011 – неправильная
  обработка атрибутов тега <img>
• Facebook, апрель 2011 – неправильная
  обработка атрибутов тега <a>
• Google – Analytics, support forum, Reader




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




                     QAClub #21         16 из 20
Пару слов о защите
• Не доверять пользовательским данным
• Модули для веб-серверов для фильтрации
  запросов
• IPS/IDS




                  QAClub #21          17 из 20
Что дальше?
• Advanced способы
• Думаем, думаем, думаем
• Автоматизация рутины




                  QAClub #21   18 из 20
Список используемой литаратуры




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




                QAClub #21           19 из 20
Спасибо
E-mail: e0ne@e0ne.info      Skype: e0ne-user
Twitter: @e0ne              Blog: http://blog.e0ne.info/




                         QAClub #21                  19 из 19

More Related Content

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

Решения сообщества для SharePoint
Решения сообщества для SharePointРешения сообщества для SharePoint
Решения сообщества для SharePointVitaly Baum
 
QA Fest 2017. Святослав Логин. Как провести тестирование на безопасность Web ...
QA Fest 2017. Святослав Логин. Как провести тестирование на безопасность Web ...QA Fest 2017. Святослав Логин. Как провести тестирование на безопасность Web ...
QA Fest 2017. Святослав Логин. Как провести тестирование на безопасность Web ...QAFest
 
Иван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизацияИван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизацияYandex
 
Веб-аналитика на практике
Веб-аналитика на практикеВеб-аналитика на практике
Веб-аналитика на практикеRoman.ua
 
State of the Standardized Web
State of the Standardized WebState of the Standardized Web
State of the Standardized WebYandex
 
Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...
Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...
Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...Ontico
 
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаСтруктурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаYandex
 
Правильная семантическая разметка для всех
Правильная семантическая разметка для всехПравильная семантическая разметка для всех
Правильная семантическая разметка для всехYuliya Tikhokhod
 
NoBigData - потоковая система аналитики clientside производительности, Сергей...
NoBigData - потоковая система аналитики clientside производительности, Сергей...NoBigData - потоковая система аналитики clientside производительности, Сергей...
NoBigData - потоковая система аналитики clientside производительности, Сергей...Ontico
 
State of the Standardized Web. YaC 2014
State of theStandardized Web. YaC 2014State of theStandardized Web. YaC 2014
State of the Standardized Web. YaC 2014Yandex
 
Интеграция разработки и продвижения. Как не ошибиться там, где ошибается 95% ...
Интеграция разработки и продвижения. Как не ошибиться там, где ошибается 95% ...Интеграция разработки и продвижения. Как не ошибиться там, где ошибается 95% ...
Интеграция разработки и продвижения. Как не ошибиться там, где ошибается 95% ...borovoystudio
 
Интеграция разработки и продвижения. Как не ошибиться там, где ошибается 95% ...
Интеграция разработки и продвижения. Как не ошибиться там, где ошибается 95% ...Интеграция разработки и продвижения. Как не ошибиться там, где ошибается 95% ...
Интеграция разработки и продвижения. Как не ошибиться там, где ошибается 95% ...borovoystudio
 
Иван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизацияИван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизацияYandex
 
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)Ontico
 
Backendless BaaS. Dinosaurus for Jeeconf 2013
Backendless BaaS. Dinosaurus for Jeeconf 2013Backendless BaaS. Dinosaurus for Jeeconf 2013
Backendless BaaS. Dinosaurus for Jeeconf 2013backendless
 
SEO Продвижение - по принципу Парето
SEO Продвижение - по принципу ПаретоSEO Продвижение - по принципу Парето
SEO Продвижение - по принципу ПаретоСергей Погодаев
 
Передача дополнительных сведений о сайте с помощью семантической разметки
Передача дополнительных сведений о сайте с помощью семантической разметкиПередача дополнительных сведений о сайте с помощью семантической разметки
Передача дополнительных сведений о сайте с помощью семантической разметкиYuliya Tikhokhod
 
Александр Садовский "Хороший веб-поиск для веб-мастеров" на конференции Optim...
Александр Садовский "Хороший веб-поиск для веб-мастеров" на конференции Optim...Александр Садовский "Хороший веб-поиск для веб-мастеров" на конференции Optim...
Александр Садовский "Хороший веб-поиск для веб-мастеров" на конференции Optim...Exiterra Digital Agency 360º
 

Similar to Cross Site Scripting aka XSS: Начало (20)

Решения сообщества для SharePoint
Решения сообщества для SharePointРешения сообщества для SharePoint
Решения сообщества для SharePoint
 
QA Fest 2017. Святослав Логин. Как провести тестирование на безопасность Web ...
QA Fest 2017. Святослав Логин. Как провести тестирование на безопасность Web ...QA Fest 2017. Святослав Логин. Как провести тестирование на безопасность Web ...
QA Fest 2017. Святослав Логин. Как провести тестирование на безопасность Web ...
 
Little Service in 2h
Little Service in 2hLittle Service in 2h
Little Service in 2h
 
Иван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизацияИван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизация
 
Веб-аналитика на практике
Веб-аналитика на практикеВеб-аналитика на практике
Веб-аналитика на практике
 
State of the Standardized Web
State of the Standardized WebState of the Standardized Web
State of the Standardized Web
 
Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...
Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...
Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...
 
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаСтруктурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
 
Правильная семантическая разметка для всех
Правильная семантическая разметка для всехПравильная семантическая разметка для всех
Правильная семантическая разметка для всех
 
NoBigData - потоковая система аналитики clientside производительности, Сергей...
NoBigData - потоковая система аналитики clientside производительности, Сергей...NoBigData - потоковая система аналитики clientside производительности, Сергей...
NoBigData - потоковая система аналитики clientside производительности, Сергей...
 
State of the Standardized Web. YaC 2014
State of theStandardized Web. YaC 2014State of theStandardized Web. YaC 2014
State of the Standardized Web. YaC 2014
 
Интеграция разработки и продвижения. Как не ошибиться там, где ошибается 95% ...
Интеграция разработки и продвижения. Как не ошибиться там, где ошибается 95% ...Интеграция разработки и продвижения. Как не ошибиться там, где ошибается 95% ...
Интеграция разработки и продвижения. Как не ошибиться там, где ошибается 95% ...
 
Интеграция разработки и продвижения. Как не ошибиться там, где ошибается 95% ...
Интеграция разработки и продвижения. Как не ошибиться там, где ошибается 95% ...Интеграция разработки и продвижения. Как не ошибиться там, где ошибается 95% ...
Интеграция разработки и продвижения. Как не ошибиться там, где ошибается 95% ...
 
Иван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизацияИван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизация
 
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
 
Backendless BaaS. Dinosaurus for Jeeconf 2013
Backendless BaaS. Dinosaurus for Jeeconf 2013Backendless BaaS. Dinosaurus for Jeeconf 2013
Backendless BaaS. Dinosaurus for Jeeconf 2013
 
SEO Продвижение - по принципу Парето
SEO Продвижение - по принципу ПаретоSEO Продвижение - по принципу Парето
SEO Продвижение - по принципу Парето
 
Передача дополнительных сведений о сайте с помощью семантической разметки
Передача дополнительных сведений о сайте с помощью семантической разметкиПередача дополнительных сведений о сайте с помощью семантической разметки
Передача дополнительных сведений о сайте с помощью семантической разметки
 
Александр Садовский "Хороший веб-поиск для веб-мастеров" на конференции Optim...
Александр Садовский "Хороший веб-поиск для веб-мастеров" на конференции Optim...Александр Садовский "Хороший веб-поиск для веб-мастеров" на конференции Optim...
Александр Садовский "Хороший веб-поиск для веб-мастеров" на конференции Optim...
 
MS TFS 2010 - Обзор и архитектура
MS TFS 2010 - Обзор и архитектураMS TFS 2010 - Обзор и архитектура
MS TFS 2010 - Обзор и архитектура
 

More from Ivan Kolodyazhny

Continuous Integration для QA
Continuous Integration для QAContinuous Integration для QA
Continuous Integration для QAIvan Kolodyazhny
 
Логирование в Python: то, о чем не пишут в документации
Логирование в Python: то, о чем не пишут в документацииЛогирование в Python: то, о чем не пишут в документации
Логирование в Python: то, о чем не пишут в документацииIvan Kolodyazhny
 
Private Clouds and OpenStack: WFT?
Private Clouds and OpenStack: WFT?Private Clouds and OpenStack: WFT?
Private Clouds and OpenStack: WFT?Ivan Kolodyazhny
 
Django: инструкция по применению
Django: инструкция по применениюDjango: инструкция по применению
Django: инструкция по применениюIvan Kolodyazhny
 

More from Ivan Kolodyazhny (6)

Python dependencies
Python dependenciesPython dependencies
Python dependencies
 
Continuous Integration для QA
Continuous Integration для QAContinuous Integration для QA
Continuous Integration для QA
 
Логирование в Python: то, о чем не пишут в документации
Логирование в Python: то, о чем не пишут в документацииЛогирование в Python: то, о чем не пишут в документации
Логирование в Python: то, о чем не пишут в документации
 
Private Clouds and OpenStack: WFT?
Private Clouds and OpenStack: WFT?Private Clouds and OpenStack: WFT?
Private Clouds and OpenStack: WFT?
 
DneprPy #0: Openstack
DneprPy #0: OpenstackDneprPy #0: Openstack
DneprPy #0: Openstack
 
Django: инструкция по применению
Django: инструкция по применениюDjango: инструкция по применению
Django: инструкция по применению
 

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

  • 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
  • 7. Делаем первые шаги QAClub #21 7 из 20
  • 8. Задача • Внедрить скрипт на сайт: <script>alert(‘hello QAClub’)</script> QAClub #21 8 из 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 – &lt;script&gt;alert(&#39;hello QAClub&#39;)&lt;/script&gt; – %3cscript%3ealert(%27hello+QAClub%27)%3c%2fscri pt%3e – См. Предыдущий способ • Advanced level: – Unicode encode – etc QAClub #21 12 из 20
  • 13. Отключение клиентской валидации • Дебаггер JavaScript в браузере • Отправка POST/GET запросов мимо браузера QAClub #21 13 из 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
  • 19. Список используемой литаратуры http://blog.e0ne.info/?tag=/xss QAClub #21 19 из 20
  • 20. Спасибо E-mail: e0ne@e0ne.info Skype: e0ne-user Twitter: @e0ne Blog: http://blog.e0ne.info/ QAClub #21 19 из 19

Editor's Notes

  1. Test notes
  2. http://www.opinionatedgeek.com/dotnet/tools/htmlencode/encode.aspxhttp://www.opinionatedgeek.com/dotnet/tools/urlencode/Encode.aspx
  3. Twitter – вставка скриптов, Facebook – вставка скриптов, iframe,google
  4. intrusion detection systemIntrusion detection and prevention systems
  5. «всем спасибо, все свободны» (с) 