CVE-2026-88592:kkFileView 跨域文件代理绕TrustHostFilter 全解析
原创
柠檬赏金猎人
柠檬赏金猎人
柠檬赏金猎人
2026年9月25日 10:21
广东
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
概述
kkFileView 是一款基于 Spring Boot 的在线文件预览开源项目,其 /getCorsFile 跨域文件代理端点被发现存在服务器端请求伪造(SSRF)漏洞(CWE-918),影响 4.2.0 及更高版本。
漏洞根源在于参数校验与业务取值不一致:TrustHostFilter 过滤器按固定优先级校验第一个非空参数(url),而 OnlinePreviewController.getCorsFile 控制器实际读取并请求的是 urlPath 参数。攻击者只需在同一次请求中同时提供两者,即可让诱饵参数通过白名单校验,而真正的恶意目标地址被服务器端请求并将响应体回显给攻击者。
该漏洞已在真实 Docker 靶场环境中验证成功,高危等级,画像置信度 0.82。
技术/功能
| 属性 | 值 |
|---|---|
| 漏洞类型 | SSRF(服务端请求伪造) |
| CWE 分类 | CWE-918 |
| 严重程度 | High |
| 影响版本 | kkFileView 4.2.0+ |
| 攻击向量 | GET /getCorsFile |
| Sink 位置 | server/src/main/java/cn/keking/utils/HttpRequestUtils.java:executeHttpRequest |
| 置信度 | 0.82 |
利用链(Source → Sink)
- 污点源:
GET /getCorsFile的 query 参数urlPath - 危险函数:
org.springframework.web.client.RestTemplate#execute(URI, HttpMethod, RequestCallback, ResponseExtractor),两个参数均需 Base64 编码,裸http:// 字符串会触发 IllegalArgumentException
使用示例
监测结果:靶场返回了 kkFileView 主页面 HTML(约 11087 字节),响应体内含 previewByUrl、fileSelectBtn、fileUpload 等前端特征代码,证明服务器在内部对 http://127.0.0.1:8012/ 发起了 HTTP 请求并回显响应体,构成典型 SSRF。
修复建议
- 统一
TrustHostFilter#getSourceUrl与OnlinePreviewController#getCorsFile的 URL 参数名。 - 在
getCorsFile内对最终 normalized URL 重新执行一次 TrustHost 校验(双保险)。 - 对内网 IP 段(
127.0.0.0/8、10.0.0.0/8、172.16.0.0/12、192.168.0.0/16、169.254.0.0/16等)做硬编码黑名单。 - 限制协议,只允许
http/https,拒绝file://、gopher://、dict://等。
注意事项
- 本漏洞仅在已授权的靶场环境中验证,请勿对未授权目标进行测试。
- 生产环境排查时,需同时检查过滤器与控制器对同一请求参数的解析顺序,避免\"校验 A、使用 B\"的经典参数混淆缺陷。
- Base64 编码为服务端强制要求,未编码的 URL 无法触发漏洞。
- 建议升级至官方修复版本,或参考上述修复点自行打补丁。
参考链接
- https://github.com/kekingcn/kkFileView
- https://cwe.mitre.org/data/definitions/918.html
仅限交流学习使用,如您在使用本工具或代码的过程中存在任何非法行为,您需自行承担相应后果,我们将不承担任何法律及连带责任。“如侵权请私聊公众号删文”。
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论