在这面具之下,是你坚强的信念
闪石星曜
正在火热练习阶段ing......
并且定期分享ing......
关注我们,跟着好好学习。
··· ···
1
项目安装
企业级进销存管理系统,采用SpringBoot+Shiro+MyBatis+EasyUI构建。
A、环境要求
1、Windows 10
系统。
2、Java版本为1.8.0_261
。
3、Mysql版本为5.7
。我用的是PHPstudy集成的。
4、IDEA版本随意。
B、项目部署流程
①、命令行进入Mysql后,创建数据库名为jxc
,并切换使用该数据库。
②、将项目文件中的/sql/jxc.sql
的数据导入到jxc
数据库,注意导入路径中应使用正斜杠/
。
③、使用IDEA打开本项目,等待Maven自动加载依赖项,如果时间较长需要自行配置Maven加速源。几个现象表明项目部署成功。pom.xml
文件无报错,项目代码已编译为class
,Run/Debug Configurations...
处显示可以运行。
④、修改src/main/resouces/application.properties
配置文件内容,具体如下图所示:
⑤、点击启动Run/Debug Configurations...
本项目。
⑥、项目访问地址如下:
-
后台地址:
http://127.0.0.1:8888/login.html
⑦、登录账号密码大家各显神通了。
2
代码审计漏洞挖掘
“环境部署完成后,
通过代码审计深入发现安全漏洞”
1、第三方组件漏洞审计
本项目是基于Maven构建的。对于Maven项目,我们首先从pom.xml
文件开始审计引入的第三方组件是否存在漏洞版本,然后进一步验证该组件是否存在漏洞点。
本项目引入的组件以及组件版本整理如下:
组件名称 | 组件版本 |
---|---|
SpringBoot | 2.1.0.RELEASE |
mysql | 5.1.40 |
shiro | 1.4.0 |
整理完成后,如何确定该组件版本存在漏洞?最简单的方法无疑于从搜索引擎进行搜索,比如关键字:shiro 漏洞
。进一步可从组件官网,CVE,CNVD,CNNVD等网站查询。
2、组件漏洞代码审计
通过查看pom.xml
文件中引入的第三方插件,且经过搜索查询,发现shiro
引入了存在漏洞的版本为1.4.0,我们进一步验证是否存在漏洞。
2.1、Shiro漏洞代码审计
系统存在低版本Shiro为1.4.0,该版本存在安全漏洞。
2.1.1、Shiro简述
Apache Shiro是一个Java安全框架,有身份验证、授权、密码和会话管理等功能。
2.1.1、Shiro漏洞简述
以下为Shiro近几年漏洞。
CVE编号 | 简述 | 版本 |
---|---|---|
CVE-2016-4437 | RememberMe 反序列化漏洞 | shiro 1.x < 1.2.5 |
CVE-2016-6802 | Context Path 路径标准化导致绕过 | shiro < 1.3.2 |
CVE-2019-12422 | Padding Oracle Attack & CBC Byte-Flipping Attack | shiro < 1.4.2 (1.2.5, 1.2.6, 1.3.0, 1.3.1, 1.3.2, 1.4.0-RC2, 1.4.0, 1.4.1) |
CVE-2020-1957 | Spring 与 Shiro 对于 "/" 和 ";" 处理差异导致绕过 | shiro < 1.5.2 |
CVE-2020-11989 | Shiro 二次解码导致的绕过以及 ContextPath 使用 ";" 的绕过 | shiro < 1.5.3 |
CVE-2020-13933 | 由于 Shiro 与 Spring 处理路径时 URL 解码和路径标准化顺序不一致导致的使用 "%3b" 的绕过 | shiro < 1.6.0 |
CVE-2020-17510 | 由于 Shiro 与 Spring 处理路径时 URL 解码和路径标准化顺序不一致导致的使用 "%2e" 的绕过 | shiro < 1.7.0 |
CVE-2020-17523 | Shiro 匹配鉴权路径时会对分隔的 token 进行 trim 操作导致的使用 "%20" 的绕过 | shiro < 1.7.1 |
CVE-2021-41303 | 由于 Shiro 的 BUG 导致特定场景的绕过 | shiro < 1.8.0 |
由上可知,本项目使用的Shiro 1.4.0版本存在多个漏洞,大致可以分为两个。一是Padding Oracle Attack漏洞
,二是通过路径匹配问题造成权限绕过漏洞
。
2.2、权限绕过漏洞验证
【加入炼石计划,解锁该部分,学习完整版课程,加入方式在下面】
2.3、Oracle Padding Attack漏洞验证
【加入炼石计划,解锁该部分,学习完整版课程,加入方式在下面】
3、单点漏洞审计
针对单点漏洞进行代码审计,通过常规搜索技巧发现是否存在漏洞,尽管不存在漏洞也要简单写出来审计过程。
3.1、验证码重复利用漏洞代码审计
【加入炼石计划,解锁该部分,学习完整版课程,加入方式在下面】
3.2、CSRF漏洞代码审计
【加入炼石计划,解锁该部分,学习完整版课程,加入方式在下面】
3.3、XSS漏洞代码审计
【加入炼石计划,解锁该部分,学习完整版课程,加入方式在下面】
加入炼石计划
方式一:
加入“玄说安全”知识星球”,公众号后台回复关键字xq
方式二:
加入炼石计划专项训练知识星球
“看的不过瘾?可以加入炼石计划
学习完整课程
关于炼石计划详细介绍
猛戳下方文章”
JavaWeb代码审计实战开源系统学习心得,赶紧进来看!!!
或者扫描下方二维码直接加入学习~
加入后,记得看置顶文章哦~
原文始发于微信公众号(玄魂工作室):周末开始卷,炼石计划之50套JavaWeb代码审计(四):有趣的进销存系统
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论