************************************************* Убираем "звонилки" из Invision Power Board v2.1.5 ************************************************* Автор: Terabyte (http://www.xss.ru) ********** Вступление ********** В этой статье я хочу рассказать об одно из этапов нуления движков, а именно удаление "звонилок". Звонилка это та часть движка, которая сообщает их автору адрес сайта, где установлен его движек. Авторы скриптов это делают для того, чтобы выявлять незаконное использование их платных движков. "Звонилка" может из себя представлять отдельную функцию, которая обращается на сайт автора движка к определенному скрипту, который записывает адрес вашего сайта или загрузки картинок (или обычных страничек в iframe). Некоторые может спросят, как автор определит адрес вашего сайта, если его скрипт загрузил картинку с его сайта? Очень просто, через referrer! В качестве исследуемого движка мы взяли Invision Power Board v2.1.x (но данное руководство должно помочь вам, находить "звонилки" не только в IPB других версий, но и в совершенное других движках). Сразу хочу сделать оговорку, что мы ищем "звонилки" методом - "в лоб", т.е. вся наша работа будет сводиться к поиску файлов, в которых имеется упоминание об офсайте движка. Некоторые авторы могут скрывать подобные вещи шифрованием домена офсайта (например, примитивным base64). Теперь хочу сказать пару слов о самом движке IPB. С версии 2.0 он стал платным и бесплатно с офсайта можно слить лишь зазенденные (Zend) файлы с ограничениями на использование. Для нашей работы нам понадобятся уже открытые (не зашифрованные) сорцы. Откуда вы их возьмете? Можете купить законно; попросить у друга, который купил себе этот двиг; скардить; украсть с хоста, где установлена лицензионная версия и т.п. Лично я использовал для нуления свой лицензионный двиг, купленный законно. Зачем спросите вы? Все очень просто, в лицензии говорится, что двиг нельзя использовать на нескольких доменах одновременно, в то время как в админке (офсайта) с версии 2.1 можно сгенерить сколько угодно лицензий для разных доменов. Ну и вот, чтобы использовать лицензионную версию (например, с анлимным сроком) на нескольких доменах, юзать оперативный выход апдейтов и мучить тех. поддержку, мы можем просто удалить "звонилки" из движка. ******** Поехали! ******** Для работы нам понадобится программа Text Replacer (http://www.web-hack.ru/download/download.php?go=56). Вообще-то для этого вам подойдет любая программа этого класса (Replacer), но мне нравится именно эта TR (с радостью приму ваши предложения по другим альтернативам). Далее устанавливаем на локалхосте движек и натравливаем на него TR. Первым делом задаем для поиска маску: "www.invision". Как в последствии стало известно из изучения сорцов, в открытом виде IPB хранит следующее домены, которые мы должны будем вырезать: invisionpower.com invisionboard.com invisiongallery.com (не обязателен для удаления, но желательно. Имеется только в gallery.php) Честно говоря, мы можем сразу сделать замену этих доменов например, на www.xss.ru и заливать двиг на хост, но если вы хотите разобрать что и как работает + сделать более лучшую зачистку, то читайте дальше. Первым делом надо удалить эти домены из PHP-комментариев, которые находятся почти в каждом файле и мешают нам лучше ориентироваться в сорцах. Делаем замену каждой из следующих строк на "|": | Licence Info: http://www.invisionboard.com/?license | Licence Info: http://www.invisionpower.com | http://www.invisionboard.com/?license | Web: http://www.invisionboard.com | Web: http://www.invisionpower.com | http://www.invisionpower.com/dynamic/ | http://www.invisionpower.com | Web: http://www.invisiongallery.com Заменяем на "//": // http://www.invisionpower.com // http://www.invisionboard.com Заменяем на "" (пусто): @invisionpower.com @invisionboard.com @invisiongallery.com Далее можем заменить домен invisionboard.com во всех файлах ошибки 403 (index.html) например, на xss.ru: <a href="http://www.invisionboard.com/">Invision Power Board</a> на <a href="http://www.xss.ru">www.xss.ru</a> Теперь задаем для поиска каждый домен, открываем все найденне файлы в текстовом редакторе и далее уже в нем делаем поиск по файлу с данным доменом. В зависимости от того, какое функциональное значение имеет кусок кода мы делаем соответствующие действия: *) удаляем функцию вызова "звонилки" *) немного исправляем адрес офдомена. Например, в копирайтах, т.к. если у вас лицензионный двиг, то копирайты лучше не менять, а просто изменить в них домен www.invisionpower.com например, на www..invisionpower..com =) *) заменяем домен, на любой другой (желательно ваш) Начнем с домена invisionpower.com, в поиске нашло 11 файлов. Первым делом советую открыть cp_skin_index.php и найти в нем следующие функции: function update_img function acp_licensed function acp_unlicensed function acp_ips_news В них найти конструкцию вида: $IPBHTML .= <<<EOF [HTML-код] EOF; И вырезать [HTML-код]. Копирайты для домена invisionpower.com (в которых мы просто модифицируем адрес) находятся в: skin_printpage.php lofiversion/index.php ($copyright) cp_skin_global.php (можно удалить копирайт) sources/classes/class_display.php ($copyright) <- основной копирайт ipb_templates.xml Копирайты для домена invisionboard.com: cp_skin_global.php sources/classes/class_display.php ($copyright) <- основной копирайт ipb_templates.xml Остальные же "звонилки", такие как: $this->ipsclass->admin->show_inframe("http://www.invisiongallery.com/?why"); можем заменить на: $this->ipsclass->admin->show_inframe("http://www.xss.ru"); или: $response = trim( @implode ('', @file( "http://www.invisionpower.com/customer/ipb/copy/?k=".urlencode($acc_number) ) ) );на: $response = trim( @implode ('', @file( "http://www.xss.ru" ) ) ); После окончания всех работ вы можете сделать контрольный поиск по маске "www.invision" и удалить остатки кода, которые вы пропустили. Так же хочется упомянуть, что в отлавливании "звонилок" очень хорошо помогает фаерволл. ********** Заключение ********** Я надеюсь эта статья вам помогла не только убрать "звонилки" из IPB, но и дала начальные знания для нуления других движков. =====[ Terabyte | http://www.web-hack.ru | 2006.04.01 ]=====
Стучалки бывают разные и разные их способы. Самые примитивные - долбятся во время установки. Продвинутые - долбятся когда, например, вы делаете бэкап БД средствами скрипта или когда количество тем на Форуме достигает 100. Пути по которым "долбится" стучалка маскируются. И от версии к версии вид стучалок меняется. Либо никаких стучалок делать не надо, а надо, например, просто давать оригинальные названия изображениям, скриптам и т.п. Поэтому в идеале - надо весь код просматривать глазами! ... А самый простой и доступный всем инструмент "вырезальщика стучалок", подходящий для большинства скриптов: - Денвер - файловый менеджер Total Commander - текстовый редактор (тот же Bred3) - Navuns (перехват пакетов) - Teleport И общий принцип: запускаем Navuns и проходимся Телепортом. Смотрим откуда и куда пытались вылезти. ... А про методы и способы их обхода - это надо большую статью писать. Опять же - есть методы для стучалок, которые можно найти только очень внимательным просмотром кода, либо которые вообще не вырезаются...