易受攻击的客户端-服务器应用程序 (VuCSA) 旨在学习/展示如何对非HTTP客户端-服务器应用程序执行渗透测试。它使用 Java(以及 JavaFX 图形用户界面)编写。
目前,该易受攻击的应用程序包含以下挑战:
如果你想了解如何解决这些挑战,请查看 PETEP 网站,其中描述了如何使用开源工具 PETEP 来利用它们。
提示 1: 在开始黑客攻击之前,不要忘记检查下面消息的数据结构。在修改网络流量时,你可能需要考虑结构,特别是有效载荷长度字节。
提示 2: 大多数挑战可以通过修改网络流量来利用。因此,建议使用 TCP 代理或进程钩子进行测试。
提示 3: 一些挑战存在输入验证和限制,这在胖客户端中很常见,但这并不意味着服务器使用相同的验证。
在此挑战中,你的目标是操纵客户端和服务器之间的网络流量,导致缓冲区过度读取。
命令执行挑战代表了一个非常简单的命令执行漏洞。目标是在服务器上执行恶意命令。
SQL注入挑战包含一个易受SQL注入攻击的搜索输入,但你会很快注意到,该输入不允许你输入所需的字符。
枚举挑战基于一个未受枚举保护的模拟登录表单。你能找到所有 5 个用户并猜出他们的密码吗?
在此挑战中,你可以发现多个 XML 漏洞:
水平访问控制挑战代表了一个文档阅读器,允许用户查看自己的文档并阅读内容。目标是找到其他用户的 5 个文档。
垂直访问控制挑战基于一个模拟用户面板,显示基本用户信息。目标是找到一个隐藏的管理员功能,并检查是否可以作为访客用户使用它。
RCE反序列化漏洞使用 Java 反序列化/序列化通过网络传输数据。该应用程序包含两条路径,你可以利用这些路径通过易受攻击的 Java 反序列化实现远程代码执行。你可以通过检查服务器的 JAR 文件或查看源代码来找到这两条路径。目标是为两条路径创建利用程序,并在服务器上执行恶意命令。提示: 你可以将服务器 JAR 用作库,以简化利用程序的创建。
你需要 Java 11 或更高版本才能运行 VuCSA。注意: 对于搭载 ARM64 架构(M1、M2 芯片)的 Mac,请使用针对 Java 17 的特殊构建版本。
要运行易受攻击的服务器和客户端,你可以使用 GitHub 上的某个发布版本,或者运行 gradle assemble,它会创建分发包(适用于 Windows 和 Unix)。这些包包含 sh/bat 脚本,用于使用 JVM 运行服务器和客户端:
# Linux / Mac
chmod +x client.sh server.sh
./client.sh
./server.sh
# Windows
client.bat
server.bat
注意: 这些运行脚本包含有用的变量,包括 Java 可执行文件的路径。如果你的 PATH 中没有它,或者你使用了多个 Java 版本,你可能需要更改它。
如果服务器配置不存在,则会自动创建,之后从服务器运行目录中的 server.json 加载:
{
"network": {
"serverHost": "0.0.0.0",
"serverPort": 8765
}
}
可以在运行中的应用程序中指定客户端配置。
项目分为三个模块:
服务器和客户端之间传输的消息具有以下简单格式:
[type][target][length][payload]
32b 32b 32b ???
这四个部分具有以下含义:
为了发送自定义有效载荷,你可能需要更新有效载荷长度。否则,它将无法正常工作。在教程中,开发了自动修复有效载荷长度字节的脚本。
易受攻击的客户端-服务器应用程序 (VuCSA) 包含多个漏洞,可以通过多种方式利用。官方利用指南使用开源渗透测试代理(参见 PETEP 方法论)。
在 PETEP 方法论中,详细解释了利用挑战的整个过程,包括有用的有效载荷。