「Java代码审计」代码审计靶场本地搭建「IDAE」


也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大

少走了弯路,也就错过了风景,无论如何,感谢经历


转移发布平台通知:将不再在CSDN博客发布新文章,敬请移步知识星球

感谢大家一直以来对我CSDN博客的关注和支持,但是我决定不再在这里发布新文章了。为了给大家提供更好的服务和更深入的交流,我开设了一个知识星球,内部将会提供更深入、更实用的技术文章,这些文章将更有价值,并且能够帮助你更好地解决实际问题。期待你加入我的知识星球,让我们一起成长和进步

0x01 Java 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

    • 更新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', '222@123.com', 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

在这里插入图片描述在这里插入图片描述

0x04 Hello-java-Sec 本地漏洞靶场搭建

Java漏洞平台,结合漏洞代码和安全编码,帮助理解和减少漏洞(Java Security,安全编码和代码审计)

项目地址:https://github.com/j3ers3/Hello-Java-Sec

创建Hello-java-Sec数据库以及对应表的SQL语句如下:

CREATE DATABASE IF NOT EXISTS test default charset utf8 COLLATE utf8_general_ci;
use test;

CREATE TABLE `users`
(
    `id`       int(11) unsigned NOT NULL AUTO_INCREMENT,
    `user` varchar(50)      NOT NULL,
    `pass`  varchar(128)     NOT NULL,
    PRIMARY KEY (`id`)
);

在这里插入图片描述

src/main/resources/templates/application.properties文件修改成自己对应的数据库账号密码,然后点击右上方的绿色小虫子运行即可。

在这里插入图片描述PS:如果你跑不起来,请确认JDK、Maven等相关IDEA环境配置以及安装是否配置正确。

0x05 DVWA靶场本地环境搭建

  • phpstduy安装

https://www.xp.cn/

phpstduy属于傻瓜式操作安装,无难度,安装步骤省略,不会的同学自行百度搜索。

  • Apache和Mysql开始是停止状态,点击启动

在这里插入图片描述

  • 安装phpMyAdmin

在这里插入图片描述

在“其他选项菜单”中,点击phpMyAdmin,在浏览器中打开phpMyAdmin,登录用户名和密码默认为root/root

在这里插入图片描述

  • 登录phpMyAdmin成功后,点击数据库,创建名为dvwa的数据库

在这里插入图片描述

  • 官网下载dvwa的zip包

dvwa官网(可能有墙,需科学上网):
https://dvwa.co.uk/

在这里插入图片描述

Github下载:
https://github.com/digininja/DVWA/releases

在这里插入图片描述

  • 解压文件

在这里插入图片描述

  • 然后进入config文件下将config.inc.php.dist修改为config.inc.php

  • 改成对应的账号密码

在这里插入图片描述

  • 默认是7.x版本,为了方便测试,版本我们降到5.x

在这里插入图片描述
在这里插入图片描述

启动HTTP服务和MySQL数据库,然后访问DVWA,可能访问如下图,会出现两处报错(也可能更多,网上都有答案,自行百度)

在这里插入图片描述

  • PHP function allow_url_include: Disabled 解决方法

修改php.ini,但不是下面这个路径的php.ini

在这里插入图片描述

因为搭建DVWA使用的是PHPstudy,要解决该报错,需要找到所使用的php版本号所在文件夹,修改php.ini中的allow_url_include为On,错误得到解决

在这里插入图片描述

  • reCAPTCHA key: Missing 解决方法

进入config文件下打开config.inc.php,替换如下内容

$_DVWA[ 'recaptcha_public_key' ]  = '6LdK7xITAAzzAAJQTfL7fu6I-0aPl8KHHieAT_yJg';

$_DVWA[ 'recaptcha_private_key' ] = '6LdK7xITAzzAAL_uw9YXVUOPoIHPZLfw2K1n5NVQ';

在这里插入图片描述

  • 成功变绿,无报错,点击Create/Reset Database后会创建数据库,完后自动跳转登录页面

在这里插入图片描述

默认账号:admin 密码:password

在这里插入图片描述


你以为你有很多路可以选择,其实你只有一条路可以走


  • 4
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橙留香Park

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值