这是我第一次真正意义上自己审出漏洞,想记录一下当时的过程。
当时是在跟着先知平台的一篇文章复现 Tarzan CMS 的反序列化漏洞。没想到跟着文章看代码的时候,顺手又发现了一个 SSRF,算是白捡了一个 CVE 🤭。
环境搭建:
环境直接照着先知的文章搭就行:
https://xz.aliyun.com/picture-word?id=380
对应项目:
https://gitee.com/taisan/tarzan-cms
原文章主要分析的是一个 SnakeYAML 反序列化漏洞。漏洞点在后台管理的“主体上传”功能,可以上传一个压缩包,之后程序会使用 SnakeYAML 对其中的内容进行反序列化,在这个过程中调用 setter 方法,最终造成 RCE。
在跟着原文章复现跟进到 upload 方法的时候,发现旁边还有一个 download 方法

如图,主体管理功能除了可以使用本地上传的方式上传文件外还可以通过远程下载的方式,典型的 ssrf 漏洞场景,找到对应代码查看

找到 download 方法,方法本身不复杂,大概就是:
- 解析传入的 URL;
- 建立连接;
- 接收服务器返回的数据;

跟进解析 url 的代码,最后进入 filterUrl 方法,方法只对传入的 url 进行了简单的正则匹配过滤,ctf 中这种简直送分题,这里只简单证明一下漏洞存在:

同时在审计时还发现另一个问题,**CVE-2025-1113 **也就是原文中的反序列化漏洞在官方批露中是需要管理员权限的,因为这是一个后台功能点,但在实际测试中发现授权可以绕过,可以未授权访问/theme 功能点

使用 shiro 矿建进行鉴权,而在配置 filter 时将/theme 路径设置为无需权限,导致无论是本地上传还是远程下载都是可以未授权进行,上面进行 ssrf 测试时也是没有使用 cookie 依旧成功
项目很简单,跟着文章复现也是拿到了第一个审计出的漏洞,感觉没白学啊