Typecho <=1.3.0 服务端请求伪造 (SSRF) 漏洞总结 1. 漏洞概述 Typecho 1.3.0 及更早版本在异步 ping 服务中存在严重的 SSRF 漏洞。 触发点: 接口。 成因: 1. 弱 Token 验证: 函数使用松散比较 ( ) 而非严格比较 ( ),攻击者只需发送 即可绕过验证。 2. Pingback Relay:服务端在获取到 Pingback 链接后,会发起新的 POST 请求(XML-RPC),且该请求没有任何 IP 限制检查。 3. 协议支持:底层 HTTP 客户端支持 等协议,允许攻击者与内部非 HTTP 服务(如 Redis、Memcached、MySQL)交互。 2. 影响范围 受影响产品:Typecho Blog Platform 受影响版本:1.3.0 及所有更早版本 影响组件: 接口, 方法 危害: 无需认证即可利用。 可探测内网端口、指纹识别服务。 利用 协议攻击内网 Redis(无认证时)、Memcached、MySQL 等。 数据外泄或内网横向移动。 3. 修复方案 立即缓解: 在 Typecho 设置中关闭 Ping 服务。 修改 过滤提取的 URL,拒绝指向私有 IP 或危险协议(如 )。 修改 使用严格比较 ( ) 并强制 为字符串。 长期方案:升级至最新版本,或移除自动 Pingback 中继功能。 4. 漏洞代码分析 (Technical Analysis) 4.1 弱 Token 验证 文件: 问题:使用 进行松散比较。在 PHP 中,非空字符串 与哈希值比较时可能产生意外匹配,导致验证通过。 4.2 Pingback Relay (第二阶 POST) 文件: 问题:第二次请求(XML-RPC POST)未调用 ,且 可被控制,导致 SSRF。 5. 概念验证 (PoC) 5.1 基础 Pingback Relay 到内部 HTTP 服务 攻击者服务器响应 (HTML): 发送给漏洞接口的恶意 JSON Payload: 5.2 针对内部 Redis 的 Gopher 攻击 (无认证) 攻击者服务器响应 (HTML): 说明:此 Payload 发送 Redis 命令。Typecho 服务器将建立 TCP 连接并传输原始 RESP 数据。 6. 建议的代码修复 (Suggested Code Fixes) 修复 1: 严格 Token 验证 文件: 修复 2: 限制 Pingback 协议和 IP 文件**: