### 关键信息总结 #### 漏洞概述 - **CVE**: Unauthenticated Remote Command Execution (RCE) in Sangfor OSM via getHis Interface - **产品**: Sangfor (深信服) - **产品名称**: Operation and Maintenance Management System (OSM) - **受影响版本**: 3.0.8 (及其他可能更早版本) #### 漏洞类型 - **类型**: OS Command Injection #### 描述 - 在 Sangfor OSM 版本 3.0.8 中存在一个关键的远程命令执行 (RCE) 漏洞,位于 `/isomp-protocol/protocol/getHis` 端点。该应用未能正确地对 `sessionPath` 参数进行处理,在HTTP POST 请求中。 #### 资产映射 - **FOFA** 查询: - body="/fort/login" && product="SANGFOR-运维安全管理系统" #### 漏洞细节和根本原因 - **不安全的输入处理**: `/isomp-protocol/protocol/getHis` 接受 `sessionPath` 参数。 - **不充分的输入清理**: 尽管存在正则表达式检查,但被绕过或不足以阻止命令分隔符。 - **命令注入**: 应用程序使用字符串拼接构建命令:[Command] + [User Input]。 - **执行**: ShellExecutor 类通过系统外壳直接执行污染的字符串。 #### 概念验证 (PoC) 1. 发送恶意请求,注入命令执行 `whoami`,并将输出写入一个公开可访问的静态目录 (`/usr/local/tomcat/webapps/fort/trust/js/`)。 2. 通过浏览器验证执行结果。 #### 修复建议 1. **输入验证**: 严格白名单 `sessionPath` 参数,只允许有效文件路径字符,并拒绝任何shell元字符。 2. **安全编码**: 用Java的`ProcessBuilder` 替代 `Runtime.exec` 或 shell拼接。以参数列表形式传递参数,防止shell将其解释为命令。