cms
cms copied to clipboard
V7.2.1 反馈3个后台管理BUG,涉及:存储型XSS,任意文件上传,物理路径泄露
存储型 XSS
全局修复,以下为两处举例:
172.0.0.1/api/admin/cms/editor/actions/update
第一处:
使用管理员账号登录后台,信息管理->内容管理,点击编辑:
编辑标题,以html形式编辑内容,保存为测试使用的XSS语句,点击发布。
访问刚刚编辑的内容,触发XSS
第二处:
127.0.0.1/api/admin/cms/channels/channels/actions/append
栏目管理,编辑栏目,在栏目名称写上测试语句
点击生成后,访问栏目链接,触发XSS
任意文件上传
资源文件管理,上传样式文件
*/api/admin/cms/templates/templatesAssets/actions/upload?siteId=1&fileType=aspx&directories=
修改后缀参数即可任意文件上传
物理路径泄露
点击上传,抓取数据包,发现泄露了物理路径信息。
收到,多谢反馈,我们会尽快修复
@starlying 请问下,修复进展如何了
修复中,我们尽快
这周可以修复吗?
------------------ 原始邮件 ------------------ 发件人: "siteserver/cms" @.>; 发送时间: 2023年8月28日(星期一) 上午8:25 @.>; @.@.>; 主题: Re: [siteserver/cms] V7.2.1 反馈3个后台管理BUG,涉及:存储型XSS,任意文件上传,物理路径泄露 (Issue #3675)
收到,多谢反馈,我们会尽快修复
— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>
任意文件上传和物理路径泄露已经修复了,存储型 XSS应该不会修改,后台是无法防止XSS的,管理员可以直接修改模板或js文件。
修复内容管理/栏目管理中标题、副标题..这些字段的存储型XSS应该可行吧?或者像安全模式“过滤内容编辑器中的 JS/CSS 代码”一样,过滤内容管理、栏目管理中包括标题、副标题等字段的JS/CSS代码
------------------ 原始邮件 ------------------ 发件人: @.>; 发送时间: 2023年9月6日(星期三) 上午8:34 收件人: @.>; 抄送: @.>; @.>; 主题: Re: [siteserver/cms] V7.2.1 反馈3个后台管理BUG,涉及:存储型XSS,任意文件上传,物理路径泄露 (Issue #3675)
任意文件上传和物理路径泄露已经修复了,存储型 XSS应该不会修改,后台是无法防止XSS的,管理员可以直接修改模板或js文件。
— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>
好的,我们再研究一下
请问下研究进展如何, 是维持现状, 还是直接过滤内容管理、栏目管理中包括标题、副标题等字段的JS/CSS代码, 还是在安全模式下过滤内容管理、栏目管理中包括标题、副标题等字段的JS/CSS代码?
------------------ 原始邮件 ------------------ 发件人: @.>; 发送时间: 2023年9月11日(星期一) 上午9:40 收件人: @.>; 抄送: @.>; @.>; 主题: Re: [siteserver/cms] V7.2.1 反馈3个后台管理BUG,涉及:存储型XSS,任意文件上传,物理路径泄露 (Issue #3675)
好的,我们再研究一下
— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>
暂时维持现状,我们会继续研究,找找更合适的方案
暂时解决办法:
src\SSCMS.Core\Services\PathManager.Content.cs的public async Task<Content> EncodeContentAsync(Site site, Channel channel, Content content)方法中添加:
else if (style.InputType == InputType.Text || style.InputType == InputType.TextArea)
{
var value = content.Get
else if (style.InputType == InputType.TextEditor) 里content.Set前一行加上 value = StringUtils.FilterSqlAndXss(value);