如何映射Google Web Toolkit(GWT)的攻击面
字数 1797 2025-08-15 21:33:00

GWTMap工具使用指南:映射Google Web Toolkit(GWT)攻击面

1. 工具概述

GWTMap是一款专门用于安全审计基于Google Web Toolkit(GWT)应用程序的工具,其主要功能包括:

  • 提取隐藏在现代GWT应用程序混淆客户端代码中的服务方法节点
  • 生成GWT-RPC请求样例Payload
  • 与GWT应用程序进行交互测试
  • 映射GWT应用程序的攻击面

2. 环境准备

2.1 依赖环境

  • Python 3.x
  • argparse库
  • requests库

2.2 安装依赖

python -m pip install -r requirements.txt

3. 基本使用方法

3.1 帮助菜单

./gwtmap.py -h

3.2 主要参数说明

参数 描述
-h, --help 显示帮助信息
--version 显示程序版本号
-u <TARGET_URL>, --url <TARGET_URL> 目标GWT地址
-F <FILE>, --file <FILE> 本地拷贝文件路径
-b <BASE_URL>, --base <BASE_URL> 给定组合文件的URL基地址
-p <PROXY>, --proxy <PROXY> HTTP代理URL地址
-c <COOKIES>, --cookies <COOKIES> 访问远程资源所需的cookie
-f <FILTER>, --filter <FILTER> 输出过滤
--basic 启用HTTP Basic认证
--rpc 针对每一个方法生成序列化RPC请求
--probe 发送HTTP探测请求来测试每一个方法
--svc 显示枚举服务信息和方法
--code 导出给定资源的're-formatted'状态
--color 启用终端输出颜色高亮显示
--backup [DIR] 创建获取代码的本地拷贝
-q, --quiet 启用静默模式(最小化输出)

4. 使用示例

4.1 基本枚举

通过目标的Bootstrap文件枚举远程应用程序中的方法,并创建目标代码的本地备份:

./gwtmap.py -u http://192.168.22.120/olympian/olympian.nocache.js --backup

4.2 特定组合枚举

通过特定的代码组合枚举远程应用程序中的方法:

./gwtmap.py -u http://192.168.22.120/olympian/C39AB19B83398A76A21E0CD04EC9B14C.cache.js

4.3 代理模式枚举

通过HTTP代理枚举目标应用程序的路由流量方法:

./gwtmap.py -u http://192.168.22.120/olympian/olympian.nocache.js --backup -p http://127.0.0.1:8080

4.4 本地文件分析

枚举本地文件拷贝中的方法:

./gwtmap.py -F test_data/olympian/C39AB19B83398A76A21E0CD04EC9B14C.cache.js

4.5 过滤输出

对特定服务或方法进行输出过滤:

./gwtmap.py -u http://192.168.22.120/olympian/olympian.nocache.js --filter AuthenticationService.login

4.6 生成RPC Payload

为已过滤服务中的所有方法生成RPC Payload,并启用颜色高亮:

./gwtmap.py -u http://192.168.22.120/olympian/olympian.nocache.js --filter AuthenticationService --rpc --color

4.7 自动化测试

针对所有已过滤服务方法自动测试生成的RPC请求:

./gwtmap.py -u http://192.168.22.120/olympian/olympian.nocache.js --filter AuthenticationService.login --rpc --probe

5. 完整使用示例

$ ./gwtmap.py -u http://192.168.22.120/olympian/olympian.nocache.js --filter TestService.testDetails --rpc --probe
version 0.1
[+] Analysing=http://192.168.22.120/olympian/olympian.nocache.js
Permutation: http://192.168.22.120/olympian/4DE825BB25A8D7B3950D45A81EA7CD84.cache.js
+ fragment : http://192.168.22.120/olympian/deferredjs/4DE825BB25A8D7B3950D45A81EA7CD84/1.cache.js
+ fragment : http://192.168.22.120/olympian/deferredjs/4DE825BB25A8D7B3950D45A81EA7CD84/2.cache.js

[+] Module Info=
GWT Version: 2.9.0
Content-Type: text/x-gwt-rpc; charset=utf-8
X-GWT-Module-Base: http://192.168.22.120/olympian/
X-GWT-Permutation: 4DE825BB25A8D7B3950D45A81EA7CD84
RPC Version: 7
RPC Flags: 0

[+] Methods Found=
TestService
-----
TestService.testDetails( java.lang.String/2004016611, java.lang.String/2004016611, I, D, java.lang.String/2004016611 )

POST /olympian/testService HTTP/1.1
Host: 192.168.22.120
Content-Type: text/x-gwt-rpc; charset=utf-8
X-GWT-Permutation: 4DE825BB25A8D7B3950D45A81EA7CD84
X-GWT-Module-Base: http://192.168.22.120/olympian/
Content-Length: 262

7|0|10|http://192.168.22.120/olympian/|67E3923F861223EE4967653A96E43846|com.ecorp.olympian.client.asyncService.TestService|testDetails|java.lang.String/2004016611|D|I|§param_Bob§|§param_Smith§|§param_"Im_a_test"§|1|2|3|4|5|5|5|7|6|5|8|9|§32§|§76.6§|10|

HTTP/1.1 200//OK
[1,["Name: param_Bob param_Smith\nAge: 32\nWeight: 76.6\nBio: param_\"Im_a_test\"\n"],0,7]

[+] Summary=
Showing 1/5 Services
Showing 1/25 Methods

6. 输出解析

工具输出包含以下关键信息:

  1. 模块信息

    • GWT版本
    • Content-Type
    • X-GWT-Module-Base
    • X-GWT-Permutation
    • RPC版本和标志
  2. 发现的方法

    • 服务名称
    • 方法签名(包括参数类型)
    • 完整的RPC请求示例
  3. 响应信息

    • HTTP响应状态码
    • 响应内容
  4. 统计信息

    • 发现的服务数量
    • 发现的方法数量

7. 技术要点

  1. GWT-RPC请求结构

    • 使用特定的Content-Type: text/x-gwt-rpc; charset=utf-8
    • 包含X-GWT-Permutation和X-GWT-Module-Base头
    • 请求体采用特定的序列化格式
  2. 方法签名解析

    • 工具能够解析混淆后的方法签名
    • 识别参数类型(如java.lang.String/2004016611)
  3. 攻击面映射

    • 通过枚举所有可用的服务方法
    • 生成可测试的RPC请求
    • 支持自动化探测

8. 项目资源

9. 安全审计建议

  1. 重点关注

    • 认证和授权相关方法
    • 数据操作相关方法
    • 文件操作相关方法
  2. 测试方法

    • 参数篡改测试
    • 类型混淆测试
    • 访问控制测试
  3. 风险点

    • 敏感信息暴露
    • 未授权访问
    • 注入漏洞

通过GWTMap工具,安全研究人员可以系统地审计GWT应用程序的攻击面,发现潜在的安全风险。

GWTMap工具使用指南:映射Google Web Toolkit(GWT)攻击面 1. 工具概述 GWTMap是一款专门用于安全审计基于Google Web Toolkit(GWT)应用程序的工具,其主要功能包括: 提取隐藏在现代GWT应用程序混淆客户端代码中的服务方法节点 生成GWT-RPC请求样例Payload 与GWT应用程序进行交互测试 映射GWT应用程序的攻击面 2. 环境准备 2.1 依赖环境 Python 3.x argparse库 requests库 2.2 安装依赖 3. 基本使用方法 3.1 帮助菜单 3.2 主要参数说明 | 参数 | 描述 | |------|------| | -h, --help | 显示帮助信息 | | --version | 显示程序版本号 | | -u <TARGET_URL>, --url <TARGET_URL> | 目标GWT地址 | | -F <FILE>, --file <FILE> | 本地拷贝文件路径 | | -b <BASE_URL>, --base <BASE_URL> | 给定组合文件的URL基地址 | | -p <PROXY>, --proxy <PROXY> | HTTP代理URL地址 | | -c <COOKIES>, --cookies <COOKIES> | 访问远程资源所需的cookie | | -f <FILTER>, --filter <FILTER> | 输出过滤 | | --basic | 启用HTTP Basic认证 | | --rpc | 针对每一个方法生成序列化RPC请求 | | --probe | 发送HTTP探测请求来测试每一个方法 | | --svc | 显示枚举服务信息和方法 | | --code | 导出给定资源的're-formatted'状态 | | --color | 启用终端输出颜色高亮显示 | | --backup [DIR] | 创建获取代码的本地拷贝 | | -q, --quiet | 启用静默模式(最小化输出) | 4. 使用示例 4.1 基本枚举 通过目标的Bootstrap文件枚举远程应用程序中的方法,并创建目标代码的本地备份: 4.2 特定组合枚举 通过特定的代码组合枚举远程应用程序中的方法: 4.3 代理模式枚举 通过HTTP代理枚举目标应用程序的路由流量方法: 4.4 本地文件分析 枚举本地文件拷贝中的方法: 4.5 过滤输出 对特定服务或方法进行输出过滤: 4.6 生成RPC Payload 为已过滤服务中的所有方法生成RPC Payload,并启用颜色高亮: 4.7 自动化测试 针对所有已过滤服务方法自动测试生成的RPC请求: 5. 完整使用示例 6. 输出解析 工具输出包含以下关键信息: 模块信息 : GWT版本 Content-Type X-GWT-Module-Base X-GWT-Permutation RPC版本和标志 发现的方法 : 服务名称 方法签名(包括参数类型) 完整的RPC请求示例 响应信息 : HTTP响应状态码 响应内容 统计信息 : 发现的服务数量 发现的方法数量 7. 技术要点 GWT-RPC请求结构 : 使用特定的Content-Type: text/x-gwt-rpc; charset=utf-8 包含X-GWT-Permutation和X-GWT-Module-Base头 请求体采用特定的序列化格式 方法签名解析 : 工具能够解析混淆后的方法签名 识别参数类型(如java.lang.String/2004016611) 攻击面映射 : 通过枚举所有可用的服务方法 生成可测试的RPC请求 支持自动化探测 8. 项目资源 项目地址 : GWTMap GitHub仓库 参考资料 : F-Secure Labs博客文章 9. 安全审计建议 重点关注 : 认证和授权相关方法 数据操作相关方法 文件操作相关方法 测试方法 : 参数篡改测试 类型混淆测试 访问控制测试 风险点 : 敏感信息暴露 未授权访问 注入漏洞 通过GWTMap工具,安全研究人员可以系统地审计GWT应用程序的攻击面,发现潜在的安全风险。