freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

如何映射Google Web Toolkit(GWT)的攻击面
Alpha_h4ck 2020-12-19 20:37:41 208758


GWTMap

GWTMap是一款针对GWT的安全审计工具,在它的帮助下,广大研究人员不仅可以对基于Google Web Toolkit(GWT)的应用程序进行安全审计,而且还可以使用GWTMap来映射这类应用程序的攻击面。该工具的主要功能是帮助广大研究人员提取出隐藏在现代GWT应用程序混淆客户端代码中的任何服务方法节点,并尝试生成GWT-RPC请求样例Payload来与这些应用程序进行交互。

依赖环境

脚本的正常运行需要Python3环境以及argparse和requests库。在安装并配置好Python3环境之后,我们可以使用下列命令来安装相应的依赖组件:

python -m pip install -r requirements.txt

帮助菜单

$ ./gwtmap.py -h

usage: gwtmap.py [-h] [--version] [-u <TARGET_URL>] -F <FILE> [-b <BASE_URL>] [-p <PROXY>] [-c <COOKIES>] [-f <FILTER>] [--basic] [--rpc] [--probe] [--svc] [--code] [--color] [--backup [DIR]] [-q]

 

Enumerates GWT-RPC methods from {hex}.cache.js permutation files

 

Arguments:

  -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地址URL,比如说:-p http://127.0.0.1:8080

  -c <COOKIES>, --cookies <COOKIES>

                        访问远程资源所需的cookie,比如说:'JSESSIONID=ABCDEF; OTHER=XYZABC'

  -f <FILTER>, --filter <FILTER>

                        输出过滤,比如说:-f AuthSvc.checkSession

  --basic                启用HTTP Basic认证

  --rpc                 针对每一个方法生成序列化RPC请求

  --probe               发送HTTP探测请求来测试每一个方法

  --svc                 显示枚举服务信息和方法

  --code                导出给定资源的're-formatted'状态

  --color                启用终端输出颜色高亮显示

  --backup [DIR]         创建获取代码的本地拷贝

  -q, --quiet             启用静默模式(最小化输出)

 

执行样例: ./gwtmap.py -u "http://127.0.0.1/example/example.nocache.js" -p "http://127.0.0.1:8080" --rpc

工具使用

通过目标的Bootstrap文件来枚举一个远程应用程序中的方法,并创建目标代码的本地备份(随机选择排列):

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

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

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

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

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

枚举任意给定组合的本地文件拷贝中的方法:

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

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

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

针对已过滤的服务中所有的方法生成RPC Payload,输出数据带有颜色高亮显示:

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

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

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

完整使用样例

在这个样例中,我们针对“testDetails”方法来生成了一个RPC请求,然后实现针对服务的自动化探测:

$ ./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

项目地址

GWTMap:【GitHub传送门

参考资料


# GWT
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 Alpha_h4ck 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
Alpha_h4ck LV.10
好好学习,天天向上
  • 2359 文章数
  • 1021 关注者
Tetragon:一款基于eBPF的运行时环境安全监控工具
2025-01-21
DroneXtract:一款针对无人机的网络安全数字取证工具
2025-01-21
CNAPPgoat:一款针对云环境的安全实践靶场
2025-01-21
文章目录