LINUX.ORG.RU

Подозрительный обфусцированный PHP код

 , бекдор


2

2

Доброго дня.

Через git status обнаружил в /var/www в одном из сайтов на wordpress новый подозрительный файл wp-admin/includes/class-wp-style.php

С таким содержимым: http://pastebin.com/LaUH4iVy

По логам увидел, что было несколько запросов: http://mysite.com/wp-admin/includes/class-wp-style.php?duckface

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

Заранее спасибо.

Скорее всего, обычный шелл — позволяет принимать команды от удаленного компьютера по изменению файлов и запуску произвольного кода. Запускать не пробвали?

vzzo ★★★
()
Ответ на: комментарий от vzzo

Пробовал запускать, ничего. То есть никакого вывода не было... А по логам кто-то делал запросы через POST и получал ответы в несколько килобайт.

Zapekankin
() автор топика
Ответ на: комментарий от BredoGen

Ага, уверен. Прямо полностью и скопировал. Если скопировать в файл и запустить через php file.php, то не ругается. Я, конечно, пробовал ставить там echo вместо eval, но там видимо многоуровневая обфускация.

Zapekankin
() автор топика
Ответ на: комментарий от Zapekankin

Там просто в конце файла не должно быть новой строки.

Zapekankin
() автор топика
Ответ на: комментарий от Erfinder

Туча, но что-то я не могу дойти до конца. Нашел какую-то функцию, которая до какого-то уровня разворачивает, но дальше вот не знаю как...

Zapekankin
() автор топика
Ответ на: комментарий от BredoGen

Спасибо. До такого я уже доходил. А что с этим делать? Убрать блок с if {} и echo base64_decode($GLOBALS['OOO0000O0'])?

Ругается на PHP Fatal error: Function name must be a string in ... на строке: $IIIIIIIIIIIl = $GLOBALS['OOO0000O0']('I2RmNQ==');

И PHP Notice: Undefined index: OOO0000O0 in ... на той же строке.

Zapekankin
() автор топика
Ответ на: комментарий от Zapekankin

Пробовал запускат

ох напрасно... Оно может, например, бота повесить. А то и попытаться что-нить через sudo вызвать.

true_admin ★★★★★
()
Ответ на: комментарий от SegaMegaDrive

После того как снимешь простые обертки из eval, получится:

preg_replace("/.*/e", "\x65\x76\x61\x6C\x28\x67\x7A\x69\x6E\x66\x6C\x61\x74\x65\x28\x62\x61\x73\x65\x36\x34\x5F\x64\x65\x63\x6F\x64\x65\x28'<base64>'\x29\x29\x29\x3B", ".")

Зачем в preg_replace такой идиотский модификатор... Не знаю. Выполнит все после замены. Hex равнозначен:

gzinflate( base64_decode( '<base64>') );

Берешь base64, который там в одинарных кавычках и распаковываешь.

BredoGen
()
Ответ на: комментарий от Zapekankin

какие права у файла? смотри права и владельца, также ctime и mtime. по этим датам внимательным образом изучи access и error лог, и поймешь как его залили. дырявый этот ваш вордпресс. а еще установи SUHOSIN.

Komintern ★★★★★
()
Последнее исправление: Komintern (всего исправлений: 1)
Ответ на: комментарий от Komintern

Спасибо. Да, это я конечно протупил, через stat уже не узнать время создания (потому что я его менял). А через debugfs мне на VPS не позволяет получить дату создания файла. :((

suhosin стоит, поставил еще в php.ini для disable_functions много каких вызовов блокироваться.

Zapekankin
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.