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

news2024/11/14 16:23:02

【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

这个系统就先到这吧

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2034629.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RabbitMQ应用问题 - 消息顺序性保证、消息积压问题

文章目录 MQ 消息顺序性保证概述原因分析解决方案基于 spring-cloud-stream 实现分区消费 消息挤压问题概述原因分析解决方案 MQ 消息顺序性保证 概述 a&#xff09;消息顺序性&#xff1a;消费者消费的消息的顺序 和 生产者发送消息的顺序是一致的. 例如 生产者 发送消息顺序…

centos7 xtrabackup mysql(8)压缩 增量备份(3)

centos7 xtrabackup mysql&#xff08;8&#xff09;压缩 增量备份&#xff08;3&#xff09; 添加数据1 添加数据测试一下 测试主从是否可以 主机端 mysql -u root -p 1234aA~1 show databases ; use company_pro; show tables ; insert into employee(name) value (‘2024…

C++实现单例模式/工厂模式

单例模式 单例模式即一个类只创建一个实例&#xff0c;提供一个全局访问点。单例模式主要是为了控制资源访问&#xff0c;在一些功能如&#xff1a;数据库连接池&#xff0c;日志类实例&#xff0c;线程池等都可以采用单例模式。 // 实现一个单例 #include<iostream> #…

户外上网黑科技|续航能力大比拼,飞猫、闪鱼、格行、品胜,哪个好

在当今的移动互联网时代&#xff0c;随身WiFi已成为我们日常生活中不可或缺的一部分&#xff0c;特别是在租房、出差、旅行或户外活动时&#xff0c;其续航能力成为了用户选择的重要因素。本文将针对飞猫、闪鱼、格行、品胜这四款热门随身WiFi产品的续航能力进行详细比较&#…

C#高级:在SQLserver中使用视图、存储过程、索引和触发器

目录 一、视图 1.视图是什么&#xff0c;有什么作用&#xff1f; 2.视图和存储过程有什么区别&#xff1f; 3.建立一个视图&#xff0c;名为PersonBorrowView&#xff0c;SQL已给出&#xff1a; 4.如果往BorrowInfo加一条记录&#xff0c;我原本的SQL会增加一条记录&#…

JAVA毕业设计635—基于Java+ssm的仓库管理系统(源代码+数据库)

毕设所有选题&#xff1a; https://blog.csdn.net/2303_76227485/article/details/131104075 基于Javassm的仓库管理系统(源代码数据库)635 一、系统介绍 分为员工、管理员两种角色 1、员工&#xff1a; 登录、库存管理、出入库管理、密码修改 2、管理员&#xff1a; 库…

(自用)交互协议设计——protobuf序列化

protobuf是一种比json和xml等序列化工具更加轻量和高效的结构化数据存储格式&#xff0c;性能比json和xml真的强很多&#xff0c;毕竟google出品。 protobuf原理 protobuf如何使用 创建xxx.proto文件 开头写上 syntax"proto2"package tutorial; 表明使用的proto…

Linux:修改网卡名称(redhat-centos-redora)

解决问题: 我现在有块网卡名ens160&#xff0c;我想把他改为ens33&#xff08;仅是模拟&#xff0c;实际中你可以任意更改&#xff0c;不是局限在这两名称中&#xff0c;举一反三&#xff09; 我当前的操作系统为&#xff1a;centos9 解决办法&#xff1a; 1.修改grub配置 …

前端学习笔记-JS篇-02

运算符 赋值运算符 对变量进行赋值的运算符。 已经学过的赋值运算符:【将等号右边的值赋予给左边&#xff0c;要求左边必须是一个容器】 其他赋值运算符: - * / % 原始写法和简化写法【其实就是java基础】 一元运算符 众多的JavaScript 的运…

免费【2024】springboot 个人健康管理网站的设计与实现

博主介绍&#xff1a;✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围&#xff1a;SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化…

php 企业员工考勤系统—计算机毕业设计源码17108

摘要 由于数据库和数据仓库技术的快速发展&#xff0c;企业员工考勤系统建设越来越向模块化、智能化、自我服务和管理科学化的方向发展。员工管理系统对处理对象和服务对象&#xff0c;自身的系统结构&#xff0c;处理能力&#xff0c;都将适应技术发展的要求发生重大的变化。 …

Linux系统安全及应用(二):PAM安全认证

文章目录 4Linux中的PAM安全认证介绍su命令的安全隐患PAM认证原理和构成PAM安全认证流程PAM 配置文件结构说明PAM 控制标记的补充说明PAM 实例 4Linux中的PAM安全认证 介绍 PAM&#xff08;Pluggable Authentication Modules&#xff09;&#xff0c;可插拔式认证模块是一种高…

高翔【自动驾驶与机器人中的SLAM技术】学习笔记(七)卡尔曼滤波器三:卡尔曼滤波器公式推导【转载】

卡尔曼滤波器三&#xff1a;卡尔曼公式推导 转载来源&#xff1a;卡尔曼滤波&#xff1a;从入门到精通 简述 考虑一个SLAM 问题&#xff0c;它由一个运动方程&#xff1a; x t f ( x t − 1 , u t ) ω t (1) \mathbf{x}_{t}f(\mathbf{x}_{t-1},\mathbf{u}_{t}) \omega_…

尚品汇-ES(三十一)

目录&#xff1a; &#xff08;1&#xff09;封装搜索相关实体对象 &#xff08;2&#xff09;搜索接口封装 &#xff08;3&#xff09;在service-list-client模块添加远程接口 &#xff08;1&#xff09;封装搜索相关实体对象 搜索参数实体&#xff1a;SearchParam 搜索参…

haproxy高级功能配置

介绍HAProxy高级配置及实用案例 一.基于cookie会话保持 cookie value:为当前server指定cookie值&#xff0c;实现基于cookie的会话黏性&#xff0c;相对于基于 source 地址hash 调度算法对客户端的粒度更精准&#xff0c;但同时也加大了haproxy负载&#xff0c;目前此模式使用…

Service服务在Android中的使用

目录 一&#xff0c;Service简介 二&#xff0c;Service的两种启动方式 1&#xff0c;非绑定式启动Service 2&#xff0c;绑定式启动Service 三&#xff0c;Service的生命周期 1&#xff0c;非绑定式Service的生命周期 2&#xff0c;绑定式Service的生命周期 四&#xf…

BCArchive加密工具实测分享:为何我觉得它很实用?

前言 你是不是经常有这样的烦恼&#xff1a;重要的文件、私密的照片、敏感的资料&#xff0c;总是担心会不小心泄露出去&#xff1f;哎呀&#xff0c;别担心&#xff0c;别担心&#xff0c;我今天要介绍的这款软件&#xff0c;简直就是守护你数据安全的超级英雄&#xff01; 在…

CVE-2012-2122 mysql/mariaDB身份认证漏洞

简介&#xff1a; 当连接MariaDB/MySQL时&#xff0c;输入的密码会与期望的正确密码比较&#xff0c;不断的尝试登录连接&#xff0c;回导致MySQL认为两个密码是相同的。也就是说只要知道用户名&#xff0c;不断尝试就能够直接登入SQL数据库。 影响范围#所有的Mariadb和mysql版…

【吊打面试官系列-Elasticsearch面试题】Elasticsearch 在部署时,对 Linux 的设置有哪些优化方法?

大家好&#xff0c;我是锋哥。今天分享关于 【Elasticsearch 在部署时&#xff0c;对 Linux 的设置有哪些优化方法&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; Elasticsearch 在部署时&#xff0c;对 Linux 的设置有哪些优化方法&#xff1f; 1、64 GB 内存…

【STM32】CubeMX + CLion + FreeRTOS移植过程问题记录

文章目录 一、portable 文件选择二、自定义文件添加三、ST-Link v2 烧录问题四、STM32F407工程中程序无法启动调度器 前言   本文依照稚晖君分享的配置CLion用于STM32开发【优雅の嵌入式开发】&#xff0c;尝试配置STM32CubeMX CLion开发环境&#xff0c;并在此基础上移植Fre…