返回
PHP免杀Webshell:利用PHP特性躲过检测
前端
2023-11-21 17:19:23
最近,很多厂商都陆续开放了自己的Webshell检测引擎,并且公开接口,邀请众安全研究员参加尝试bypass检测引擎,并且给予奖励,我也参加了几场类似的活动,并成功绕过检测。
PHP作为一种脚本语言,具有很多特性可以利用来绕过检测引擎的检测,从而创建免杀Webshell。本文将介绍一些使用PHP创建免杀Webshell的技术。
加密
加密是绕过检测引擎检测最常用的技术之一。我们可以使用PHP的加密函数,如crypt()、mcrypt()、hash()等,对Webshell代码进行加密,这样检测引擎就无法直接检测到Webshell代码。
$encrypted_code = crypt($code, '$1$rounds=5000$usesomesillystringforsalt$encrypted_code = crypt($code, '$1$rounds=5000$usesomesillystringforsalt$');
#x27;);
绕过
除了加密之外,我们还可以使用一些技术来绕过检测引擎的检测。例如,我们可以使用PHP的eval()函数来执行代码,这样检测引擎就无法检测到代码的具体内容。
eval($code);
我们还可以使用PHP的include()或require()函数来包含一个外部文件,这样检测引擎就无法直接检测到Webshell代码。
include('webshell.php');
结合使用
我们可以将加密和绕过技术结合起来使用,以创建更难被检测到的免杀Webshell。例如,我们可以先对Webshell代码进行加密,然后使用eval()函数来执行加密后的代码。这样,检测引擎就无法直接检测到Webshell代码,也无法检测到加密后的代码。
$encrypted_code = crypt($code, '$1$rounds=5000$usesomesillystringforsalt$encrypted_code = crypt($code, '$1$rounds=5000$usesomesillystringforsalt$');
eval($encrypted_code);
#x27;);
eval($encrypted_code);
实例
以下是一个使用PHP创建的免杀Webshell的示例:
<?php
$code = 'echo "Hello, world!"';
$encrypted_code = crypt($code, '$1$rounds=5000$usesomesillystringforsalt<?php
$code = 'echo "Hello, world!"';
$encrypted_code = crypt($code, '$1$rounds=5000$usesomesillystringforsalt$');
eval($encrypted_code);
#x27;);
eval($encrypted_code);
这个Webshell使用crypt()函数对代码进行加密,然后使用eval()函数来执行加密后的代码。这样,检测引擎就无法直接检测到Webshell代码,也无法检测到加密后的代码。
总结
利用PHP特性,结合加密、绕过技术,可以轻松构建免杀Webshell。在实际应用中,我们可以根据需要选择不同的技术来创建免杀Webshell。