某CMS存储型XSS审计学习

前言:

Jspxcms9.0版本留言处存在存储型XSS漏洞,现复现审计一下源码以及原因。

漏洞复现:

用户评论处

浅测一下

复现成功

代码审计:

F12查看请求包是/comment_submit接口,参数是text

找到/comment_submit接口,发现

text = sensitiveWordService.replace(text);//过滤输入

comment.setText(text);//过滤后的文本


@RequestMapping(Constants.SITE_PREFIX_PATH + "/comment_submit")
public String submit(@PathVariable String siteNumber, String fname,
       String ftype, Integer fid, Integer parentId, String text,
       String captcha, HttpServletRequest request,
       HttpServletResponse response, org.springframework.ui.Model modelMap)
       throws InstantiationException, IllegalAccessException,
       ClassNotFoundException {
    siteResolver.resolveSite(siteNumber);
    User user = Context.getCurrentUser();
    Response resp = new Response(request, response, modelMap);
     ………………………………………………省略
    if (StringUtils.isBlank(ftype)) {
       ftype = Info.COMMENT_TYPE;
    }


   //    这里传入
    text = sensitiveWordService.replace(text);
    Comment comment = (Comment) Class.forName(fname).newInstance();
    comment.setFid(fid);
    comment.setText(text);
    comment.setIp(Servlets.getRemoteAddr(request));
}

追踪sensitiveWordService.replace方法逻辑是判断text为空或空格,直接返回text。否则进行遍历。

word.getName():获取当前敏感词对象的敏感词字符串。

word.getReplacement():获取当前敏感词对象指定的替换字符串。如果没有指定替换字符串 (null),则使用空字符串 "" 进行替换。

StringUtils.replace(s, word.getName(), replacement):使用 Apache Commons Lang 库中的 StringUtils.replace 方法,将字符串 s 中的敏感词 word.getName() 替换为 replacement。

敏感词在哪里呢,追踪getReplacement()与getName(),这里用了JPA,最后追踪到cms_sentive_word表的f_name与f_replacement。

到sql数据库查询,所有值都为空,所以会造成存储型XSS,如果维护做好过滤,则可修复此漏洞。

Jspxcms是基于Java、JSP技术开发的国产开源CMS,是制作、维护网站的利器。国内CMS主要以PHP技术为主,基于Java、JspCMS数量不多,功能和易用性也有一定差距。Jspxcms致力于做最好的Java CMS,依托Java的开源精神和强大的企业级功能,开创Java CMS的新时代。 Jspxcms网站内容管理系统 源码包 v9.0.0 更新日志 改进(Improvement) 1、在站点设置里可以增加手机模板修改,不用到站点管理里修改。 2、sql脚本增加commit语句,避免因为执行脚本时为提交导致数据没有正确插入。 3、pom.xml里增加tomcat7启动插件,方便希望使用tomcat7插件启动的用户。 4、文档管理自动获取描述长度增加到最长的450字符。 5、友情链接列表logo限制大小,避免logo尺寸过大导致页面显示不好看。 6、InfoPage和NodePage标签增加p0参数。 7、升级MySQL驱动,支持MySQL5.7。 缺陷(Bug) 1、修复:后台右上角小房子图标的前台首页链接在多站点情况下,切换站点后无变化。 2、修复:文档管理标题图、属性图、图集在火狐下点击上传按钮无反应。 3、修复:文件管理搜索功能没有保留当前文件夹路径。 4、修复:后台左侧菜单没有屏蔽无权限的菜单。 5、修复:开启页面静态化后,某些栏目生成了HTML,但还会显示HTML待更新。 6、修复:文档管理doc上传按钮位置不正确。 7、修复:有上下文路径时,站点静态首页地址多了一个上下文路径。 8、修复:谷歌某些版本的浏览器点击文档管理图片选择按钮无效。 9、修复:后台任务管理翻页列表固定不变。 10、修复:修改组织报错。 Jspxcms网站内容管理系统功能列表: 1、文档。(新闻、图集、下载、视频、作品、文库、招聘等) 2、栏目。(无限级数栏目管理) 3、文件。(zip上传自解压、zip打包下载、模板、图片、js、css) 4、生成。(全文检索、页面静态化、定时任务、任务管理) 5、模块。(文档属性管理、专题类别管理、专题管理、TAG管理、评论管理、敏感词管理、评分组管理、附件管理) 6、扩展。(友情链接类管理、友情链接管理、留言板类管理、留言板管理、广告版位管理、广告管理、投票管理) 7、插件。(简历管理、数据库备份) 8、统计。(流量分析、受访访问、访问日志) 9、用户。(用户管理、角色管理、会员组管理、组织管理、全局用户管理、全局组织管理) 10、系统。(网站设置、系统设置、站点管理、模管理、文档属性、工作流组、工作流、发布点、操作日志) 主要技术:SpringMVC3.2、Spring3.2、JPA2.0、JSP2.0、Freemarker2.3、Spring Data JPA,QueryDSL、Shiro、Lucene等。 技术亮点:JPA、Spring Data JPA、QueryDSL组成的无比简洁高效的持久化技术;Shiro安全框架;Lucene近实时检索;Freemarker模板技术;仿Gmail验证码等。 Jspxcms网站内容管理系统页面截图展示  相关阅读 同类推荐:CMS系统
Jspxcms简介 Jspxcms是基于Java、JSP技术开发的国产开源CMS,是制作、维护网站的利器。国内CMS主要以PHP技术为主,基于Java、JspCMS数量不多,功能和易用性也有一定差距。Jspxcms致力于做最好的Java CMS,依托Java的开源精神和强大的企业级功能,开创Java CMS的新时代。 jspxcms-5.1.0-release-tomcat中包含tomcat,避免因为tomcat版本和部署导致的错误。 只要电脑中装有jdk和mysql,就可以安装,无需另外下载tomcat。 Jspxcms安装说明: 1、下载安装包并解压之后,运行tomcatbinstartup.bat; 2、进入网站首页(如:http://localhost:8080/),按提示安装; 3、安装完成后,根据系统提示重启tomcat。(运行tomcatbinshutdown.bat关闭tomcat,之后再运行tomcatbinstartup.bat启动tomat) Jspxcms网站内容管理系统 安装包 v9.0.0 tomcat版 更新日志 改进(Improvement) 1、在站点设置里可以增加手机模板修改,不用到站点管理里修改。 2、sql脚本增加commit语句,避免因为执行脚本时为提交导致数据没有正确插入。 3、pom.xml里增加tomcat7启动插件,方便希望使用tomcat7插件启动的用户。 4、文档管理自动获取描述长度增加到最长的450字符。 5、友情链接列表logo限制大小,避免logo尺寸过大导致页面显示不好看。 6、InfoPage和NodePage标签增加p0参数。 7、升级MySQL驱动,支持MySQL5.7。 缺陷(Bug) 1、修复:后台右上角小房子图标的前台首页链接在多站点情况下,切换站点后无变化。 2、修复:文档管理标题图、属性图、图集在火狐下点击上传按钮无反应。 3、修复:文件管理搜索功能没有保留当前文件夹路径。 4、修复:后台左侧菜单没有屏蔽无权限的菜单。 5、修复:开启页面静态化后,某些栏目生成了HTML,但还会显示HTML待更新。 6、修复:文档管理doc上传按钮位置不正确。 7、修复:有上下文路径时,站点静态首页地址多了一个上下文路径。 8、修复:谷歌某些版本的浏览器点击文档管理图片选择按钮无效。 9、修复:后台任务管理翻页列表固定不变。 10、修复:修改组织报错。 Jspxcms页面截图展示    相关阅读 同类推荐:CMS系统
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值