wJa (D&S&I)AST 工具
字数 1913 2025-08-29 08:30:36

wJa 工具使用教学文档

1. wJa 工具概述

wJa 是一款综合性应用程序安全分析工具,结合了 DAST(动态应用安全测试)、SAST(静态应用安全测试)和 IAST(交互式应用安全测试)三种测试方法,专门用于 Java Web 程序的安全性分析。

主要功能

  • 反编译 Java 字节码
  • 代码审计
  • 调试 JAR 包
  • 代理追踪
  • 安全漏洞检测(SQL 注入、Fastjson 反序列化等)
  • 危险库检测

2. 环境准备

系统要求

  • JDK 1.8 或更高版本

启动方式

java -jar wJa.jar

启动后需要选择要分析的 JAR 包程序。

3. 用户界面介绍

菜单栏目

  • File: 保存当前的 Cheetah 脚本
  • Script: 运行/停止当前 Cheetah 脚本

左边栏目

  • Decompile: 反编译文件结构
  • CheetahLangue: Cheetah 自带的支持库函数信息和当前工作区的 Cheetah 脚本

中间栏目

  • Decompile: 显示反编译的 Java 代码
  • CheetahLangue: 编辑 Cheetah 脚本代码
  • DebugJar: JAR 文件调试
  • Web: 简易浏览器

4. Cheetah 脚本语言

Cheetah 是 wJa 引入的基于 Java 开发的专门针对渗透测试的脚本解析语言,用于灵活应对复杂的代码审计场景。

学习资源

5. 核心功能详解

5.1 反编译功能

wJa 的反编译功能可以将 Java 字节码反编译为可读的 Java 代码,虽然与源代码不完全相同,但在语义上没有区别,足以用于安全分析。

5.2 调试 JAR 包

wJa 会自动启动 JAR 包并注入 agent,附加到 JAR 包进程上,提供追踪真实调用链和调试功能。

调试步骤:

  1. 在 DebugJar 栏目中
  2. 输入要调试的类名(如 org/joychou/controller/SQLI
  3. 输入方法名(如 jdbc_sqli_vul
  4. 点击 "get method content" 按钮
  5. 在代码行号前输入字节码偏移量设置断点
  6. 通过浏览器访问对应接口触发断点

5.3 IAST 跟踪

通过调用以下方法进行 IAST 跟踪:

  • StartRecordFun(): 开始跟踪
  • StopRecordFun(className.methodName): 结束跟踪并返回执行流数组

注意: 需要在 config/agent_exclude.txt 中指定不注入的类前缀(如 org/springframework

6. 漏洞检测案例

6.1 SQL 注入检测

检测原理

  1. 找到入口点(Spring 接口)
  2. 追踪变量流向
  3. 检查是否到达危险方法(如 java/sql/Statement.executeQuery
  4. 检查路径中是否有过滤函数
  5. 生成测试链接进行黑盒验证

关键函数

function SQLTrack(className) {
    // 扫描类中的所有方法
    // 对每个方法的每个参数进行SQL注入追踪
}

function trackSQL(className, methodName, url, argIndex) {
    // 追踪变量流向
    // 检查过滤函数
    // 生成测试链接
}

function judgeSQLI(api) {
    // 通过or条件判断是否存在SQL注入
    res = HttpGet(api, cookie);
    res1 = HttpGet(api."%27%20or%201=1--+", cookie);
    // 比较响应长度判断是否存在漏洞
}

过滤函数检测

function filter(sentence, trackName) {
    // 检查是否存在类型转换过滤
    # define filter1 = String.valueOf(.*?
    # define filter2 = Integer.valueOf(.*?
    # define filter3 = Long.valueOf(.*?
}

6.2 危险库检测

wJa 可以扫描 pom.xml 导入的库,判断是否存在危险的组件(如 Fastjson、Log4j)。

6.3 Fastjson 检测

检测原理

  1. 查找使用 com/alibaba/fastjson/JSONObject.parseObject 的地方
  2. 生成包含 DNS 查询的 payload
  3. 通过 DNS 回显判断是否存在漏洞

关键函数

function judgeFastjson(api) {
    domain = getDnsLogDomain();
    payload = "%7B%22%40type%22%3A%22java.net.Inet4Address%22%2C%22val%22%3A%22".domain."%22%7D";
    res1 = HttpGet(api.payload, cookie);
    // 检查DNS记录判断是否存在漏洞
}

6.4 MyBatis 类型 SQL 注入

检测原理

  1. application.properties 获取 MyBatis mapper 位置
  2. 解析 XML 文件获取 SQL 映射
  3. 动态设置 sink 点进行检测

关键函数

function getAllMapperXmlFileNames() {
    // 从application.properties获取mybatis-plus.mapper-locations
    // 返回所有mapper XML文件
}

function MybatisSQLTrack(className) {
    // 对每个mapper方法进行SQL注入检测
}

7. 高级功能

7.1 流式算法

wJa 实现了流式算法,可以追踪包括 Map 在内的变量跳转,并根据 Java 的实现类和子类进行跳转扫描,确保所有调用链的完整扫描。

7.2 动态分析

结合静态分析和动态执行,能够更准确地判断漏洞是否存在。

8. 项目资源

9. 总结

wJa 是一款功能强大的 Java Web 应用安全分析工具,通过结合静态分析、动态测试和交互式分析,能够有效地发现应用中的安全漏洞。掌握 Cheetah 脚本语言可以更灵活地进行代码审计和漏洞检测。

建议用户:

  1. 熟悉 Cheetah 脚本语言
  2. 了解 Java 字节码和反编译原理
  3. 掌握常见漏洞的检测原理
  4. 根据实际项目调整检测脚本
wJa 工具使用教学文档 1. wJa 工具概述 wJa 是一款综合性应用程序安全分析工具,结合了 DAST(动态应用安全测试)、SAST(静态应用安全测试)和 IAST(交互式应用安全测试)三种测试方法,专门用于 Java Web 程序的安全性分析。 主要功能 反编译 Java 字节码 代码审计 调试 JAR 包 代理追踪 安全漏洞检测(SQL 注入、Fastjson 反序列化等) 危险库检测 2. 环境准备 系统要求 JDK 1.8 或更高版本 启动方式 启动后需要选择要分析的 JAR 包程序。 3. 用户界面介绍 菜单栏目 File : 保存当前的 Cheetah 脚本 Script : 运行/停止当前 Cheetah 脚本 左边栏目 Decompile : 反编译文件结构 CheetahLangue : Cheetah 自带的支持库函数信息和当前工作区的 Cheetah 脚本 中间栏目 Decompile : 显示反编译的 Java 代码 CheetahLangue : 编辑 Cheetah 脚本代码 DebugJar : JAR 文件调试 Web : 简易浏览器 4. Cheetah 脚本语言 Cheetah 是 wJa 引入的基于 Java 开发的专门针对渗透测试的脚本解析语言,用于灵活应对复杂的代码审计场景。 学习资源 GitHub 仓库: https://github.com/Wker666/Demo 5. 核心功能详解 5.1 反编译功能 wJa 的反编译功能可以将 Java 字节码反编译为可读的 Java 代码,虽然与源代码不完全相同,但在语义上没有区别,足以用于安全分析。 5.2 调试 JAR 包 wJa 会自动启动 JAR 包并注入 agent,附加到 JAR 包进程上,提供追踪真实调用链和调试功能。 调试步骤: 在 DebugJar 栏目中 输入要调试的类名(如 org/joychou/controller/SQLI ) 输入方法名(如 jdbc_sqli_vul ) 点击 "get method content" 按钮 在代码行号前输入字节码偏移量设置断点 通过浏览器访问对应接口触发断点 5.3 IAST 跟踪 通过调用以下方法进行 IAST 跟踪: StartRecordFun() : 开始跟踪 StopRecordFun(className.methodName) : 结束跟踪并返回执行流数组 注意: 需要在 config/agent_exclude.txt 中指定不注入的类前缀(如 org/springframework ) 6. 漏洞检测案例 6.1 SQL 注入检测 检测原理 找到入口点(Spring 接口) 追踪变量流向 检查是否到达危险方法(如 java/sql/Statement.executeQuery ) 检查路径中是否有过滤函数 生成测试链接进行黑盒验证 关键函数 过滤函数检测 6.2 危险库检测 wJa 可以扫描 pom.xml 导入的库,判断是否存在危险的组件(如 Fastjson、Log4j)。 6.3 Fastjson 检测 检测原理 查找使用 com/alibaba/fastjson/JSONObject.parseObject 的地方 生成包含 DNS 查询的 payload 通过 DNS 回显判断是否存在漏洞 关键函数 6.4 MyBatis 类型 SQL 注入 检测原理 从 application.properties 获取 MyBatis mapper 位置 解析 XML 文件获取 SQL 映射 动态设置 sink 点进行检测 关键函数 7. 高级功能 7.1 流式算法 wJa 实现了流式算法,可以追踪包括 Map 在内的变量跳转,并根据 Java 的实现类和子类进行跳转扫描,确保所有调用链的完整扫描。 7.2 动态分析 结合静态分析和动态执行,能够更准确地判断漏洞是否存在。 8. 项目资源 GitHub 仓库: https://github.com/Wker666/wJa 问题反馈: 在 GitHub issue 中提出 9. 总结 wJa 是一款功能强大的 Java Web 应用安全分析工具,通过结合静态分析、动态测试和交互式分析,能够有效地发现应用中的安全漏洞。掌握 Cheetah 脚本语言可以更灵活地进行代码审计和漏洞检测。 建议用户: 熟悉 Cheetah 脚本语言 了解 Java 字节码和反编译原理 掌握常见漏洞的检测原理 根据实际项目调整检测脚本