## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-PULICZEK-CVE-2022-0337-POC-GOOGLE-CHROME-MICROSOFT-EDGE-OPERA
🤝 展示您的支持 - 如果您喜欢本内容,请给一个 ⭐️ | 在 Twitter 上分享 | 关注我  
* * *
# **CVE-2022-0337 Google Chrome、Microsoft Edge 和 Opera 系统环境变量泄露漏洞**
# 📝 描述
成功利用此漏洞可导致用户存储在系统环境变量中的秘密泄露。Chromium 92 版本中存在一个安全漏洞,并在 97 版本中修复。有多个基于 Chromium 引擎的网页浏览器,例如 Google Chrome、Microsoft Edge、Opera 和 Brave。除了 Brave 外,它们都存在漏洞。该漏洞存在于文件系统访问 API 中,更具体地说是 window.showSaveFilePicker() 方法。
* * *
CVE 版本: **CVE-2022-0337**
致谢: **Maciej Pulikowski**
奖励: **来自 Google VRP 的 $10,000**
* * *
## 浏览器漏洞版本:
| | | | 
---|---|---|---|---
92-96 存在漏洞 ❗️❗️
97+ 已修复(安全) ✔| 92-96 存在漏洞 ❗️❗️
97+ 已修复(安全) ✔| 78-82 存在漏洞 ❗️❗️
82 已修复(安全) ✔| 安全 ✔| 安全 ✔
检查您的浏览器版本:
* Google Chrome: `chrome://version/`
* Microsoft Edge: `edge://version/`
* Opera: `opera://update`
## 操作系统:
**仅 WINDOWS** 存在漏洞。Linux 和 Mac 是安全的。
# 📺 YouTube 概念验证
https://www.youtube.com/watch?v=q7OIEWtalg8

**感谢点赞和订阅 😀👍**
# 👨💻 概念验证代码
## 最简单的一个

1. 在 Devtools 中写入:
root@kitploit:~
let a = await window.showSaveFilePicker({suggestedName:'%username%'});
a.name;
2. 保存文件
3. 您的用户名应该会出现
示例中使用了 **%username%** 环境变量。它会返回已登录的 Windows 用户名。此外,还有更多有趣的环境变量:
以下是一些示例:
* AWS_SECRET_ACCESS_KEY
* AZURE_CLIENT_SECRET
* binance_secret
* GITHUB_TOKEN
* GOOGLE_API_KEY
还有更多...
因此攻击者可以访问目标的 AWS 服务、Github 账户或 Binance 令牌(用于提现)等等...
在我的仓库中查看更多环境变量中的秘密:
🦄🔒 环境变量中的秘密精选列表 🖥️

* * *
## 精心制作的 HTML(带改进)
上一个示例是在本地 Google Chrome Devtools 中运行的。
显然,攻击者可以制作一个特殊的 HTML 文件(网站)来成功利用此漏洞。
**env.html** \- 是仓库中一个精心制作的特殊 HTML 示例。
但是,用户真的需要下载文件吗?
**是的** ,然而,攻击者可以创建一个网站,鼓励用户按住键盘上的 **ENTER** 键 2 秒钟,以运行并接受保存文件对话框。因为 Windows 对话框默认聚焦在保存按钮上,文件只会闪烁一下就被保存了。
 _*.gif 来自 Opera(Chrome 和 Edge 已修复)_
总之,用户按住键盘上的 **ENTER** 键 2 秒钟后,可能导致其系统环境变量泄露。这是一个重大问题,因为用户可能在系统环境变量中存储重要秘密,例如访问其 AWS 服务、Github 账户或 Binance 的凭证。
# 🧠 从文章中记住的要点:
* 环境变量可以存储秘密,例如令牌、API 密钥、秘密
* 如果 payload **"%USERNAME%"** 或 **"$:USERNAME"** 或 **"${USERNAME}"** 或 **"$USER"** 返回真实的用户名,则目标存在漏洞
# 🔨 Chromium 中的修复
我给自己设定了修复这个漏洞的挑战。在此,我想强调我不是一名 C++ 开发者 😎。
来源:https://bugs.chromium.org/p/chromium/issues/detail?id=1247389#c9
一种解决方案就是将 suggestedName 中的字符 **%** 替换为 **_** 。这应该能解决问题。
### 我的解决方案:

可以插入到:
https://source.chromium.org/chromium/chromium/src/+/main:content/browser/file_system_access/file_system_chooser.cc;l=238?q=ResolveSuggestedNameExtension&ss=chromium%2Fchromium%2Fsrc
结果如下:
## 修复前:

## 我的修复后:

确实解决了问题,但这不是插入代码的最佳位置 😋 。不过,我很高兴能够自己修复它 😎
最终修复可以在这里找到:
https://bugs.chromium.org/p/chromium/issues/detail?id=1247389#c12
# 🌌 时间线
* [07.09.2021, 22:40 GMT+2] **Maciej Pulikowski 报告了漏洞**
* [07.09.2021, 23:36 GMT+2] **漏洞被接受(优先级:1,严重性:高)**
* [08.11.2021, 01:30 GMT+1] **我提交了针对 Chromium 源码的可能修复代码**
* [10.12.2021, 18:09 GMT+1] **已修复**
* [7.01.2022, 02:09 GMT+1] **获得 $10,000 奖励**
* [18.03.2022, 18:30 GMT+1] **Google 移除了安全视图限制**
# 💻 有用的链接
* Issue 1247389: 安全: 可能看到用户的系统环境变量,如秘密、令牌或密钥
* 🦄🔒 环境变量中的秘密精选列表 🖥️
* 文件系统访问 API:简化对本地文件的访问
* 文件系统访问 - 文档
* 文件系统访问 Web API - Chromium 安全模型
# 🤝 展示您的支持
🤝 展示您的支持 - 如果您喜欢本内容,请给一个 ⭐️ | 在 Twitter 上分享 | 关注我  
# ✔️ 免责声明
本项目仅可用于教育目的。未经授权针对目标系统使用此软件是违法的,滥用此软件造成的任何损害作者概不负责。