个人对审计的理解,互相学习。
漏洞修复说明:
此类相关漏洞源码已修复,可在官网查看https://www.inxedu.com/
反射型xss
自行搭建系统后发现一处反射型xss,如图
数据包
涉及到已知参数有queryCourse.courseName,路径为/front/showcoulist
从而定位CourseController.java
可以看到搜索课程列表中,以集合形式传递,以此向上的方法中追踪到courseService中,这里定义了一些查询课程的接口
再根据查询相关的接口在定义接口的实现类里查询具体实现的方法,49行,在CourseMapper中进行数据库查询,直接返回一个集合
这里是CourseMapper中对应查询queryCourseList的sql语句
然后直接将内容返回到前台的页面上,其实${queryCourse.courseName}是一个EL表达式,代表queryCourse这个实体类下面courseName的值,就是我们查询课程的内容
存储型xss
漏洞参数为article.title
漏洞url:/admin/article/updatearticle
根据漏洞地址可以找到AdminArtcleController.java
new了一个对象 ,获取到参数修改数据库数据,存储到数据库中,再返回到原来的页面中
做了一个判断如果为null就跳转默认地址
直接将内容返回到前台的页面上,${article.title}是EL表达式,
在AdminArtcleController.java控制层涉及到的方法,(存储的过程)
ArticleService.java 和ArticleDao.java代码是一样的,其中定义了一些修改的方法,从而被AdminArtcleController.java调用
这里定义了UpdateArticle方法和updateArticleContent方法
ArticleDaoImpl.java
实现类是实现ArticleDao.java层中UpdateArticle和updateArticleContent方法的接口
ArticleDao层负责和数据库进行交互,
这里可以看ArticleMapper.xml去执行更新的sql语句
Article定义字段,封装好为实体类,可以直接调用,故在整个存储的过程中没有任何的过滤
- 本文作者: fan
- 本文来源: 奇安信攻防社区
- 原文链接: https://forum.butian.net/share/867
- 版权声明: 除特别声明外,本文各项权利归原文作者和发表平台所有。转载请注明出处!