【JavaSec】 代码审计01-SpringMVC图书购物系统

【JavaSec】 代码审计01-SpringMVC图书购物系统


源码地址:https://github.com/Laverrr/bookstore

前期部署

问题一:

启动后报错

Cookie值中存在无效字符[44]

image-20240812174920405

有什么错就去解决,这是因为cookie在设置的时候 逗号的原因

image-20240812174613275

根据前端的网址 我们去代码中找

image-20240812174646876

看到setcookie

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

进入

发现确实有了逗号 删了之后 可以正常访问了

image-20240812174811801

问题二:

前台无法登录

感觉可能就是本来就没实现 可以去研究一下 为什么没实现

看完了,一些逻辑是通过js代码实现,所以说,整体是完善的,

然后我就去排查搜索 jsp页面为什么不能加载外部的js,有的说路径问题,有的说F12看一下有没有404

image-20240813144950219

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

结果都是正常的

直到看到这篇文章

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

显示浏览器有区别,我就想是不是浏览器不行啊,换了一个浏览器果然 从firefox到edge 直接成功

进入后台

image-20240812181204362

url : http://localhost:8080/backLogin.do

admin / admin 登录 在上面这个代码中读取的

image-20240812181252723

question:

  1. jsp 和 html的区别

image-20240813095629816

个人总结二者区别:

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界面开始

image-20240813094554657

主要功能就侧边栏这是三个

搜索mana.do 在Controller层找到guideController 当访问这个界面的时候,自动加载 manage/index 界面

image-20240813094749786

其中index 是一个jsp文件

最上面是一个获取时间的函数,其他地方用a标签包裹 进行跳转

image-20240813095825989

时间函数是js里面的 不深究

image-20240813095944972

a标签跳转,兄弟们可能会疑惑了,明明上面的RequestMapping里面的接口都没有后面的do,为什么额外加一个do后缀呢,其实这是跟依赖相关,便于识别,直接映射到由名称为 springmvc 的 Servlet 来处理。

image-20240813100203516


当点击用户管理

image-20240813100523745

后端跳转

image-20240813100545077

image-20240813101144922

分析一下:

首先这个逻辑是在Controller层中的UserController中, 推测PageHelper是设置这个界面显示数量的,注意有些数据 统一写在util下的Constant文件里面了image-20240813102415412

然后就是获取用户信息了,顺序是:Controller => Service => ServiceImpl => UserMapper

image-20240813103059278

image-20240813103027727

image-20240813102825843

然后进行数据库查询工作

image-20240813103231064

image-20240813103333834

最后看resources中的mapper

image-20240813103420264

可以看到完整的查询语句,注意这里出现了order by ,使用了$危险查询符号,可能存在sql注入漏洞,但是前端没找到注入点

查询结束,回到视图中的数据

image-20240813103805307

记住上面这两个名字,来到user.jsp 进行展示输出

image-20240813103853439

注意这里仍然存在两个功能点

image-20240813103939744

用户管理

修改

去分析修改的逻辑

首先传入了参数 user.uid

然后去UserController下的接口image-20240813105831996

使用userService查找用户的过程和上面一样(Controller -> Service -> ServiceImpl -> Mapper -> resourcesMapper) 使用的是# 安全开发 好评

image-20240813110407402

主要是去看user-modify

image-20240813111916818

创建了一个表单

image-20240813111904685

点击提交按钮后,可以看到上面的action 跳转到modifyUser中去

更新数据,然后重新加载一遍视图 到此修改工作完美结束

image-20240813112105297

补充一下mapper中的数据库查询,安全 好评

image-20240813112405985

删除

image-20240813112613946

这个很明确 删了之后 更新一下表单

商品管理

修改

存在一个文件上传的点 追踪一下

image-20240813113004943

如果直接找不方便的话,配合一下burp抓包

image-20240813113127290

关于这个图像 数据库中存储的是名字

image-20240813134716308

image-20240813134727897

显然没找到文件上传的点,可能没实现


普通用户

注册

注册界面的表单 通过js代码来实现

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

进入js中后,发现有一个简单的验证,然后发送到Controller层中的一个接口中

image-20240813141104162

image-20240813141123701

然后进入进入Controller层后和数据库的常规套路了,这里稍微补充一个密码的知识点,一般引入了这个MD5Utils之后可以实现数据库存储的加密

image-20240813141346563

image-20240813141513275

进来后 感觉没什么功能点

image-20240813150714601

image-20240813150726746

这个系统就先到这吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值