用perl清理被注入代码的PHP文件

周末在准备澳大利亚的行程,想起半年前申请了一个Welvxing.com的域名,并且也用Discuz X2搭了个论坛(We旅行),不过一直荒废在那里。趁周末搜集资料时简单的折腾了一下,正好用来记录分享行程攻略。一直用的Chrome也没觉得有什么异常,偶尔用IE打开的时候发现会自动跳转到一个莫名其妙的网站。一想坏了,可能被注入代码了,一看PHP源文件,果然在第一行被注入了一段base64加密过的代码(本来想将代码贴进来,不过Dreamhost不让这么干,一直报503错误,只好作罢)。

解码以后的代码为:


if(function_exists('ob_start')&&!isset($_SERVER['mr_no'])){ $_SERVER['mr_no']=1; if(!function_exists('mrobh')){ function get_tds_777($url{$content="";$content=@trycurl_777($url);
...此处省略若干行
function mrobh($content){ @Header('Content-Encoding: none'); $decoded_content=gzdecodeit($content); if(preg_match('/\<\/body/si',$decoded_content)){ return preg_replace('/(\<\/body[^\>]*\>)/si',gml_777()."\n".'$1',$decoded_content); }else{ return $decoded_content.gml_777(); } } ob_start('mrobh'); } }

头疼的时,几乎所有的PHP文件都受影响了,2000个多啊,手工改还不要了亲命了。好在有Perl帮忙,遍历所有子目录的文件也不需要写递归,简单几行代码就可以搞定了:


#!/usr/bin/perl
use File::Find;

sub clean_file {
my $file = shift;
my $tmp = $file.".tmp";

print "clean file $file ...\n";
open(FILE, $file) or die "can not open $file\n";
open(TMP, ">$tmp") or die "can not open $tmp\n";
while(){
my $line = $_;
$line =~ s/^.*aWYoZnVuY3Rpb25fZXhpc.*$/

注:清理之前注意备份现场,要是脚本有点小问题,到时候就追悔莫及了^_^



无觅相关文章插件,快速提升流量

15条评论

  • At 2012.03.06 23:46, smallfish said:

    宁总可以简单一点的:

    $ perl -p -i -e “s/xx/yy/g” /path/*.php

    -i 选项可以可以跟字符,表示自动备份文件

    • At 2012.03.06 23:56, NinGoo said:

      谢谢,一直很少用perl的命令行参数。这个可以遍历所有子目录?

    • At 2012.03.23 17:43, wisdomone1 said:

      充手机话费,游戏点卡,Q币,Q点,欢迎光临淘宝全国充值店http://shop68216871.taobao.com/

      • At 2012.03.30 20:16, 包包论坛 said:

        不错,讲的挺详细的,谢谢你的分享,继续关注

        • At 2012.04.12 01:30, S+hao said:

          网站被入侵之后真麻烦,还是得经常备份,不然叫我用代码解决根本不实际。

          • At 2012.04.15 13:47, 潍坊织发补发 said:

            支持博主,我又来逛逛啦!
            希望博主的网站越办越好!
            诚意与各位交换友情链接:http://www.yongzhenzhifa.com

            • At 2012.04.21 11:10, 潍坊短信群发 said:

              支持博主,我又来逛逛啦!
              希望博主的网站越办越好!
              诚意与各位交换友情链接:http://www.mingtongduanxin.com/

              • At 2012.05.04 16:06, 4on1b2dpxn3u said:

                文章写的不错,支持一个!

                • At 2012.05.09 21:37, 口臭怎么办 said:

                  博主的文章很有帮助

                  • At 2012.05.09 21:56, 口臭怎么办 said:

                    博主的技术文章很有帮助

                    • At 2012.05.28 10:20, 1tall said:

                      博主 你好 想和贵网站合作 QQ2690473216

                      • At 2012.06.05 16:36, 双语不用教 said:

                        博主文章不错,以后常来,双语不用教www.gaofentang.com

                        • At 2012.06.18 19:52, 布谷网 said:

                          博主文章很实在!支持下。。。。

                          • At 2012.06.30 19:51, pf9lb9 said:

                            不错,很给力!

                            • At 2012.07.02 18:39, qgnd73 said:

                              不错,很给力!


                              (Required)
                              (Required, will not be published)