Pull to refresh

Comments 63

Вряд ли это можно назвать новым поколением, написать регулярку, учитывающую наличие в строке print|echo && template|tpl|tmpl|output|etc, напистаь нетрудно.
Но куда более неприятные вещи они творят сегодня. Мне недавно пришлось грепать все файлы на одном аккаунте на наличие base64, удалять оттуда замысловатые шеллы, зашифрованные всем известными алгоритмами сокрытия и паковки кода на javascript. Также на страницах встречались строки типа "
UFO just landed and posted this here
а как вы их тогда на хостинг зальете если там хозяин рут ?:) вы тогда их сами заменить не сможете
UFO just landed and posted this here
это если у вас собственный сервер — да согласен там есть sudo
а если у вас хостинг, на которые рассчитывают те кто занимается вот таким вот встраиванием — что тогда?
UFO just landed and posted this here
UFO just landed and posted this here
Вы понимаете что это брееееееед?! Какой sudo?! Какой левый юзер под SCP(SFTP)?! НА ХОСТИНГЕ?!

Я много работаю с чужими сайтами, с чужими хостинговыми площадкими. Обычная схема:
«Дима, есть сайт, надо на нём обновить форму заказов — 1 час работы, клиент уже заплатил надо быстро сделать». Сколько мне надо времени на это, меня никто не спросил, просто поставили перед фактом.

Хостинг ВРАЖЕСКИЙ, есть только ftp. Cpanel если и существует (бинго! да, есть в природе shared-хостинг вообще без cp), то что это такое клиент не догадывается. Суппорт в Анголе, спит ещё (или в носу ковыряет), писать им письма — дело безполезное, звонить — денег не наберешься, да и не всегда из-за языкового барьера можно понять друг-друга.

Захожу на ftp, смотрю — приплыли. Куча php-лапши, ничего не понятно, сайт работает под error_reporting(0), соответственно диагностируемость на мои ошибки в чужом окружении отсутствует. Легко можешь отстрелить сайту ногу. Скачать на свою машину и запустить сайт — не реально.
_Единственный_ вариант — править сайт на живую:
while (!wtf('0_o')) {
исправил файл;
залил на ftp;
нажал F5;
поматерился;
}

Bonus: всё тоже что и выше, но предствьте: есть файл на ftp, 2кб, скачиваем, правим — всё ништяк. Заливаем назад — сайт умер! Смотрим ftp — файл есть но нулевой длины, т.е. пустой. Wtf?!
А всё просто у сайта из 50мб квоты, занято 80мб. Ага, бывает и так. И нельзя залить по ftp новые файлы, но старый благополучно обнулился. И всё без суппорта ничего не сделаешь. Как это клиенту объяснить, если сайт работал пока я его не трогал? :)

К чему я всё это? Ах да:
1. Вы представляете себе насколько усложнится процесс, если будет «песочница» и надо будет «через веб-морду и потом в админ-панели сайта выставлять задание на распихивание этих файлов по нужным папочкам с владельцем типа рут и только для чтения»?
2. А кривые сайты с молдованской версткой будут работать с правами только для чтения? Обычно они пишут что попало и куда попало, легче выставить 0777, чем чужие скрипты править.
3. Сколько клиентов уйдет от хостера с вашей схемой работы?
Если клиент не понимает, что так намного безопаснее, это его право. (Аналогия: если человек не понимает, что провода в месте соединения лучше заизолировать даже если они висят на уровне выше человеческого роста — его право не изолировать и получить удар током в случае чего.)

Если клиент не понимает, что спагетти на php — это сайт его очень-очень любимой фирмы — это его право (в то же время неаккуратно нарисованный логотип редко кто не заметит). Если исправлять сайт по-живому клиент считает нормой, то нормой должно быть делать шумный и пыльный ремонт в офисе в разгар рабочего дня в той самой комнате, где принимают клиентов.

Hint-hint: можете сказать это и своим клиентам.
Приходилось так делать, когда времени на поиск руткита не было, а сайт нужно было оставить в безопасности. Делал chown -R root.
и как это помогло простите? если шелл уже в системе то изменение владельца ничего не даст, все так же можно запустить пхп файл например.

изменение владельца просто не даст поставить новый шелл — но старый можно запустить
У ифреймера не хватит прав изменить файлы, потому что запуск будет производиться от прав пользователя.
а ему и не надо это делать :) как только робот поставил ифрейм — он (ифрейм) начинает сгружать трояна какого то. все — больше ничего не надо ;).

если вы поменяете владельца — троян все равно будет сгружаться. шелл все равно будет работать если он уже был.
Ну это подразумевается, что ифреймы уже почищены :)
Я говорю о невозможности нового заражения. Шелл работает, но сделать, по сути, им ничего нельзя, кроме вмешательства в БД, конечно. Это просто была временная мера на несколько часов моего отъезда.
они время модификации наместо ставят уже? или еще не додумались? я встречал такие что не ставили :)
Не помню, я обращал внимание на время модификации директорий
время модификации директорий тоже можно подменить

вообще идеальный способ борьбы с такими вот штуками это делать локальный слепок сервера по мд5 например — каждого файла — потом если есть проблема — какой то скрипт сравнивает файлы по мд5 — и мгновенно находит что изменилось
Да, конечно, я говорю, что его они у моего клиента точно не меняли )
слабые роботы попались — вам повезло :)
шелл я видел всего один раз, его залили через дыру в старом ipb. Почему то через фтп, шеллы не закачивают. Видимо разные компании, разные технологии…
имхо не нужно использовать те cms которые используют eval, не дай бог в админке можно редактировать шаблоны — тогда можно встроить пхп код и врезаться в сервер шелами так глубоко что их мало кто сможет найти вообще.

даже смарти опасно использовать при возможности редактировать шаблоны из админ панели — там есть тег {php} — можно вытворять с сервером что угодно (при условии неадекватных админов)
Нужно просто для всех папок с шаблонами, аплоадами и тп делать .htaccess RemoveType php
это не всегда помогает — все зависит от шаблонизатора… если шаблонизатор делает eval то через тег {php} можно веселого понавставлять :)

а может шаблонизатор делает include 'template.tpl' — мало ли
у нас было еще веселее — периодически все php скрипты (даже пустые) приходили со встроенным в самое начало кода img со ссылкой на JS троян, хотя сами файлы были чистыми )
две недели общались с хостером, так и не выяснили в чем дело, однако через 2 недели все прошло
у меня тоже такое было. Только сначала дописывался код в конец файла — я обрубал его выполнения с помощью die() в конце скрипта. Вчера зафиксировал случай, что код был записан перед <? в самом начале. Благодаря старту сессии и ругательствам php, что перед записью заголовков идет вывод, это быстро обнаружилось.
нет, в данном случае было что сами файлы вообще не модифицировались,
т.е. делали эксперимент — создавали пустой файл, обзывали его test.php — в итоге в браузер приходил img
Из теорий почему так происходило было в основном — либо какой-то демон поселился на сервере и переписывал выдачу апача, либо контент перехватывался где-то по пути с сервера
Может настройка апача изменилась? Точно не помню, но у него есть возможность дозаписи к ответу сервера произвольного файла — как в начале, так и в конце.
UFO just landed and posted this here
либо в .htaccess`e (что более вероятно)
php_value auto_append_file /path/some.php
расскажите как можно в самое начало кода картинки (я так понимаю в началоа бинарных данных файла картинки) встроить линк на JS троян и чтобы он сработал в браузере?

или я не так понял вашу фразу?
да, кажется я ошибся. там был тег script src=URL/msn.gif
а в этом msn.gif уже был обычный JS код
кажется, проблема тут скорее в CMS, чем в роботах. eval собственно всегда был злом.
ну что могу посоветовать — прикрывать fckeditor, правильно ставить владельцев файла, искать руткиты.
у меня, например, самописная ЦМС. багов безопасности еще никто не обнаружил, хотя были те, кто пытался. И все равно внедряют. Дело в том, что на хостинге есть соседи, как разгильдяи, как и злопакостные ))) благодаря им все и внедряется.
а, я как-то либо на своих работаю, либо на vps. в среднем нагрузка проектов не позволяет такого делать. простой хостинг обычно под php-suexec или вообще в отдельной клетке vserver.
Сливаем все файлы, загружаемые юзерами на отдельный субдомен, на котором в свою очередь вырубаем всякие php и пр… На vds подобное делается парой щелчков мыша, а спишь после спокойно. :)
причем тут загружаемые юзерами? роботы проставляющие шелы используют фтп доступы украденные троянами с вашей машины :)
В таком случае ничего не поможет, кроме смены пароля и поиска вредителей.
UFO just landed and posted this here
clamav и ифреймы сканит, и известные веб-шеллы
iframe вряд ли кламав задетектит — попробовал щас на паре примеров — тишина.
Он находит ифреймы на эксплоиты. Именно они спалили лазутчика на сайте клиента
Но ведь если на системе пострадавшего стоял антивирус и выполнял свою работу, то вирус и не смог бы получить пароль.
2) Планируют, если вы имели ввиду постановку антивируса на сайт.
Хотя, пока будет работать только детекция (при внесения вируса сайт отрубается, администратору идет письмо). Планируется, что будет работать практически для любого PHP-движка.

Реализует мой знакомый (у меня времени нет, отдал идею ему). Если что-нибудь выпустит — сделаем заметку.
UFO just landed and posted this here
Скорее они удаляли eval, подозревая в нём вражеский шелл. Сейчас множество ифреймеров предварительно подчищает страницу от чужих ифреймов и бекдоров.
UFO just landed and posted this here
я вот не могу только понять, зачем они удаляют код с темплейтами? ведь это приводит к тому, что изменение файлов быстро обнаруживается(сайт перестает работать)
Честно говоря для меня это загадка:
«всего 7 голосов: ↑4 и ↓3»

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

Давно уже выбираю только те хостинги, где дают ssh-доступ и вхожу по глючам вместо паролей. А насчёт кода: неужели Вы всерьёз использовали для вывода шаблона eval()?
Троян получет полный доступ к вашему компьютеру и ворует доступы, а вы говорите что с этим ничего не сделать и ищете решение на строне сервера, мне кажется это глупо…
Кстати для тех кто очень много возится с ftp, ssh и не завязан на .net мой большой совет — перейти на Линукс…
Уж слишком удобно работать с серваком также как с родной папкой (nautilus) и с родным терменалом…
Мы так и сделали — перевели всех, кто имеет доступ к ftp на линукс. Как показало время — это помогло.
И на всякий случай, дополнительные настройки по ограничению ввели на сервере.

К сожалению, даже постоянно обновляемый антивирус на форточках не спасал.
1. антивирусы бывают разные :) бывают плохие, бывают старые. пример плохого:
NOD32. не смотря на то что по тестам работает он быстрее и вроде как все ловит (подчеркну, по тестам!), то по статистике (ссылки не будет, не помню источник) при уже попавшем в систему вирусе NOD32 поможет лишь в 20% случаев. кстати скорость работы антивируса, при прочих равных, скорее показывает сколько способов распознавания вирусов он знает, чем насколько хороши в своем деле программисты, его написавшие.
пример старого антивируса:
SAV. При всем уважении к нему — морально он уже устарел, тк его ядро, в связи с выходом SEP, не обновляется уже не один год.

2. винда обновлялась? если нет — пинать в первую очередь нужно на себя. дырок в ней заштопано немало даже после SP3. если вы вдруг использовали (или используете) нелицензионную версию — нужно было либо найти сборку с ключом который проходит проверку на сайте MS, либо озадачиться и самим
найти такие ключи, благо в интернете они есть.
Проблема скорее в себе — научиться грамотно хранить пароли. Что мешает взять и поставить KeePass (который есть практически для всех ОС) и даблкликом копировать нужный в данный момент пароль?
Разумеется если вы для разработки используете svn
Недавно цеплял похожий вирус. Пару дней не мог понять откуда берутся записи в файлах с iframe на сайте. Потом понял, что похоже это с моего компьютера, поменял пароли на фтп, запустил все антивирусы, вроде истребил. Но с тех пор FTP под Windows не пользуюсь.
я немного изучал проги автоматического внедрения ифремов на сайты…
там есть модуль вырезания чужих или старых ифреймов (конкуренция серди ботов!)…

так вот, этот код управлется набором регекспов и далеко не все из них адекватны… уверен один из них и врезал ваши
eval(«echo \»".$template_header."\";");

принимая их за чужой вебшел или внедренный ифрейм…
Sign up to leave a comment.

Articles