T
to_0day
Добрый день, дорогие форумчане. Достаточно долго я не выпускал статьи. Эту я решил написать основываясь на личный опыт и полученную информацию. Здесь я подробно опишу вам известную уязвимость как XSS. По другому межсайтовый скриптинг. Приступим к изучению.
Введение
Данная уязвимость достаточно известна. Но по ней есть много слухов. Кто-то говорит, что она бывает активная и пассивная. Другие же утверждают о наличие других видах данной уязвимости. И я решил решить данную проблему. Будем изучать все постепенно. Это не очередной копипаст, так как однажды я решил вспомнить информацию и заглянул в интернет после чего это не окончилось успехом и нужных данных просто напросто нету. Здесь мы рассмотрим как найти XSS уязвимость и какие они бывают. Давайте перейдем к практике.
Простые знания
И так. Давайте начнем с простого. Что такое XSS?
Межсайтовый скриптинг (XSS) - тип атаки на сайты. Его суть внедрить на сайт вредоносный javascript код. Он же в свою очередь будет выполнять определенное действие при посещении сайта. Это может быть как обычная загрузка так и кража cookies из браузера жертвы. Все зависит от загруженного кода.
Теперь перейдем к простым командам. Для начало, чтобы вам не скучать мы пройдем по ходу дела XSS игру. В которой кратко описаны атаки. Переходим
Это самая простая команда для выявления нашей дыры. Вводим ее сразу в поисковик и кликаем Search.
И получаем наши результаты:
Это самые простые действия при поиске данной уязвимости. То есть данный код вы можете вводить совершенно в любом месте на сайте. Будь это URL или же поисковик по сайту. Идем к более сложному уровню.
onLoad-событие
Здесь уже на 2 уровне нужно поразмышлять. Мы находимся в обычной переписке и наша задача как всегда вызвать окошко alert(). Для этого воспроизведем событие onLoad. Но для этого определимся, что это такое.
Событие OnLoad - выступает в роли указателя и говорит нам, что веб-сраница полностью загружена со всеми картинками, скриптами и внешними файлами.
Давайте попробуем используя данное события заменить картинку на нашу команду. Для этого в поля ввода (не URL) пишем:
Объясняю, что мы делаем. У нас после src идет ссылка, которая указывает на загружаемое изображения на сайт. Но вместе с ним, выполняется js код благодаря команде onload. И в итоге получается так:
Надеюсь я понятно объяснил всю суть данной ситуации. И поэтому мы идем дальше. Ведь чем дальше, тем интереснее становится)
Переключение окон
Здесь уже задача довольно нестандартная. Как мы видим у нас имеются три окна с изображениями. Поле ввода только URL. Нам нужно найти location.hash. Данная вещь отвечает за часть пути к картинке отображаемой в окне. Все это ведет к тому, что при вводе нам нужно закрыть img отвечающий за картинку. И после вводить нашу команду. Выходит все так:
Все достаточно очевидно. Теперь после получения наших результатов идем к следующему уровню.
Вызов метода
Вот на этом моменте все необычно. Как вы могли заметить везде мы применяем тег <script/> и после вводим наш любимый alert(). Но на этом моменте мы должны ввести наш код именно в момент вызова метода. Делаем это через переменную timer, которая находится в самом js коде:
И теперь мы подставили наш код не как значения а как часть самой страницы, что дало его успешный запуск.
Все готово, а перед нами остается еще парочку шагов до долгожданного завершения.
Вспомним старое
И так, перед нами представляется поисковая форма. Все аналогично первому уровню. Здесь мы попробуем использовать достаточно нестандартный метод. На другие ресурсы нам выйти не дадут, но мы спокойно можем погулять по самой странице. Давайте попробуем сделать редирект. Для тех кто не знает объясню:
Редирект - прежде всего процесс, при котором пользователе определенного сайта автоматически перенаправляются на другое место в сети. Он настраивается как для отдельного сайта, так и для всех сразу.
Звучит сложно и слишком остроумно, но на деле это небольшая часть кода, которая вставляется в регистрационное поле. А выглядит это так:
Очевидно и легко. Чтобы ваша уязвимость показала себя остается кликнуть на кнопку Next >> и насладиться результатом работы.
Внешнее подключение
И мы оказались на самом последнем этапе нашей работы. Для выявления нашей атаки мы воспользуемся внешней JavaScript библиотекой. В ней же как раз и будет происходить вызов команды alert. Безопасность увеличена и у нас не выйдет подсунуть код через протоколы http/https так как они в свою очередь проверяются сайтом. Но есть один минус. Нам не обязательно указывать это так как он подставляется автоматически на нашем сайте. И теперь самая суть, так как те кто воспользовался подсказкой увидели наверное ссылку типа google.com/jsapi?callback=foo. Там лежит JavaScript файл в конце которого есть foo(). Это дает нам большой рывок и говорит, что наша ссылка должна выглядеть примерно так:
Ну и результаты конечно же одни и те же.
Вот мы и закончили наш замечательный квест. Он не простой. Но все же затрагивает и показывает то, как можно найти уязвимость XSS. Это не конец, так как я хочу объяснить какие типы атаки мы использовали в данной игре. А именно:
1. Reflective XSS - данный вид атаки выполняется в одном запросе и ответе. На сайте не сохраняет никакие данные (встречалось в игре).
2. Stored XSS - сохраняется на сайте и проводится на нормальных сайтах пользователей. Данная уязвимость представляет наибольшую угрозу сайту (не встречалось).
3. Self XSS - от нее защищаются в последнюю очередь так как она используется с помощью навыков СИ и зависит от того перейдет ли жертва на сайт или нет (используется в beef-xss в игре не было).
И так, это все, что я хотел вам предоставить. Идем к итогам и выводам.
Выводы/Итоги
В этой статье мы познакомились с такой уязвимостью как XSS. Она может представлять угрозу сайту и довольно большую. Чтобы ее найти на сайте прежде всего нужно тестировать абсолютно все. Данные дыры могут быть в любом виде и форме. Будьте готовы к этому. Так же появляется она в неожиданных значениях и это тоже важно так как вы можете их упустить. Ну а в основном удачи
Введение
Данная уязвимость достаточно известна. Но по ней есть много слухов. Кто-то говорит, что она бывает активная и пассивная. Другие же утверждают о наличие других видах данной уязвимости. И я решил решить данную проблему. Будем изучать все постепенно. Это не очередной копипаст, так как однажды я решил вспомнить информацию и заглянул в интернет после чего это не окончилось успехом и нужных данных просто напросто нету. Здесь мы рассмотрим как найти XSS уязвимость и какие они бывают. Давайте перейдем к практике.
Простые знания
И так. Давайте начнем с простого. Что такое XSS?
Межсайтовый скриптинг (XSS) - тип атаки на сайты. Его суть внедрить на сайт вредоносный javascript код. Он же в свою очередь будет выполнять определенное действие при посещении сайта. Это может быть как обычная загрузка так и кража cookies из браузера жертвы. Все зависит от загруженного кода.
Теперь перейдем к простым командам. Для начало, чтобы вам не скучать мы пройдем по ходу дела XSS игру. В которой кратко описаны атаки. Переходим
Ссылка скрыта от гостей
. И так, основная задача данной игры вывести на экран безобидное окошко с заданным текстом. Начнем с самых простых команд. У нас есть сайт и чтобы проверить его на наличия уязвимости мы попытаемся выполнить данный код:<script>alert('XSS');</script>
Это самая простая команда для выявления нашей дыры. Вводим ее сразу в поисковик и кликаем Search.
И получаем наши результаты:
Это самые простые действия при поиске данной уязвимости. То есть данный код вы можете вводить совершенно в любом месте на сайте. Будь это URL или же поисковик по сайту. Идем к более сложному уровню.
onLoad-событие
Здесь уже на 2 уровне нужно поразмышлять. Мы находимся в обычной переписке и наша задача как всегда вызвать окошко alert(). Для этого воспроизведем событие onLoad. Но для этого определимся, что это такое.
Событие OnLoad - выступает в роли указателя и говорит нам, что веб-сраница полностью загружена со всеми картинками, скриптами и внешними файлами.
Давайте попробуем используя данное события заменить картинку на нашу команду. Для этого в поля ввода (не URL) пишем:
<img src="http://pouchdb.com/static/img/mark.svg" onload="javascript:alert('XSS');">
Объясняю, что мы делаем. У нас после src идет ссылка, которая указывает на загружаемое изображения на сайт. Но вместе с ним, выполняется js код благодаря команде onload. И в итоге получается так:
Надеюсь я понятно объяснил всю суть данной ситуации. И поэтому мы идем дальше. Ведь чем дальше, тем интереснее становится)
Переключение окон
Здесь уже задача довольно нестандартная. Как мы видим у нас имеются три окна с изображениями. Поле ввода только URL. Нам нужно найти location.hash. Данная вещь отвечает за часть пути к картинке отображаемой в окне. Все это ведет к тому, что при вводе нам нужно закрыть img отвечающий за картинку. И после вводить нашу команду. Выходит все так:
https://xss-game.appspot.com/level3/frame#3'"><script>alert('XSS');</script><"'
Все достаточно очевидно. Теперь после получения наших результатов идем к следующему уровню.
Вызов метода
Вот на этом моменте все необычно. Как вы могли заметить везде мы применяем тег <script/> и после вводим наш любимый alert(). Но на этом моменте мы должны ввести наш код именно в момент вызова метода. Делаем это через переменную timer, которая находится в самом js коде:
https://xss-game.appspot.com/level4/frame?timer='),alert('XSS
И теперь мы подставили наш код не как значения а как часть самой страницы, что дало его успешный запуск.
Все готово, а перед нами остается еще парочку шагов до долгожданного завершения.
Вспомним старое
И так, перед нами представляется поисковая форма. Все аналогично первому уровню. Здесь мы попробуем использовать достаточно нестандартный метод. На другие ресурсы нам выйти не дадут, но мы спокойно можем погулять по самой странице. Давайте попробуем сделать редирект. Для тех кто не знает объясню:
Редирект - прежде всего процесс, при котором пользователе определенного сайта автоматически перенаправляются на другое место в сети. Он настраивается как для отдельного сайта, так и для всех сразу.
Звучит сложно и слишком остроумно, но на деле это небольшая часть кода, которая вставляется в регистрационное поле. А выглядит это так:
https://xss-game.appspot.com/level5/frame/signup?next=javascript:alert('XSS')
Очевидно и легко. Чтобы ваша уязвимость показала себя остается кликнуть на кнопку Next >> и насладиться результатом работы.
Внешнее подключение
И мы оказались на самом последнем этапе нашей работы. Для выявления нашей атаки мы воспользуемся внешней JavaScript библиотекой. В ней же как раз и будет происходить вызов команды alert. Безопасность увеличена и у нас не выйдет подсунуть код через протоколы http/https так как они в свою очередь проверяются сайтом. Но есть один минус. Нам не обязательно указывать это так как он подставляется автоматически на нашем сайте. И теперь самая суть, так как те кто воспользовался подсказкой увидели наверное ссылку типа google.com/jsapi?callback=foo. Там лежит JavaScript файл в конце которого есть foo(). Это дает нам большой рывок и говорит, что наша ссылка должна выглядеть примерно так:
//google.com/jsapi?callback=alert
Ну и результаты конечно же одни и те же.
Вот мы и закончили наш замечательный квест. Он не простой. Но все же затрагивает и показывает то, как можно найти уязвимость XSS. Это не конец, так как я хочу объяснить какие типы атаки мы использовали в данной игре. А именно:
1. Reflective XSS - данный вид атаки выполняется в одном запросе и ответе. На сайте не сохраняет никакие данные (встречалось в игре).
2. Stored XSS - сохраняется на сайте и проводится на нормальных сайтах пользователей. Данная уязвимость представляет наибольшую угрозу сайту (не встречалось).
3. Self XSS - от нее защищаются в последнюю очередь так как она используется с помощью навыков СИ и зависит от того перейдет ли жертва на сайт или нет (используется в beef-xss в игре не было).
И так, это все, что я хотел вам предоставить. Идем к итогам и выводам.
Выводы/Итоги
В этой статье мы познакомились с такой уязвимостью как XSS. Она может представлять угрозу сайту и довольно большую. Чтобы ее найти на сайте прежде всего нужно тестировать абсолютно все. Данные дыры могут быть в любом виде и форме. Будьте готовы к этому. Так же появляется она в неожиданных значениях и это тоже важно так как вы можете их упустить. Ну а в основном удачи