记录黑客技术中优秀的内容,传播黑客文化,分享黑客技术精华

威盾解密脚本是如何沦为PHP后门的

2015-07-01 01:10

Author:王松_Striker
QQ:954101430
Team:安全盒子 www.secbox.cn

本脚本是在某黑盒测试中意外发现的,
刚开始以为是一个PHP后门,就千方百计的寻找突破口来getshell,
结果通过本处拿下shell以后,down下源码才发现。。。
“卧槽!尼玛原来不是php后门!”
先贴出代码吧。

<?php
/*
微盾PHP脚本加密专家解密算法
eval通用解密:这里会自动生成debug_0.php,debug_1.php...等文件,其中数字最大的文件并是解密后的脚本。
*/

function eva_($__str) {
static $o_o;
++$o_o;
extract($GLOBALS);
$__str = str_replace('eval(','eva_(',$__str);
preg_match_all('~(\$\w+)\=~is',$__str,$__vars);
if($__vars[1]) $__str = 'global '.implode(',',array_unique($__vars[1])).';'.$__str;
$_arr = explode("\n",$__str);
array_shift($_arr);
file_put_contents($_REQUEST['f'],"<?php\r".implode("",$_arr)."\r");
eval($__str);
}
$data = file_get_contents($_REQUEST['f']);
$data = str_replace("eval(","eva_(",$data);
file_put_contents("debug_0.php",$data);
require "debug_0.php";
?>

下面是我黑盒测试的过程:
首先直接访问该文件,报错:

Warning: file_get_contents(): Filename cannot be empty in xxxxxxx/1.php on line 21

然后以为是一个php后门,任意文件读取。
于是乎就各种猜代码中第21行的:
$data = file_get_contents($_REQUEST[‘f’]);
里面的request参数,在post和get里面都试了很多参数,
比如:file、filename、等等。。
最终用f测试成功,返回:

User-agent: * Disallow: /plugins/ Disallow: /data/  test

这个时候已经可以读取网站任何文件了,
正在我想着读取配置文件的时候。。。。
可爱的DirBuster扫出了另一个文件。。。
叫做debug_0.php,结果打开文件一看。。。
卧槽!这不是我刚才读取的内容吗!!
然后明白了。。原来这B还写入到了这个文件啊。。

这个时候就明白了。。 于是让我们亲爱的草叔叔,在其他网站上传了一个s.txt,内容是个php一句话
打算读取这个,然后写入到debug_0.php中,达到getshell
可是再访问了以后提示。。。。

Warning: file_put_contents(http://xxxxxxx.cn/s.txt): failed to open stream: HTTP wrapper does not support writeable connections inxxxxxx/1.php on line 18

卧槽尼玛怎么会这样。。。
然后猜测可能是没有开启 allow_url_fopen相关的一些设置。。
然后打算包含本地文件试试。。
于是在网站上传头像的地方上传了头像,然后包含。。
发现确实写入了。。但是部分代码出错了。。原本以为是阿里云盾拦截然后修改了部分一句话内容(最后才知道是解密函数捣的鬼)
最终在网站论坛功能中上传1.jpg内容为纯php代码,
结果竟然神奇的成功了。。。
然后就getshell了。。。

上去以后down了一下这个文件,发现是个威盾解密文件。。。

下面我们来讲一下威盾加密和解密。。

威盾加密是一个比较变态的加密方式(这是我自己的描述!!因为我TM被坑过),为什么变态,我们后门来解答。
大概格式是这样的:

  1. $OOO0O0O00=__FILE__;$OOO000000=urldecode(

百度搜索这个字符串你会发现很多威盾加密解密相关的文章。
上次我还以为这是后门。。。解密了半天。。。把eval换成echo 结果TMD一直换了N层。。最终也没解密。。。
百度了一下。。。 用程序分分钟解密了。。。
所以我说这是一个变态的加密方式!!

然后在这个程序中。。
先从request中获取要解密的文件。。
然后:$data = str_replace(“eval(“,”eva_(“,$data);
把eval换成eva_,写入到debug_0.php
然后再require这个debug_0.php文件。
因为这个程序本身funtcion了一个eva_函数,
在eva_中涉及到部分威盾解密的东西,我就不详解了。
总之大概还是达成了一个循环解密的过程。。。
毕竟比我手动解密快多了。。。

但是部分站长拿来用了就放在网站上了!! 网站上了!!站上了!! 上了!!! 了!!
最终网站就被上了!!

所以在这里建议各位站长用完某些临时的脚本以后一定要删除。
并且最好看看代码,明白代码到底干了些什么。。
免得被爆菊了也不知道原因!!

安全盒子团队欢迎各位加入~

扫“安全盒子”二维码,获取最新互联网资讯!

转载威盾解密脚本是如何沦为PHP后门的请注明出自:安全盒子


知识来源: www.secbox.cn/hacker/program/php/4541.html

阅读:116759 | 评论:0 | 标签:PHP 后门

想收藏或者和大家分享这篇好文章→复制链接地址

“威盾解密脚本是如何沦为PHP后门的”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

ADS

标签云

本页关键词