xss-game

Недавно в Интернете наткнулся на довольно клёвую игрушку от google — https://xss-game.appspot.com/ Это браузерная игра, состоящая из 6 уровней, служит для обучения любых желающих XSS атакам. Гугл за репорт о таких уязвимостях платит царские гроши в размере 7500 долляров.

Я, как любой увлеченный QA, просто не мог пройти мимо такой игры. И быстро прошел ее полностью. Вот небольшой гайд по прохождению с пояснениями:


Level 1: Hello, world of XSS.

Первый уровень, он легкий самый. Для начала введем просто поисковое слово, например, ‘test’ и посмотрим, что будет. Ничегонеобычного: “Sorry, no results were found for test. Try again.” А что если попробовать ввести ‘test’ в тэге, скажем, <h1>test</h1>? Что тогда? Пробуем… И вуаля, ‘test’ теперь заголовок. Следовательно, нет проверки и обрезки специальных символов, и мы можем сделать простенькую инъекцию: <script>alert(‘EvilXss’)</script>.

Что это дает? Если мы скинем юзеру, у которого мы хотим выполнить вредоносный код, ссылку вида: https://xss-game.appspot.com/level1/frame?query=<script>alert(‘EvilXss’)</script>, то у него выскочит алерт, что не сильно страшно. Но ведь вместо <script>alert(‘EvilXss’)</script> там может быть что-нибудь про document.cookie…


Level 2: Persistence is key

На втором уровне нас ожидает небольшой форумчик, где можно оставлять комменты. Давайте попробуем сразу с <h1>test</h1>. Прокатило! Неужели тут опять нам поможет <script>alert(‘EvilXss’)</script>? Не прокатило! Что-то экранирует наш тэг <script>. Но! Мы помним, что JS может быть вызван каким-нибудь элементом при разного рода событиях. Таки как: onclick, onload, onerror. Можно попробовать встроить JS вместе с каким-либо элементом и вызвать его при событии с ним. Попробуем, скажем, так: <button type=»button» onclick=»alert(‘Evil XSS’)»>Click Me!</button>. Вуаля! У нас в сообщении появилась кнопка ClickMe! Кликаем и переходим на следующий уровень.


Level 3: Thatsinkingfeeling…

3-й уровень предлагает нам посмотреть на фочки облачного дата-центра… Наверное, годов 60-х =). Покликав по закладкам с картинками, нужно обратить внимание, что в  адресной строке браузера меняется номер картинки (“https://xss-game.appspot.com/level3/frame#3”). А что если попробовать туда вместо числа написать “test”?  Видим надпись о JS ошибке “ImageNaN” и незагруженную картинку. Уже интересно! Теперь лезем в код страницы и смотрим картинку:

<img src=»/static/level3/cloudtest.jpg»> , наше слово “test” было добавлено в src картинки. А если пробовать закрыть тэг, добавив спец. символы? Попробуем так: “test’ />” – символом ‘ я закрываю значение атрибута src, /> — закрываем тэг. И вуаля, на странице кроме поломанной картинки, мы еще видим “.jpg’ />”. А это значит, что пора атаковать! В конец урла просто добавим: <script>alert(‘xss’);</script> (должно получиться как-то так: https://xss-game.appspot.com/level3/frame#test’/><script>alert(‘xss’);</script>)


На этом первая часть прохождения окончена. Но в следующей статье я расскажу о последних и самых интересных 3-х уровнях.

Вторая часть прохождения

 

 

 

 

Опубликовать в Google Plus
Опубликовать в LiveJournal
Опубликовать в Мой Мир
Опубликовать в Одноклассники
Опубликовать в Яндекс