Голосование
Какую CMS Вы предпочитаете
AtomX
Fapos CMS
Drunya CMS
Топ новостей
- Генератор аватарок в стиле пиксель-арт
- Скачать Fapos CMS 1.1.8 Бесплатно
- Цунами в Японии. Последствия.
- Предварительная инфа о FAPOS 1.1.9. Часть 2
- Описание версии CMS Fapos 0.9.9
- Новая версия Fapos 1.3
- Половина россиян не смогла отличить легальный контент
- Что есть Fapos CMS
- Убийца Apache у вас на пороге
- Открытое тестирование Fapos 0.9.9
Последние комментарии
Топ пользователей
Сайты на AtomX CMS
Собственно, если кто не в курсе, XSS - это межсайтовый скриптинг (Cross Site Scripting), но так как аббревиатура "CSS" уже занята, данный вид уязвимостей был окрещен XSS. Но так как я сейчас рассказал расказывают везде, а хотелось бы преподнести все еще проще и понятней, да так что бы человек далекий от премудростей сайтостроения и программирования понял, что же это такое и нахрен о нем вообще писать. Ну что же, какой тяжелой бы не оказалась ноша, которую я на себя взвалил, я постараюсь донести ее до конца с гордым лицом....и легкой ухмылкой
Теория в примерах
По сути XSS - это запуск некоего скрипта на целевом сайте. Этот скрипт обычно находится на другом сервере и о том что его можно запутить хозяин целевого сайта не подозревает, но иногда этого и не приходиться делать, так как можно просто отправить некий код во входящих данных и он будет выполнен. Рассмотрим примеры с BB кодами.
Некоторое время назад, в одном из всемирно известных движках была обнаружена XSS в BB коде, который делал следующее: он заменял
на
и при этом, пропускались не только валидные ссылки, а почти любые данные. Например, вместо "http://host/image.jpg" могло быть "ya krevedko". И это, господа XSS, познакомьтесь. Как? Я покажу:
Представьте что будет, если я вставлю в BB код не ссылку на картинку, а скажем вот такой код
после преобразования он будет выглядеть как
как видите, я закрыл тег IMG и добавил свой (SCRIPT), который в данной ситуации будет вполне работоспособен. При загрузке такой страници появиться сообщение "XSS", но с такой же простотой я мог получить и cookie посетителя и авторизоваться под его данными. В этом примере разработчики допустили 2 ошибки: во-первых, надо проверять валидность ссылки и не пропускать опасные символы. Во-вторых надо заключать значение атрибута SRC в теге IMG в кавычки. Правильный BB код не сработал бы в моем примере и злоумышленник нюхал шляпу. А если бы я написал валидный урл к картинке то после обработки он выглядел бы вот так:
видите кавычки? Вот так и надо Вообще то XSS делятся на два вида: активные и пасивные. Пасивные - это когда для работы вашего скрипта(злонамеренного кода) необходимо чтобы юзер перешел по некой ссылке. Активные же - гораздо интересней, тут вы один раз что-то сделали, например запостили сообщение на форум и теперь все кто заходят на страницу с ним подвергаются атаке. Так как вчехливший что такое пасивная XSS, автоматом поймет что такое активная XSS, я расскажу о пасивных.
Наверное все знают форумный движок Vbuletin, так вот в недавней версии 3.1 была интересная XSS, правда их там было штук 20, но мы оставновимся на одной. Сделаю ремарку: я пишу все из памяти, так что на работоспособность в реальных условиях примеры не претендуют, но смысл и суть остаются понятными. Так вот на форуме был поиск и поисковый запрос из формы передавался GETом, то есть через URL. и на странице с выдачей ваш запрос подставлялся в текстовое поле, для того что бы вы помнили что искали или могли исправить(неважно зачем это было - главное что было). Так вот, если бы я искал "Вася", меня кинуло бы на страницу с выдачей и там было бы текстовое поле, с уже введенным "Вася".
а URL страницы выглядел бы примерно так http://host/script?q=Вася
А теперь представьте что происходило, если кто-то переходил по ссылке типа
он бы попадал на страницу выдачи с текстовым полем, которое выглядело бы примерно так
Круто? Я тоже так думаю
Но это цветочки, мы же постараемся проникнуть в проблему глубже и избавиться от XSS раз и навсегда.
КОНТРМЕРЫ
Есть один, до безумия простой способ, который очень редко нельзя применить по тем или инным причинам, так что советую им пользоваться. Заключается он в том, что перед каким либо преобразованием(вообще, прежде всего), прогонять все данные через функцию htmlspecialchars(). Таким образом, даже если код злоумышленника встанет как он планировал, он не будет ничего выполнять и даже более того - все увидят что он хотел сделать и будет повод закидать его камнями и разорвать жопу на немецкий крест. Например в DrunyaCMS, BB коды далеки от совершенства, но даже обойдя их XSS вам будет сложно пропихнуть(у меня например не вышло). Жду ваших мыслей на это счет.
Теория в примерах
По сути XSS - это запуск некоего скрипта на целевом сайте. Этот скрипт обычно находится на другом сервере и о том что его можно запутить хозяин целевого сайта не подозревает, но иногда этого и не приходиться делать, так как можно просто отправить некий код во входящих данных и он будет выполнен. Рассмотрим примеры с BB кодами.
Некоторое время назад, в одном из всемирно известных движках была обнаружена XSS в BB коде, который делал следующее: он заменял
1
[img*]http://host/image.jpg[/img]
на
1
<img src=http://host/image.jpg />
и при этом, пропускались не только валидные ссылки, а почти любые данные. Например, вместо "http://host/image.jpg" могло быть "ya krevedko". И это, господа XSS, познакомьтесь. Как? Я покажу:
Представьте что будет, если я вставлю в BB код не ссылку на картинку, а скажем вот такой код
1
http://host/image.jpg /><script>alert('XSS')</script>
после преобразования он будет выглядеть как
1
<img src=http://host/image.jpg /><script>alert('XSS')</script> />
как видите, я закрыл тег IMG и добавил свой (SCRIPT), который в данной ситуации будет вполне работоспособен. При загрузке такой страници появиться сообщение "XSS", но с такой же простотой я мог получить и cookie посетителя и авторизоваться под его данными. В этом примере разработчики допустили 2 ошибки: во-первых, надо проверять валидность ссылки и не пропускать опасные символы. Во-вторых надо заключать значение атрибута SRC в теге IMG в кавычки. Правильный BB код не сработал бы в моем примере и злоумышленник нюхал шляпу. А если бы я написал валидный урл к картинке то после обработки он выглядел бы вот так:
1
<img src="http://host/image.jpg" />
видите кавычки? Вот так и надо Вообще то XSS делятся на два вида: активные и пасивные. Пасивные - это когда для работы вашего скрипта(злонамеренного кода) необходимо чтобы юзер перешел по некой ссылке. Активные же - гораздо интересней, тут вы один раз что-то сделали, например запостили сообщение на форум и теперь все кто заходят на страницу с ним подвергаются атаке. Так как вчехливший что такое пасивная XSS, автоматом поймет что такое активная XSS, я расскажу о пасивных.
Наверное все знают форумный движок Vbuletin, так вот в недавней версии 3.1 была интересная XSS, правда их там было штук 20, но мы оставновимся на одной. Сделаю ремарку: я пишу все из памяти, так что на работоспособность в реальных условиях примеры не претендуют, но смысл и суть остаются понятными. Так вот на форуме был поиск и поисковый запрос из формы передавался GETом, то есть через URL. и на странице с выдачей ваш запрос подставлялся в текстовое поле, для того что бы вы помнили что искали или могли исправить(неважно зачем это было - главное что было). Так вот, если бы я искал "Вася", меня кинуло бы на страницу с выдачей и там было бы текстовое поле, с уже введенным "Вася".
1
<input type="text" name="search" value="Вася" />
А теперь представьте что происходило, если кто-то переходил по ссылке типа
Code:
http://host/script?q="><script>alert('XSS')</script>
1
<input type="text" name="search" value=""><script>alert('XSS')</script>" />
Но это цветочки, мы же постараемся проникнуть в проблему глубже и избавиться от XSS раз и навсегда.
КОНТРМЕРЫ
Есть один, до безумия простой способ, который очень редко нельзя применить по тем или инным причинам, так что советую им пользоваться. Заключается он в том, что перед каким либо преобразованием(вообще, прежде всего), прогонять все данные через функцию htmlspecialchars(). Таким образом, даже если код злоумышленника встанет как он планировал, он не будет ничего выполнять и даже более того - все увидят что он хотел сделать и будет повод закидать его камнями и разорвать жопу на немецкий крест. Например в DrunyaCMS, BB коды далеки от совершенства, но даже обойдя их XSS вам будет сложно пропихнуть(у меня например не вышло). Жду ваших мыслей на это счет.
Сейчас online: 29. Зарегистрированных: 1. Гостей: 28.
AtomX 2.8 Beta - Новая версия бесплатной CMS
AtomX 2.8 Beta - Новая версия бесплатной CMS
Программирование - что может быть проще.
Программирование - что может быть проще.
AtomX 2.8 Beta - Новая версия бесплатной CMS
AtomX 2.8 Beta - Новая версия бесплатной CMS
Написание простого вируса в блокноте
Что такое API и для чего они нужны
Классы в PHP для чайников
Написание простого вируса в блокноте