欢迎新同学的光临
… …
人若无名,便可专心练剑
我不是一条咸鱼,而是一条死鱼啊!
0x01 WebBug
1.1 所需环境
服务器版本:9.0.52.0(我用的是Tomcat9,你也可以考虑用作者使用的Tomcat7)
jdk8版本:jdk8_112
数据库版本:Mysql 5.7.33
运行工具:IDEA
JavaEE 编写的漏洞靶场
下载地址:https://github.com/mysticbinary/WebBug
1.2 包含如下漏洞,以及修复方案
- 暴力破解
- 验证码绕过(前端绕过)
- SQL注入(盲注)
- 越权访问(垂直越权)
- XSS(存储型)
- XSS(反射型)
- CSRF
- 任意文件上传
- 不安全的直接对象引用
- 失效的身份认证和会话管理
- 不安全的配置
1.3 技术选型
MVC架构
HTML+CSS+JavaScript+JSP
Java+Servlet+Fastjson+ESAPI
MySQL+JDBC
1.4 更新日志
-
v.1.0.2
- 新添Session 会话缺陷漏洞;
- 新添IDOR(不安全的直接对象引用)漏洞;
- 新添CSRF漏洞;
- 新添不安全的 Tomcat 错误页面配置;
- 修复了/jsp/* 不可见文件路径
-
v.1.0.1
扫描二维码关注公众号,回复: 13295188 查看本文章- 更新README.md 描述文件;
-
v.1.0.0
- 创建项目,提交第一个版本;
1.5 部署过程
JavaEE 编写的漏洞靶场
下载地址:https://github.com/mysticbinary/WebBug
解压出来该项目,然后使用IDEA 打开
导入后修改一下Tomcat的版本,因为我使用的是Tomcat9(这里需要去官网下载对应的Tomcat版本,网上有许多教程,此处省略不做讲解,自行百度)
JDK 也可自行更换一下,可能你电脑上的JDK版本有多个,可自行更换为较低一些版本的JDK会好一些,因为该漏洞靶场有引用fastjson 1.2.x 版本
mac jdk默认存放路路径:
/Library/Java/JavaVirtualMachines/
在运行之前我们先创建一个数据库:
- 配置文件里面更改数据库账号密码为自己创建的数据库密码
- 创建一个数据库名为:myshoppings
- 设置数据库为utf8格式
- 添加数据库数据,并创建一个管理员账号:admin 密码:123456
CREATE TABLE `user` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`username` varchar(80) NOT NULL,
`password` varchar(20) NOT NULL,
`mobilephone` varchar(50) NOT NULL,
`email` varchar(100) NOT NULL,
`city` int(10) DEFAULT NULL COMMENT '城市的值是用Ajax填充的,获取不到都是null,留后期解决。',
`delivery_address` varchar(100) NOT NULL,
`user_rights` int(10) NOT NULL COMMENT '0-普通用户 1-系统管理者',
`register_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8;
CREATE TABLE `messages` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL,
`time` datetime NOT NULL,
`title` varchar(20) NOT NULL,
`message` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
CREATE TABLE `user_image` (
`id` int(30) NOT NULL AUTO_INCREMENT,
`user_id` int(30) NOT NULL,
`image_path` varchar(80) NOT NULL,
`upload_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;
INSERT INTO myshoppings.`user`
(id, username, password, mobilephone, email, city, delivery_address, user_rights, register_time)
VALUES(15, 'admin', '123456', '123333', '[email protected]', NULL, '', 1, '2021-09-23 06:10:35');
右上方点击Run 运行项目后,可能会报错,这是部分依赖是基于1.6的,所以同学们只需要添加一下依赖即可,Mac 电脑使用option+enter 添加一下依赖即可
然后在运行时即可成功运行
0x02 SecExample
2.1 项目介绍
jdk8版本:jdk8_112
数据库版本:Mysql 5.7.33
运行工具:IDEA
项目地址:https://github.com/tangxiaofeng7/SecExample
2.2 项目漏洞
- 注入漏洞-SQL注入
- 注入漏洞-命令注入
- 注入漏洞-表达式注入
- XSS漏洞
- CSRF漏洞
- SSRF漏洞
- CORS漏洞
- 反序列化漏洞-Fastjson反序列化
- 验证码相关漏洞
2.3 导入sql语句
CREATE DATABASE IF NOT EXISTS mybatis default charset utf8 COLLATE utf8_general_ci;
use mybatis;
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int NOT NULL,
`name` varchar(30) ,
`pwd` varchar(30) ,
PRIMARY KEY (`id`)
);
INSERT INTO `user` VALUES (1, 'txf', '123');
INSERT INTO `user` VALUES (2, 'suyu', '456');
INSERT INTO `user` VALUES (3, 'abc', '777');
项目里面更改数据库默认的账号密码以及把jdbc:mysql里面的地址改为localhost:3306 避免数据库连接不上
配置项目对应的Maven的jar包和依赖存储位置
到自己Maven 存放路径下的conf/settings.xml 添加一行自己的jar包存放路径的配置
2.4 部署成功
上面的配置都配置好后(其中有个配置依赖提示报错,可以不用管,不影响项目运行),如果你觉得难看的话也可以考虑把它 注释掉
打个包后运行,先1后2
然后运行IDEA 右上角的小虫子即可成功运行成功
访问一下靶场地址
0x03 Java Sec Code 本地搭建
3.1 介绍
项目地址:https://github.com/JoyChou93/java-sec-code
该项目也可以叫做Java Vulnerability Code(Java漏洞代码)
每个漏洞类型代码默认存在安全漏洞(除非本身不存在漏洞),相关修复代码在注释里。具体可查看每个漏洞代码和注释
登录用户名密码:
admin/admin123
joychou/joychou123
3.2 靶场漏洞
- Actuators to RCE
- CORS
- CSRF
- Deserialize
- Fastjson
- Java RMI
- JSONP
- POI-OOXML XXE
- SQLI
- SSRF
- SSTI
- URL whitelist Bypass
- XXE
- Others
3.3 配置环境
应用会用到mybatis自动注入,请提前运行mysql服务,并且配置mysql服务的数据库名称和用户名密码
创建一个数据库:java_sec_code
然后在该数据库下执行如下SQL
CREATE TABLE IF NOT EXISTS `users`(
`id` INT UNSIGNED AUTO_INCREMENT,
`username` VARCHAR(255) NOT NULL,
`password` VARCHAR(255) NOT NULL,
PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `users` VALUES (1, 'admin', 'admin123');
INSERT INTO `users` VALUES (2, 'joychou', 'joychou123');
最后点击IDEA 右上方的小虫子即可运行项目成功,用创建的账号密码登陆
账号:admina 密码dmin123
账号:joychou 密码:joychou123
我自横刀向天笑,去留肝胆两昆仑