【JavaSec】 代码审计01-SpringMVC图书购物系统
文章目录
- 【JavaSec】 代码审计01-SpringMVC图书购物系统
- 前期部署
- 用户管理
- 修改
- 删除
- 商品管理
- 修改
- 普通用户
- 注册
源码地址:https://github.com/Laverrr/bookstore
前期部署
问题一:
启动后报错
Cookie值中存在无效字符[44]
有什么错就去解决,这是因为cookie在设置的时候 逗号的原因
根据前端的网址 我们去代码中找
看到setcookie
进入
发现确实有了逗号 删了之后 可以正常访问了
问题二:
前台无法登录
感觉可能就是本来就没实现 可以去研究一下 为什么没实现
看完了,一些逻辑是通过js代码实现,所以说,整体是完善的,
然后我就去排查搜索 jsp页面为什么不能加载外部的js,有的说路径问题,有的说F12看一下有没有404
结果都是正常的
直到看到这篇文章
显示浏览器有区别,我就想是不是浏览器不行啊,换了一个浏览器果然 从firefox到edge 直接成功
进入后台
url : http://localhost:8080/backLogin.do
admin / admin 登录 在上面这个代码中读取的
question:
- jsp 和 html的区别
个人总结二者区别:
1.最简单的区别就是,HTML能直接打开,jsp只能发布到Tomact等服务器上才能打开 。 2.定义上HTML页面是静态页面可以直接运行,JSP页面是动态页它运行时需要转换成servlet。 3.他们的表头不同,这个是JSP的头“ <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>”在表头中有编码格式和倒入包等。 4.也是很好区分的在jsp中用<%%>就可以写Java代码了,而html没有<%%> 5.html是w3c规范的一种网页书写格式,是一种统一协议语言,静态网页。我们上网看的网页都是大部分都是基于html语言的。jsp是一种基于动态语言,jsp可以实现html的所有任务。
前后端交互中的优缺点:
从前端界面 到后端分析 从admin界面开始
主要功能就侧边栏这是三个
搜索mana.do 在Controller层找到guideController 当访问这个界面的时候,自动加载 manage/index
界面
其中index 是一个jsp文件
最上面是一个获取时间的函数,其他地方用a标签包裹 进行跳转
时间函数是js里面的 不深究
a标签跳转,兄弟们可能会疑惑了,明明上面的RequestMapping里面的接口都没有后面的do,为什么额外加一个do后缀呢,其实这是跟依赖相关,便于识别,直接映射到由名称为 springmvc
的 Servlet 来处理。
当点击用户管理
后端跳转
分析一下:
首先这个逻辑是在Controller层中的UserController中, 推测PageHelper是设置这个界面显示数量的,注意有些数据 统一写在util下的Constant文件里面了
然后就是获取用户信息了,顺序是:Controller => Service => ServiceImpl => UserMapper
然后进行数据库查询工作
最后看resources中的mapper
可以看到完整的查询语句,注意这里出现了order by ,使用了
$
危险查询符号,可能存在sql注入漏洞,但是前端没找到注入点
查询结束,回到视图中的数据
记住上面这两个名字,来到user.jsp 进行展示输出
注意这里仍然存在两个功能点
用户管理
修改
去分析修改的逻辑
首先传入了参数 user.uid
然后去UserController下的接口
使用userService查找用户的过程和上面一样(Controller -> Service -> ServiceImpl -> Mapper -> resourcesMapper) 使用的是
#
安全开发 好评主要是去看user-modify
创建了一个表单
点击提交按钮后,可以看到上面的action 跳转到modifyUser中去
更新数据,然后重新加载一遍视图 到此修改工作完美结束
补充一下mapper中的数据库查询,安全 好评
删除
这个很明确 删了之后 更新一下表单
商品管理
修改
存在一个文件上传的点 追踪一下
如果直接找不方便的话,配合一下burp抓包
关于这个图像 数据库中存储的是名字
显然没找到文件上传的点,可能没实现
普通用户
注册
注册界面的表单 通过js代码来实现
进入js中后,发现有一个简单的验证,然后发送到Controller层中的一个接口中
然后进入进入Controller层后和数据库的常规套路了,这里稍微补充一个密码的知识点,一般引入了这个MD5Utils之后可以实现数据库存储的加密
进来后 感觉没什么功能点
这个系统就先到这吧