java-sec-code-master搭建&审计
字数 2176 2025-09-04 23:22:12

Java-sec-code-master搭建与安全审计指南

一、环境搭建

1. 所需工具

  • 开发工具:IDEA
  • 构建工具:apache-maven-3.9.1
  • 服务器:apache-tomcat-9.0.105
  • Java环境:JDK 1.8
  • 数据库:MySQL 5.7.26

2. 数据库配置

  1. 使用phpstudy自带的MySQL
  2. 导入项目中的create_db.sql文件
  3. 修改create_db.sql文件中的数据库连接信息(用户名和密码)
  4. 创建数据库并导入SQL文件

3. 项目配置

  1. 在IDEA中配置JDK 1.8的bin目录
  2. 配置Tomcat服务器(从官网下载并解压)
  3. 使用IDEA自带的Maven或自行安装

4. 项目启动

  1. 执行mvn clean install命令
  2. 运行Application.java主类
  3. 启动成功后,后续可直接通过Tomcat启动

二、安全漏洞审计

1. 命令注入漏洞

漏洞位置

src/main/java/org/joychou/controller/CommandInject.java

漏洞方法

  1. /codeinject端点:

    • 直接拼接filepath参数到命令中
    • 攻击payload:localhost:9000/codeinject?filepath=.%26ipconfig
  2. /codeinject/host端点:

    • 从HTTP头中获取host并直接执行
    • 攻击方式:修改请求头host: localhost&ipconfig

安全方法

/codeinject/sec端点:

  • 使用SecurityUtil.cmdFilter过滤输入
  • 过滤规则:^[a-zA-Z0-9 /\\.-]+$(只允许字母、数字、空格、斜杠、点和横线)

2. RCE漏洞

漏洞位置

src/main/java/org/joychou/controller/Rce.java

漏洞方法

/runtime/exec端点:

  • 直接使用Runtime.getRuntime().exec(cmd)执行用户输入
  • 无任何过滤措施

3. SQL注入漏洞

漏洞位置

src/main/java/org/joychou/controller/SQLI.java

漏洞方法

  1. jdbc_sqli_vul方法:

    • 直接拼接用户输入的username到SQL语句中
    • 攻击payload:1' or '1
  2. mybatisVuln01/02/03方法:

    • MyBatis框架下的SQL注入漏洞

安全方法

  1. jdbc_sqli_sec方法:

    • 使用预编译语句防止SQL注入
  2. mybatisSec01/02/03方法:

    • MyBatis框架下的安全写法
  3. mybatisOrderBySec04方法:

    • 处理排序字段时的安全写法

4. SSTI(服务器模板注入)

漏洞位置

src/main/java/org/joychou/controller/SSTI.java

漏洞特征

  • 直接使用用户输入作为模板内容
  • 可能导致任意代码执行

5. 路径遍历漏洞

漏洞位置

src/main/java/org/joychou/controller/PathTraversal.java

漏洞特征

  • 未对文件路径进行规范化处理
  • 可能通过../等方式访问系统敏感文件

6. 文件上传漏洞

漏洞位置

src/main/java/org/joychou/controller/FileUpload.java

漏洞特征

  • 未对文件类型、内容进行充分验证
  • 可能导致恶意文件上传

7. XSS漏洞

漏洞位置

src/main/java/org/joychou/controller/XSS.java

漏洞特征

  • 未对用户输入进行HTML编码
  • 可能导致脚本注入

三、安全防护建议

  1. 命令执行防护

    • 使用白名单限制可执行命令
    • 对用户输入进行严格过滤
    • 避免直接拼接用户输入到命令中
  2. SQL注入防护

    • 使用预编译语句(PreparedStatement)
    • 使用ORM框架的安全查询方式
    • 对输入参数进行类型检查和长度限制
  3. 文件操作防护

    • 规范化文件路径
    • 限制文件访问范围
    • 检查文件类型和内容
  4. XSS防护

    • 对所有动态输出进行HTML编码
    • 使用CSP(Content Security Policy)策略
    • 设置HttpOnly标志的cookie
  5. 输入验证

    • 实施严格的输入验证策略
    • 使用正则表达式限制输入格式
    • 对特殊字符进行转义或过滤

四、审计技巧

  1. 查找危险API

    • Runtime.exec()
    • ProcessBuilder
    • Statement.executeQuery()
    • 直接文件操作相关API
  2. 关注用户输入流向

    • 从请求参数到危险API的调用链
    • 未经验证的用户输入使用
  3. 检查安全配置

    • 框架的安全配置是否正确
    • 是否启用了安全防护机制
    • 错误处理是否泄露敏感信息
  4. 使用工具辅助

    • 静态代码分析工具(如FindBugs、SonarQube)
    • 动态扫描工具(如Burp Suite、OWASP ZAP)
    • 专用Java审计工具

通过本项目的审计实践,可以深入了解Java Web应用中常见的安全漏洞及其防护方法,提高代码安全意识和安全开发能力。

Java-sec-code-master搭建与安全审计指南 一、环境搭建 1. 所需工具 开发工具 :IDEA 构建工具 :apache-maven-3.9.1 服务器 :apache-tomcat-9.0.105 Java环境 :JDK 1.8 数据库 :MySQL 5.7.26 2. 数据库配置 使用phpstudy自带的MySQL 导入项目中的 create_db.sql 文件 修改 create_db.sql 文件中的数据库连接信息(用户名和密码) 创建数据库并导入SQL文件 3. 项目配置 在IDEA中配置JDK 1.8的bin目录 配置Tomcat服务器(从官网下载并解压) 使用IDEA自带的Maven或自行安装 4. 项目启动 执行 mvn clean install 命令 运行 Application.java 主类 启动成功后,后续可直接通过Tomcat启动 二、安全漏洞审计 1. 命令注入漏洞 漏洞位置 src/main/java/org/joychou/controller/CommandInject.java 漏洞方法 /codeinject 端点: 直接拼接 filepath 参数到命令中 攻击payload: localhost:9000/codeinject?filepath=.%26ipconfig /codeinject/host 端点: 从HTTP头中获取 host 并直接执行 攻击方式:修改请求头 host: localhost&ipconfig 安全方法 /codeinject/sec 端点: 使用 SecurityUtil.cmdFilter 过滤输入 过滤规则: ^[a-zA-Z0-9 /\\.-]+$ (只允许字母、数字、空格、斜杠、点和横线) 2. RCE漏洞 漏洞位置 src/main/java/org/joychou/controller/Rce.java 漏洞方法 /runtime/exec 端点: 直接使用 Runtime.getRuntime().exec(cmd) 执行用户输入 无任何过滤措施 3. SQL注入漏洞 漏洞位置 src/main/java/org/joychou/controller/SQLI.java 漏洞方法 jdbc_sqli_vul 方法: 直接拼接用户输入的 username 到SQL语句中 攻击payload: 1' or '1 mybatisVuln01/02/03 方法: MyBatis框架下的SQL注入漏洞 安全方法 jdbc_sqli_sec 方法: 使用预编译语句防止SQL注入 mybatisSec01/02/03 方法: MyBatis框架下的安全写法 mybatisOrderBySec04 方法: 处理排序字段时的安全写法 4. SSTI(服务器模板注入) 漏洞位置 src/main/java/org/joychou/controller/SSTI.java 漏洞特征 直接使用用户输入作为模板内容 可能导致任意代码执行 5. 路径遍历漏洞 漏洞位置 src/main/java/org/joychou/controller/PathTraversal.java 漏洞特征 未对文件路径进行规范化处理 可能通过 ../ 等方式访问系统敏感文件 6. 文件上传漏洞 漏洞位置 src/main/java/org/joychou/controller/FileUpload.java 漏洞特征 未对文件类型、内容进行充分验证 可能导致恶意文件上传 7. XSS漏洞 漏洞位置 src/main/java/org/joychou/controller/XSS.java 漏洞特征 未对用户输入进行HTML编码 可能导致脚本注入 三、安全防护建议 命令执行防护 : 使用白名单限制可执行命令 对用户输入进行严格过滤 避免直接拼接用户输入到命令中 SQL注入防护 : 使用预编译语句(PreparedStatement) 使用ORM框架的安全查询方式 对输入参数进行类型检查和长度限制 文件操作防护 : 规范化文件路径 限制文件访问范围 检查文件类型和内容 XSS防护 : 对所有动态输出进行HTML编码 使用CSP(Content Security Policy)策略 设置HttpOnly标志的cookie 输入验证 : 实施严格的输入验证策略 使用正则表达式限制输入格式 对特殊字符进行转义或过滤 四、审计技巧 查找危险API : Runtime.exec() ProcessBuilder Statement.executeQuery() 直接文件操作相关API 关注用户输入流向 : 从请求参数到危险API的调用链 未经验证的用户输入使用 检查安全配置 : 框架的安全配置是否正确 是否启用了安全防护机制 错误处理是否泄露敏感信息 使用工具辅助 : 静态代码分析工具(如FindBugs、SonarQube) 动态扫描工具(如Burp Suite、OWASP ZAP) 专用Java审计工具 通过本项目的审计实践,可以深入了解Java Web应用中常见的安全漏洞及其防护方法,提高代码安全意识和安全开发能力。