【Java代码审计】文件包含触发XSS漏洞

审计XSS的思路大多数都是先锁定评论区,有些情况下会被页面进行过滤或者转义,但仍可以通过文件包含达到触发XSS的目的。
输入XSS语句,并未直接触发弹框。


抓取请求包,访问的接口为”POST /comment_submit”


在代码中全局搜索字符串”/comment_submit”


该接口的实现代码是控制器类CommentController中的方法submit。而submit方法未对评论内容text进行参数校验以及过滤,就将Comment对象属性text的值赋值为变量text的值。第205行的CommentService.save接口的实现类对象的save方法调用Comment对象。


对接口CommentService的实现类CommentServiceImpl的save方法进行审计


该方法调用了“CommentDao接口的实现类的对象”的save方法,发现直接将Comment对象存进了数据库,为XSS漏洞的触发埋下了隐患。


可以看到数据库中确实存入了XSS,且没有被转义或过滤。


但事实也如开头介绍,前端并未进行弹框。


查看“pom.xml”,可知采用了模板引擎“Freemarker”


在jspxcms官网的相关文档中查看到Freemarker的转义相关的说明文档。


在D:\Code\JavaCode\jspxcms-9.0.0-release-src\src\main\webapp\template\1\default\info_news.html中发现了转义的写法。


通过分析可知info页面做了转义输出,阻止了XSS漏洞的触发。

但在D:\Code\JavaCode\jspxcms-9.0.0-release-src\src\main\webapp\template\1\default\sys_member_space_comment.html未发现转义的防护。


在源码中搜索sys_member_space_comment.html,发现sys_member_space.html包含了sys_member_space_comment.html。


在sys_member_space.html中找到关键代码,dang HTTP请求参数type的值等于comment时,就会动态引用sys_member_comment.html文件


继续寻找sys_member_space.html,发现其控制器类常量值SPACE_TEMPLATE就是sys_member_space.html


接着在源码中搜索常量SPACE_TEMPLATE


可知接口“GET /space/{id}”使用了模板,且参数id可控


输入http://localhost:8080/space/1?type=comment 成功触发XSS漏洞。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hello_Brian

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值