Jfinal cms前台评论XSS漏洞分析

本文分析了JfinalCMS v4.6版本中前台评论处存在的XSS漏洞,通过构造特定payload并提交评论,可在页面刷新时触发弹窗提示,揭示了后端代码对用户输入过滤不完善的缺陷。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Jfinal cms采用Java语言开发,官方代码仓库为:https://gitee.com/jflyfox/jfinal_cms

Jfinal cms前台评论处存在XSS漏洞,以v4.6版本为例,下面是简单漏洞分析。

首先来看如何利用此漏洞。

第一步:填写payload

在新闻评论的地方填写如下payload:abcd<img src="/xswv.png" onerror="alert('OK')"></span><span>

第二步:提交内容

点击“发布”按钮。

第三步:触发漏洞

刷新页面即可看到弹窗提示。

接下来是代码分析:

根据BurpSuite抓包来看,提交评论时访问的URL为:http://xxx.abcde.com/front/comment/save,根据此路径可以快速定位到CommentController.java文件。

该文件是CommentController类,CommentController类有个save方法,我们具体来看save方法的代码。

在save方法中先做了一些权限判断,没有登录的用户不能添加评论。然后调用CommentService对象的saveComment方法来保存用户的评论。

我们跳转到CommentService.java文件查看saveComment方法的具体代码。

saveComment方法首先调用JFlyFoxUtils对象的delScriptTag方法对评论内容进行安全过滤,然后再将评论存储到数据库中。

从delScriptTag这个名字我们大概就能猜到该方法的作用是删除script标签。

我们再接着看delScriptTag方法:

该方法进行两次正则表达式替换,第一次是替换掉<script></script>标签,第二次是替换掉<style></style>标签。但是该方法并没有过滤掉其他html标签,例如:img标签。所以我们可以利用img标签的onerror事件触发XSS漏洞。

至此,该XSS漏洞的原因已经找到了,就是因为后端代码对用户输入的内容过滤不完善导致的。

 

转载于:https://www.cnblogs.com/dgjnszf/p/10864975.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值