Гонял вирусы на сайте (вернее, PHP-Shell) - краткий отчет

  • 56 Ответов
  • 6039 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

*

busik

Лечил сайт знакомым сегодня (вернее, вчерашнюю ночь и сегодня днем), еще на Joomla 1.0.15. Сам его делал им лет кажется 8 назад, до сих пор работает, все нормально. Гос организация, ничего менять не хотят, сидит при нем тихая женщина и новости ставит. Все работало, как ни странно, отлично, но стал дико тормозить с августа примерно. Посмотрел тестром tools.pingdom.com, главная грузится около 3 сек, все внутренние - по 24-26 сек, причем это именно задержка, после этого таймаута все грузится очень быстро. Сайт, конечно за эти годы очень нагружен. Сначала грешил на это, почистил архивы, повыкидал старые-старые материалы (у них все хранилось с 2006 года), посмотрел базу, вычистил дикие по размеру таблицы со статистикой. Оптимизировал таблицы. Посмотрел темплейты, выкинул кое-какие мало нужные явовские скриптики, отключил несколько устаревших модулей. Почистил кеши. Не помогло никак, совсем никак, те же 25 сек задержки.  

Попросил их админа прислать мне логи, желательно апачевские и php-шные. Он прислал, сказал - уже почти месяц постоянно лезет ошибка, не может запуститься какой-то файл php. Полез по адресу - оказалось, в папочке com_poll (в компонентах). Смотрю - файл есть, кажется sitedata.php назывался. Нашел чистую копию этой Joomla (сам же когда-то оставлял им в виде бекапа) - а там в соответствующей папке такого файла (и еще трех, там же) быть не должно. Скачиваю - антивирус ругается. Ну, все ясно. Отключаю антивирус, скачиваю, открываю - незнакомый код и куча "чего-то" закодированного base64. Три остальные - примерно тоже. Полез дальше - нашел такие же лишние файлы еще в двух папках - com_banners и com_content. В них примерно то же самое, и вообще довольно много кода (один из них hostdata.php). Посмотрел код, почитал в инете - ну точно, PHP-Shell, и в коде указание на биржу размещения то ли рекламы, то ли ссылок trustlink.ru, обращение к их базе, подгрузка каких-то клиентов, установка параметров прокрутки каких-то объявлений и др. Основной файл td.php. Повеселило наличие тут же jpg файлов, неизвестных мне, которые, при открытии в Notepad++ оказались файлами стилей :). Дата у всех этих файлов - 07.2014. Убил все это, и сайт перестал запускаться, белый экран. Поставил обратно - запустилось. Опытным путем понял, что дело как раз в наличии этого файла td.php.

Понял, что дело еще и в темплейтах. Полез смотреть index.php - все в порядке, лишнего кода нет (сам их делал когда-то). template ....xml тоже в порядке. Думал-думал, и для порядка полез посмотреть в папку CSS (в темплейтах)... и опс :) - там стоит лишний файл. Должны быть файлики CSS и index.html, а там еще какой то index.php. Открыл его - а там опять, куча кода в base64. Что там- так и не понял, декодировать сходу не удалось, только видно, что ссылок много. Что интересно дата 03.2011 (!). Убил, сайт сразу стал нормально грузиться, так что видимо как раз этот файлик подгружал. Убил опять td.php - сайт опять пропал, включая админку. Поставил обратно - ожил. Полез искать в настройках, и в файле global.php нашел аккуратно врезанную строчку с вызовом этого файла. Что интересно, дата у global.php тоже старая, поэтому не обратил на него внимания сразу. Убил строчку - все встало на места, сайт летает, загрузка всех страниц полторы - две секунды.

Так вот я замечательно провел прошедший день :) Пишу, потому как вдруг кому-нибудь пригодится :)
« Последнее редактирование: 25.10.2014, 04:07:00 от busik »

*

winstrool

  • *****
  • 758
  • [+]41 / [-]2
  • Свободен для работы
Ну а что толку то почистели?, нужно еще и профилактику по предотвращению сделать! по обнаруженному файлу td.php смело могу заявить что залились к вам через JCE, на днях видел эксплоит который работает с этим названием, следовательно вам надо ставить патчь под него, ну и кучу всего, инфы на форуме для этого достаточно!
Вылечу ваш сайт от заразы!
Хочешь проверить свой самописный модуль на баги? пожалуйста! предварительно ознакомтесь с правилами!

Мониторинг обменных пунктов WebMoney по выгодным условиям

*

busik

Ну а что толку то почистели?, нужно еще и профилактику по предотвращению сделать! по обнаруженному файлу td.php смело могу заявить что залились к вам через JCE, на днях видел эксплоит который работает с этим названием, следовательно вам надо ставить патчь под него, ну и кучу всего, инфы на форуме для этого достаточно!

О, спасибо, там кажется как раз JCE и стоит (был по крайней мере), завтра посмотрю. Кажется, через JCE где-то у меня уже было что-то

*

busik

О, спасибо, там кажется как раз JCE и стоит (был по крайней мере), завтра посмотрю. Кажется, через JCE где-то у меня уже было что-то

Залез, заменил JCE на старенький редактор JoomlaFCK ... слышал что он тоже дырявый, но модет быть получше все таки

*

winstrool

  • *****
  • 758
  • [+]41 / [-]2
  • Свободен для работы
Залез, заменил JCE на старенький редактор JoomlaFCK ... слышал что он тоже дырявый, но модет быть получше все таки
Достаточно было поставить патчь на JCE, если капнуть и на JoomlaFCK что нить найдется, даже вроде что то было!
Вылечу ваш сайт от заразы!
Хочешь проверить свой самописный модуль на баги? пожалуйста! предварительно ознакомтесь с правилами!

Мониторинг обменных пунктов WebMoney по выгодным условиям

*

busik

Достаточно было поставить патчь на JCE, если капнуть и на JoomlaFCK что нить найдется, даже вроде что то было!

Я упоминал, там стоит еще Joomla 1.0.15, и JCE соответствующий (версия 1.ХХ.ХХ какая-то). так что патчей никаких нет. Знать бы что руками поправить, я бы сделал. Плохо, что, видимо, придется отказаться от JCE  - там у них несколько сайтов, все старые, на всех одинаковый JCE, а сотрудница, которая при них сидит, обучена как раз пользоваться JCE (а переучиваться ей уже поздно - возраст не тот :)

*

busik

Дополнение - неопознанные юзеры
« Ответ #6 : 17.10.2014, 15:32:05 »
Посмотрел список юзеров на сайте, их там немного (в принципе когда-то я сам их и заводил, каких попросили, самостоятельная регистрация запрещена) - обнаружил двух непонятных юзеров с правами author - simple, зареген на адрес simple@(домен).ru и verysimple на адрес verysimple@(домен).ru. И того, и того убей Бог не помню, чтобы я регистрировал. Спросил их админа - в его почтовике таких юзеров (и адресов) нет. У одного из юзеров стоит дата последнего посещения 1999 год, когда сайта еще и в помине не было. У обоих стоит выбранный редактор пользователя, который я никогда не ставлю (простой HTML). Тут я и догадался, что похоже это - "засланные казачки" :)

*

winstrool

  • *****
  • 758
  • [+]41 / [-]2
  • Свободен для работы
Я упоминал, там стоит еще Joomla 1.0.15, и JCE соответствующий (версия 1.ХХ.ХХ какая-то). так что патчей никаких нет. Знать бы что руками поправить, я бы сделал. Плохо, что, видимо, придется отказаться от JCE  - там у них несколько сайтов, все старые, на всех одинаковый JCE, а сотрудница, которая при них сидит, обучена как раз пользоваться JCE (а переучиваться ей уже поздно - возраст не тот :)

Вот так выглядит патчь от автора ai-bolit'a:
Код
  defined( '_JEXEC' ) or die( 'Restricted access' );

   $user = &JFactory::getUser();
   if ((@$_GET['option'] == 'com_jce') || (@$_POST['option'] == 'com_jce'))
   {
if (($user->usertype != "Super Administrator") &&
        ($user->usertype != "Administrator")) {
            die('<h1>Access Denied</h1>');
        }
   }

вам остается посмотреть соответствуют ли классы вашей версии с классами патча, если нет, то просто переправить и отдельным файлом про инклудить в индекс после строчки
Код
$mainframe->initialise();
согласно описанию патча, он тестировался на версиях 1.5.х и 2.5.х
Вылечу ваш сайт от заразы!
Хочешь проверить свой самописный модуль на баги? пожалуйста! предварительно ознакомтесь с правилами!

Мониторинг обменных пунктов WebMoney по выгодным условиям

*

busik

Вот так выглядит патчь от автора ai-bolit'a:
Код
  defined( '_JEXEC' ) or die( 'Restricted access' );

   $user = &JFactory::getUser();
   if ((@$_GET['option'] == 'com_jce') || (@$_POST['option'] == 'com_jce'))
   {
if (($user->usertype != "Super Administrator") &&
        ($user->usertype != "Administrator")) {
            die('<h1>Access Denied</h1>');
        }
   }

вам остается посмотреть соответствуют ли классы вашей версии с классами патча, если нет, то просто переправить и отдельным файлом про инклудить в индекс после строчки
Код
$mainframe->initialise();
согласно описанию патча, он тестировался на версиях 1.5.х и 2.5.х


Спасибо, попробую

*

busik

Вот так выглядит патчь от автора ai-bolit'a:
Код
  defined( '_JEXEC' ) or die( 'Restricted access' );

   $user = &JFactory::getUser();
   if ((@$_GET['option'] == 'com_jce') || (@$_POST['option'] == 'com_jce'))
   {
if (($user->usertype != "Super Administrator") &&
        ($user->usertype != "Administrator")) {
            die('<h1>Access Denied</h1>');
        }
   }

вам остается посмотреть соответствуют ли классы вашей версии с классами патча, если нет, то просто переправить и отдельным файлом про инклудить в индекс после строчки
Код
$mainframe->initialise();
согласно описанию патча, он тестировался на версиях 1.5.х и 2.5.х


Я правильно понял, это в JCE.php надо поставить?

*

busik

Дополнение - опять пролезли
« Ответ #10 : 25.10.2014, 04:02:23 »
Патч к JCE, который рекомендовали выше, поставил. Проверил - вроде все работает. Включил JCE обратно в среду.

Полез сегодня проверять, пароли все работают. Но нашел несколько левых файлов, подсаженных, судя по дате, уже после первой чистки. В папке com_content - файл id_class.php, в корне сайта - файлы wso.php и ad.php. Последний, как сказал наш админ, это удаленный администратор баз данных, что то типа PHP MyAdmin, только в одном файле. В базе обнаружил неопознанных юзеров, три штуки, таких адресов в нашей базе нет. Файлы убил, юзеров заблокировал.

Потом посмотрел еще один сайт, тоже на Joomla 1.0.15, лежит рядом - в корне обнаружил левый файл test.php с кодом, который должен был выводить фразу "Сайт больше существовать не будет". В прошлый раз его тоже не было. В файл была, если не ошибаюсь, установка даты, так как файл был 2007 года (время создания 00 часов) с правами 644. Вычистил код, но удалить не смог, хотя заходил с правами апача. Поставил права 777, но все равно при удалении получил ошибку. Попросил админа - он удалил своими средствами. Пока ехал домой - файл с тем же кодом возник опять, но назывался test.html, опять 2007 года (время создания 00 часов) с выводом фразы "Здравствуй, мир!". Опять вычистил, сменил права, но удалить не смог. Удалял админ.

Теперь ждем завтрашнего дня :)
« Последнее редактирование: 25.10.2014, 04:08:50 от busik »

*

WebDisaster

Скорее всего, где-то остался шелл, который был и до "чистки". А вообще - логи в руки, и копать. Там все ответы.

P.S. У самого десятый год работает огроменный сайт на Joomla 1.0. Но уже последние месяцы доживает - "хозяин" решил переходить на другую "заказную" CMS и делать всё заново с нуля.

*

busik

Дополнение (временное решение)
« Ответ #12 : 27.10.2014, 02:04:23 »
Токо что админ отписался - переделал в apache все так, что статика отдается через одного владельца, php работает как другой, а apache чисто как номинальный владелец, до процесса apache дело вообще не доходит. Надеемся, хоть временно поможет

*

winstrool

  • *****
  • 758
  • [+]41 / [-]2
  • Свободен для работы
Токо что админ отписался - переделал в apache все так, что статика отдается через одного владельца, php работает как другой, а apache чисто как номинальный владелец, до процесса apache дело вообще не доходит. Надеемся, хоть временно поможет

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

Мониторинг обменных пунктов WebMoney по выгодным условиям

*

busik

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

Да, у нас их немало. А в чем может быть проблема?

*

draff

  • *******
  • 2739
  • [+]174 / [-]5
  • step by step
Я на время поиска шелла, включил бы PHP как модуль, чтобы PHP не имел права писать в файлы .
Или просто запрет на запись в каталог/файлы.А в нужные папки, для записи кеш, картинок, положить файл с запретом на исполнение скриптов

Я на время поиска шелла, включил бы PHP как модуль, чтобы PHP не имел права писать в файлы .
Или просто запрет на запись в каталог/файлы.А в нужные папки, для записи кеш, картинок, положить файл с запретом на исполнение скриптов
draff, не могли бы разъяснить подробнее? Вот это
Цитировать
включил бы PHP как модуль
и вот это
Цитировать
файл с запретом на исполнение скриптов
. У меня была такая же проблема, пришлось восстанавливать сайт с нуля. Пока я гоняла вирусов в одних файлах, заново заражались те, что уже проверила

*

draff

  • *******
  • 2739
  • [+]174 / [-]5
  • step by step
draff, не могли бы разъяснить подробнее? Вот это  и вот это .
PHP как модуль можно включать в настройках для пользователя, если у него есть права. Это VPS/VDS
На виртуальном хостинге PHP как cgi или fast-cgi, и нельзя изменить
файл .htaccess пжлста
Код
RemoveHandler .phtml .php .php3 .php4 .php5 .php6 .phps .cgi .exe .pl .asp .aspx .shtml .shtm .fcgi .fpl .jsp .htm .html .wml
AddType application/x-httpd-php-source .phtml .php .php3 .php4 .php5 .php6 .phps .cgi .exe .pl .asp .aspx .shtml .shtm .fcgi .fpl .jsp .htm .html .wml

*

AlekVolsk

файл .htaccess пжлста
Код
RemoveHandler .phtml .php .php3 .php4 .php5 .php6 .phps .cgi .exe .pl .asp .aspx .shtml .shtm .fcgi .fpl .jsp .htm .html .wml
AddType application/x-httpd-php-source .phtml .php .php3 .php4 .php5 .php6 .phps .cgi .exe .pl .asp .aspx .shtml .shtm .fcgi .fpl .jsp .htm .html .wml
Куда можно положить этот файл для постоянного нахождения там. кроме папки /images? Можно ли так защитить папку с шаблоном? Повлияет ли это на запись файлов по ftp?

*

draff

  • *******
  • 2739
  • [+]174 / [-]5
  • step by step
Куда можно положить этот файл для постоянного нахождения там. кроме папки /images? Можно ли так защитить папку с шаблоном? Повлияет ли это на запись файлов по ftp?
Шаблон- нет, там же исполняемые файлы .пхп для вывода в браузер разметки.
в папки /tmp , /cache , и везде, где есть вложенные каталоги, типа /templates/you_templates/images
На ФТП- нет

*

flyingspook

@LyalyaChornaya
проще сайт на время работ закрыть той же http авторизацией или в лоб повесить forbiden, если знаете что делать, а не на долго потерять пользователей не критично
а вообще "гонять" надо на локалке или другом сервере

*

winstrool

  • *****
  • 758
  • [+]41 / [-]2
  • Свободен для работы
Куда можно положить этот файл для постоянного нахождения там. кроме папки /images? Можно ли так защитить папку с шаблоном? Повлияет ли это на запись файлов по ftp?
В папку с шаблонами я ложу вот такой htaccess
Цитировать
Order Allow,Deny
Deny from all
<Files ~ "\.(bmp|css|csv|doc|gif|html|jpg|jpeg|js|pdf|png|ppt|psd|swf|tiff|txt|xls|BMP|CSS|CSV|DOC|GIF|HTML|JPG|JPEG|JS|PDF|PNG|PPT|PSD|SWF|TIFF|TXT|XLS)$">
Allow from all
</Files>
работает все на ура, ложу его во все папки кроме administrator
Вылечу ваш сайт от заразы!
Хочешь проверить свой самописный модуль на баги? пожалуйста! предварительно ознакомтесь с правилами!

Мониторинг обменных пунктов WebMoney по выгодным условиям

*

busik

В папку с шаблонами я ложу вот такой htaccess работает все на ура, ложу его во все папки кроме administrator

Мне нравится. Разумно, по-моему

*

busik

Дополнение номер 2 - поймалось еще :)
« Ответ #23 : 28.10.2014, 03:08:39 »
Только что с админом уловили что от пострадавшего сайта идут невидимые ссылки на порносайты, выводились в левом нижнем углу сайта. Покопался в темплейтах (их там работает два), нашел следующее:

В CSS файле в конце вписан код, делающий показываемые линки невидимыми (класс .ssil2)

В папке images (в темплейтах) найдены четыре файла:

1. img.jpg - внутри код в encode Base64
2. simple.jpg - внутри то же самое

оба NOD32 идентифицируются как вирусы, как только включился, сразу их убил (я его временно отключал). PHP код вызова этих файлов был врезан внизу файла index.php перед </body>. Кстати, он-лайн тестер вирусов https://www.virustotal.com/ проверял этот сайт и не пикнул.

3. ML_lcode.php - собственно код
4. [sitename].ru.links.dat - список ссылок

Последний содержал перечисление ссылок типа:

%2Fcontent%2Fview%2F810%2F41%2F__LINK__<a href='http://yurist116.info/'>Ищу бесплатнои юридические услуги в Казани</a>__END__
%2Fcontent%2Fview%2F810%2F41%2F__LINK__<a href='http://www.personal-exclusive.ru/'>Yjdjcnb hr v в Самаре</a>__END__
%2Fcontent%2Fview%2F810%2F41%2F__LINK__<a href='http://www.zavod-tkz.ru/kozlovoy.php'>Смета на монтаж козлового крана в Москве</a>__END__
%2Fcontent%2Fcategory%2F13%2F66%2F1%2F__LINK__Аппетитные голые <a href="http://www.kisok.net/">проститутки</a> с чулками и бикини заставят Вас играть по их правилам.__END__
%2Fcontent%2Fcategory%2F13%2F66%2F1%2F__LINK__<a href='http://www.malchiki.nl'>Элитные парни по вызову</a> 24 часа в сутки.__END__
%2Fcontent%2Fcategory%2F13%2F66%2F1%2F__LINK__<a href='http://gay.malchiki.nl'>гей интим услуги Москва</a> обявления__END__
%2Fcomponent%2Foption%2Ccom_contact%2Fcatid%2C43%2FItemid%2C3%2F__LINK__<a href='http://apollo-zmk.ru/products/stroitelnye-metallokonstrukcii/balki/'>балки и прогоны</a>__END__
%2Fcontent%2Fview%2F1204%2F76%2F__LINK__<a href='http://alukonkazan.ru/vkhodnye-gruppy.html'>Изготовление входные группы Казань</a>__END__
%2Fcontent%2Fview%2F1204%2F76%2F__LINK__<a href='http://acm4.ru/vibroplita-vaker-pokupka'>виброплита бензиновая</a>__END__
%2Fcontent%2Fview%2F1204%2F76%2F__LINK__<a href='http://www.sembi.ru/registracija-ooo-v-svao-sviblovo.html'>регистрация Ооо бабушкинская</a>, которым нужна гарантированная и__END__

и далее такого добра про аппетитных толстушек, девок по вызову и т.д на 64к

Последнее обновление этого файла было 15 мин назад (на момент вычищения).

Вот, на сегодняшний вечер/ночь пока все успехи :)
« Последнее редактирование: 28.10.2014, 03:13:11 от busik »

*

AlekVolsk

В папку с шаблонами я ложу вот такой htaccess работает все на ура, ложу его во все папки кроме administrator
Это работает также и на подпапки? а что для админки посоветуете?

upd
Проверил, работает и на подпапки. Только мне пришлось для шаблона также добавит ico и woff.
« Последнее редактирование: 28.10.2014, 12:19:32 от AlekVolsk »

*

winstrool

  • *****
  • 758
  • [+]41 / [-]2
  • Свободен для работы
Это работает также и на подпапки? а что для админки посоветуете?

upd
Проверил, работает и на подпапки. Только мне пришлось для шаблона также добавит ico и woff.

Для админки, бейсик авторизацию и сложный пароль, не мение 15 символов с верхним и нижним регистром и спец символами, такое естественно можно обойти через xss на которую клюнет админ, но все же риск снижается к минимум, и еще в темплейтах, файлы возможные для редактирования тоже права установить на 0444
Вылечу ваш сайт от заразы!
Хочешь проверить свой самописный модуль на баги? пожалуйста! предварительно ознакомтесь с правилами!

Мониторинг обменных пунктов WebMoney по выгодным условиям

*

AlekVolsk

Бейсик-авторизация - слышал. но не знаю. что это.
Пароль - куда уж круче, >20 символов всегда, к тому же еще и в разной раскладке))
Можно на всю папку установить 444, а при обнове снова менять на 644, чтобы иметь возможность обновиться, но это гемор, конечно.

*

winstrool

  • *****
  • 758
  • [+]41 / [-]2
  • Свободен для работы
Бейсик-авторизация - слышал. но не знаю. что это.
В корень админки ложешь .htaccess со следущим содержанием:
Цитировать
AuthName "Access Denied"
AuthType Basic
AuthUserFile /[ПОЛНЫЙ ПУТЬ ДО АДМИНКИ]/administrator/.htpasswd
require valid-user
а затем ложим рядышком .htpasswd который можно сгенерировать здесь _ttp://www.htaccesstools.com/htpasswd-generator/
к примеру логин:пасс admin -> admin:$apr1$ttYMJi8C$gCJwuIsCdAZYOKVdpa4OO/
Вылечу ваш сайт от заразы!
Хочешь проверить свой самописный модуль на баги? пожалуйста! предварительно ознакомтесь с правилами!

Мониторинг обменных пунктов WebMoney по выгодным условиям

*

AlekVolsk


*

flyingspook

сейчас уже мало панелей осталось даже на шарадах на хостах используются, где не предоставляется ограничение доступа к папкам сайта через бейсик авторизацию, про сервера вообще нету речи
.htpasswd - можно назвать как угодно по своему, положить в любую папку пользователя на хосте выше папки сайта и в htaccess прописать путь к файлу и имя файла
По SSH создаем файл, где будут располагаться пользователи, для которых будет открыт доступ к графикам производительности:
Код
# htpasswd -c /путь/каталог/.htpasswd имя_пользователя
жмем ввод и появится поле ввода паса еще ввод и подтвердить ввод, все файл создан и лежит в указанной папке

Если требуется добавить еще одного пользователя:
Код
# htpasswd /путь/каталог/.htpasswd имя_пользователя
и как и с первым пас добавить