对于学习Java漏洞代码来说,Java Sec Code
是一个非常强大且友好的项目。
该项目也可以叫做Java Vulnerability Code(Java漏洞代码)。
每个漏洞类型代码默认存在安全漏洞(除非本身不存在漏洞),相关修复代码在注释里。
具体可查看每个漏洞代码和注释。
下载地址:https://github.com/JoyChou93/java-sec-code
由于在 windows 对代码进行审计,方便 debug 和审计,选择用 IDEA 来查看源码的执行走向。
首先配置好 Maven 的仓库路径和配置文件路径,以便方便管理 jar 包。
参考:SpringBoot——IDEA配置maven_Lukey Alvin的博客-CSDN博客_springboot配置maven
配置好 Maven 后,我们打开加载 Java-sec-code 项目。
然后等待 Maven 下载依赖的 jar 包。
创建数据库,导入 sql 文件。
现在就可以启动项目了。打开 localhost:8080 就是 Java-sec-code 了。
输入数据库的账号密码即可。
由于作者搭建本项目的平台是基于 Linux 的所以我们将该项目配置好后,打包成 jar 包到虚拟机中运行,我个人用的是 Ubuntu 运行 Java-sec-code 的 jar 包,在 windows 中用 IDEA 进行审计。
在 IDEA 中把数据库给连接上。
接着对项目进行 package,生成 jar 包后复制到虚拟机。
首先在虚拟机中创建 java_sec_code 的数据库,不然在执行数据库的查询语句的时候会连接不上 jdbc,导致无数据返回,这样 SQL 注入就无回显。(重要!)
root 用户的这个密码要跟 application.properties 的配置一样
// 登录 mysql 的 root 用户
mysql -u root -p
// 创建数据库
create database java_sec_code;
// 创建 jsc 用户和密码 (这步可以省略),毕竟在 application.properties 用的是 root 用户
create user 'jsc'@'localhost' identified by 'jsc123';
// 在 mysql 执行 sql 文件,最好到 create_db.sql 文件的路径,或者使用绝对路径
use java_sec_code;
source create_db.sql;
创建完数据库后,在虚拟机中用 java8 运行该 jar 包。如果没有安装可以先安装 java8。
建议用 nohup 命令来放在后台执行。
运行 package 出的 jar 包,nohup 是不挂断的运行,最后的 & 是放在后台运行
2>&1是将标准错误(2)重定向到标准输出(&1),标准输出(&1)再被重定向输入到
/dev/null 相当于垃圾桶
// 安装 java8
sudo apt install openjdk-8-jdk
// 不挂断的后台运行
nohup java -jar java-sec-code-1.0.0.jar > /dev/null 2>&1 &
// 查看虚拟机的 ip 地址
ifconfig
访问 192.168.23.128:8080,正常登录即可。
开始进行学习审计。