前言:
而今各位老铁们对“java学生管理系统代码”都比较珍视,兄弟们都需要学习一些“java学生管理系统代码”的相关资讯。那么小编在网络上汇集了一些对于“java学生管理系统代码””的相关文章,希望朋友们能喜欢,我们一起来了解一下吧!1.1、版本信息
项目地址:
Jdk版本:jdk1.8.0_131
数据库版本:mysql5.7
Idea版本:idea2021.2
中间件版本:apache-tomcat8.5.82
以上软件均需要下载和安装好,安装及破解方法此处不做记录,百度一下就知道了。其中mysql我使用的是phpmystudy自带的,用起来方便。
1.2、项目部署1.2.1、数据库环境部署
将项目下载后,将压缩包解压,把解压后的【StudentManager-master】文件夹放到tomcat网站根目录中(ps:其实任何目录均可,但为了规范放到这里)。
创建数据库、表
打开phpstudy,将mysql运行起来。
【windows+r】打开cmd窗口。登录mysql
mysql -uroot -p
创建一个名为【student_manager】的数据库:
因为我已经创建过了,所以会提示【database exists】
create database student_manager;
查看数据库是否已经创建成功:
show databases;
将【student_manager.sql】里面的sql语句复制粘贴到mysql的窗口中去执行。其中注释掉的部分可以不复制。没注释掉的一点也不能少。
进入【student_manager】数据库,查看该数据库中的表是否都创建完成:
use student_manager;show tables;
至此数据库环境便部署完成。
1.2.2、修改数据库配置文件
定位【src】-【dao】。将该目录下的三个文件里面数据库连接的代码进行修改,将mysql连接用户和密码修改成自己本地mysql的数据库账号密码。记住,三个文件的代码都要改。
1.2.3、idea配置tomcat
打开idea,左上角【file】-【open】
打开【StudentManager-master】项目
打开项目配置:
很重要,这是配置项目部署的输出目录。如果不配置,会输出到一个叫做【out】的文件夹下。但是项目跑起来,读取的是【WEB-INF】-【classes】里面的文件。这就会导致我们改的配置文件不生效,我在这里踩坑了很久:数据库配置文件都改了,但是系统一直登录不上,报错是数据库连接失败(密码错误)。后来多方查阅资料才知道这个问题。
配置tomcat
点击左上角【+】,选择【tomcat server】-【local】
下图配置一定都要有:
选择项目启动入口:
该项目入口在web目录的index.jsp里面。所以直接选【web】目录。
1.2.4、启动项目
点击Idea右上角的项目启动按钮
浏览器访问链接(注意要加上自己配置的自定义目录。我这里是【web】,所以访问的是:。配置方式在【idea配置tomcat】-【选择项目启动入口】有提到),看到项目相关界面,说明部署成功。后面测试登录均无问题。默认账号密码:zzu zzu
2、 审计过程2.1、审计思路
没有web.xml文件,所以直接看index.jsp。因为一般index.jsp是程序的入口文件。然后全局搜一些关键字,审计一下top10漏洞,最后再按功能点去审计,查漏补缺,主要审计逻辑类漏洞。关键字法和功能点也可以交叉使用,法无定法,只要思路清晰即可。
2.2、审计结果2.2.1、cookie绕过登录验证漏洞
下面是index.jsp中获取cookie并处理的代码。遍历了前端的cookie,当cookie的名字有那name的时候,会获取name的值并调用teacherD类的findWithId()函数。该函数分析见后面。根据该函数的返回值,即teacher的结果,判断是否跳转到one_page_student目录(教师登录成功后才能跳转的目录)。
teacherD类的findWithId()函数分析:user被传到该函数之后,执行了查询语句,查询结果为真的话就返回tea,tea返回到index.jsp里面就是teacher。
也就是说,如果在cookie里面构造一下name:xxx,只要系统存在xxx这个用户,我们就能不用登录,直接访问index及teacher可访问的所有功能。
复现:
1.添加cookie
2.访问index.jsp
3.如下图,直接跳转到了后台界面。后来分析登录处login.jsp的代码时才知道,cookie里面的name是用于保持登录用的。
2.2.2 、sql注入漏洞
这个项目sql语句基本全是拼接的,也没有过滤器。多处sql注入漏洞。包括登录功能,还存在万能密码绕过登录。
全局搜关键字:select
这里以登录处的万能密码为例,顺便分享一下我审计登录功能的过程:
定位登录功能前端代码文件:【login.jsp】(全局搜索login找到,或者搜user,password关键字,登录怎么能少了用户名和密码呢对吧)。然后看登录表单提交到了哪里,emm,提交到了【check_login】。
那接下来就是看【check_login】咯,一样全局搜或者用idea的快捷键【ctrl+鼠标左键单点文件名或函数名】也能进入相应文件内容。
找到【check_login】的servlet之后,往下看,将用户名和密码用字符型变量【user】和【password】接收,然后传入了【teacherD】对象的【checkAccount】函数。
跟进【checkAccount】函数,诺诺诺,user和password直接拼接的,妥妥sql注入。再看从数据库中查询用户和查询密码没有分开写,而是用【and】组合查询,然后看【sql】执行结果是否为真,为真就把【rs】传入【getTeacher】,返回值再传给【tea】,这意味着登录成功了。只判断sql执行结果是否为真就判断是否登录成功是吧,那不就只要在登录框的用户名用万能密码就能绕过密码判断了吗。
复现:
访问登录界面,用户名用:zzu’ or ‘1’=’1
密码随便输入,反正不是正确密码(zzu)
点击【登录】,就进后台了。
2.2.3、暴力破解漏洞
登录处没有验证码机制,没有登录失败锁定策略,存在暴力破解漏洞。还是看上文2.2.2的登录sql语句。判断语句执行是否返回为真就返回,并没有验证码介入,也没有密码输错几次就锁定账户的代码。铁定可爆破密码。
复现:太简单了,大家都来学代码审计了,复现个暴力破解还不会吗。拿burp和hydra自己试试吧,我偷懒一下。
2.2.4、用户名密码明文传输
这个主要看登录功能传参过程中,没有加密解密,也没有编码和解码。直接拿着【user】和【password】明文去执行【sql】的。这在web渗透测试里面也算一个低危漏洞,这里做个记录。
复现:
用burp抓取登录数据包,看post数据中的【user】和【password】参数的值都是明文的。存在敏感数据明文传输安全风险。
登录后面的审计就是看前端传来的其他参数,审着审着就回到2.2.1的绕过登录漏洞啦,详情见2.2.1。
2.2.5、任意用户注册
注册用户的审计模仿登录处的思路。这里有意思的是,注册功能执行的sql语句采用了预编译,所以不存在sql注入漏洞。但是注册对传入的参数并没有做过滤,可能存在xss。还有一个思路是利用二次注入漏洞,修改任意用户密码。另外这里的重点是,注册要填写邮箱,但是没有验证邮箱是否有效。这就导致可以用同一个邮箱注册很多用户,造成任意用户注册。
复现:可以参考下文2.2.6注册验证码绕过的截图。同一个邮箱可以注册多个用户的。
2.2.6、注册处验证码绕过
注册功能的验证码没有即使销毁,存在验证码绕过,导致可重放攻击。
复现:
注册页面,输入正确的验证码和要注册的用户信息。
Burp拦截注册功能的数据包,放到repeater模块。
发包,然后修改一下用户名,再发包(验证码没有修改),发现响应都一样。是302跳转到【one_page_student】,代表注册成功。所以这里的验证码只要被拦截的那个数据包不放掉就可以一直用,存在重放攻击。而且我们多次发包是没有修改邮箱的,但是都注册成功了,验证了2.2.5任意用户注册的漏洞。
2.2.7、任意密码修改
没验证旧密码,可以直接修改任意密码。也许还能修改任意用户的密码。
from
标签: #java学生管理系统代码