OD: ActiveX Vulnerabilities
通过一个精心构造的页面 exploit 第三方软件中的 ActiveX 已经成为一种惯用攻击手段,众多知名软件公司都曾被发现其注册的 ActiveX 中存在严重的缓冲区溢出漏洞,一个被广泛使用的第三方软件漏洞的危害性不亚于 OS 级别的漏洞!
每一个 ActiveX 控件被注册进入系统之后,就会在注册表中建立一个键值来标识自己,这个键值就是 CLSID(Class ID),位于:HKEY_CLASSES_ROOT\CLSID,而能被浏览器加载的控件信息位于:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility
满足下列条件的 ActiveX 控件才能被浏览器正常调用:
* 对已经安装进系统的控件,必须被标记为可安全执行脚本(as safe for scripting,CLSID 项下若有 Implemented Catagories 选项,则为可安全执行脚本)。
* 对未安装进系统的控件,初次调用时浏览器会给出提示警告,在用户确定并同意后,才会下载安装该控件。
当可安全执行脚本选项被取消时,IE 会警告用户:该 ActiveX 控件可能不安全,根据用户的选择,该控件仍可能被调用。
当 ActiveX 控件的 KillBit 被设置后,只要不启用 IE 中的“对未标记为安全的 ActiveX 控件初始化并执行脚本”选项,IE 就不会调用该控件。所以一旦一个控件被设置了 KillBit,就很难再被浏览器自动调用(注:论文 Acctcking Interoperability 中说明某些情况下 KillBit 机制可以被绕过)。
设置 KillBit 的方法:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility\<CLSID>
Compatibility Flags = 0x400
很多程序例如 VC++6.0 自带的工具 OLEViewer 可以查看控件中的信息。
OLEViewer 中的 Type Libraries 选项中包含在系统中注册过的所有 ActiveX 控件信息。
一个 ActiveX 控件文件可以同时向系统中注册多个控件类,从 OLEViewer 中打开一个 ActiveX 后,新的窗口中以 coclass 为前缀即为控件类。
选中某个控件类,可以看到其 uuid;展开某个控件类,通过 Methods 可以查看其内部的接口集合。
选中接口名称,可以在右侧窗口中显示出接口信息。其中无参接口为属性接口,带有 propget 描述,测试时用赋值来传递数据给接口(Name.Interface=data);带参数的接口为函数/方法接口,带有 propput 描述,测试时用参数形式来传递数据(Name.Function(data))。
手工 Fuzz 的流程为:
建立变量,string//负数/小数/大数…
将变量传递给用户接口
保存代码到 web 服务目录下
OllyDbg 挂接 IE 并访问测试文件
分析
自动化的 ActiveX Fuzz 可以使用以下软件:
* COMRaider,带 GUI,由 iDefense LAB 的 David Zimmer 出品,很出色。
* AxMan,必须配合 IE 一起使用。
* Axfuzz,开源工具,可以列举 COM 的所有属性,进行简单 Fuzz。可以阅读这个工具的源码来学习如何编写 ActiveX 插件。
COMRaider 已将测试 ActiveX 控件所需的编写模板、获取用户接口、制定参数、测试结果监视等功能全部整合,能自动区分当前系统中能被浏览器正常调用的 ActiveX 控件,并分析出被测试控件的所有外部接口。
书中有几个实验:
* 超星阅读器 4.0 版本中的 pdg2.dll 的 LoadPage() 缓冲区溢出漏洞分析(Heap Spray)
* 微软 COMCT232.ocx 远程文件判断漏洞(实现穷举目录内容功能)
OD: ActiveX Vulnerabilities的更多相关文章
- OD: Kernel Vulnerabilities Analyze
内核漏洞大多出没于 ring3 到 ring0 的交互中.从 ring3 进入 ring0 的通道,以及操作系统提供的 API 都有可能存在漏洞.例如:驱动程序中 IoControl 的处理函数,SS ...
- OD: Kernel Vulnerabilities
内核漏洞概述 内核漏洞的分类 运行在 Ring0 上的操作系统内核.设备驱动.第三方驱动能共享同一个虚拟地址空间,可以完全访问系统空间的所有内存,而不像用户态进程那样拥有独立私有的内存空间.由于内核程 ...
- OD: File Vulnerabilities & Protocols & Fuzz
IE.Office 等软件有个共同点,即用文件作为程序的主要输入,但攻击者往往会挑战程序员的假定和假设. 文件格式 Fuzz 就是利用畸形文件测试软件的稳健性,其流程一般包括: * 以一个正常文件作为 ...
- OD: Vulnerabilities Analyze Skills
第五篇了,漏洞分析案例 漏洞利用的灵活程度让这门技术变得似乎没有什么原则可言,只有实践后总结提高才能挥洒自如. 漏洞分析方法 目标:弄清攻击原理.评估潜在利用方式及风险等级.扎实的漏洞利用技术是进行漏 ...
- ActiveX控件dsoFramer的使用(word、excel、PPT)
dsoframer是微软提供一款开源的用于在线编辑.调用Word. Excel .PowerPoint等的ActiveX控件.国内很多著名的OA中间件,电子印章,签名留痕等大多数是依此改进而来的. 一 ...
- Flash Activex NPAPI PPAPI 各种网页插件完整安装包下载地址
内容全部是自己手工原创写作的参考内容,完全排除从其他网站COPY的内容信息.如有雷同实属巧合. 奉献给有需求的人士,也给各位解决FLASH安装头疼的问题,正常在线下载安装运气不好的安装半天.运气好 ...
- 盗墓笔记—阿里旺旺ActiveX控件imageMan.dll栈溢出漏洞研究
本文作者:i春秋作家——cq5f7a075d 也许现在还研究Activex就是挖坟,但是呢,笔者是摸金校尉,挖坟,呸!盗墓是笔者的本职工作. 额,不扯了,本次研究的是阿里旺旺ActiveX控件imag ...
- 第一次ActiveX Fuzzing测试
接着上一篇的看雪Exploit me试题. 这道题给出了一个ActiveX的DLL,挖掘这个DLL中的漏洞. 由于从来没有接触过ActiveX的Fuzzing,所以找了一些文章来看.自己动手试验了一下 ...
- Registering DLL and ActiveX controls from code
http://delphi.about.com/od/windowsshellapi/l/aa040803a.htm How to register (and unregister) OLE cont ...
随机推荐
- Linux makefile 教程 非常详细,且易懂(转)
转自:http://blog.chinaunix.net/uid-27717694-id-3696246.html 原文地址:Linux makefile 教程 非常详细,且易懂 作者:Deem_pa ...
- 按钮制作技巧(css精灵效果)-高级版
[转自己以前的文章] 无论用什么语言,大家敲程序的时候多多少少都会遇到做按钮的时候.今天分享一个之前学做按钮的技巧,有人叫做css精灵效果. 通常做按钮的思路都用附图中的第一种:两张图片交互的形式,让 ...
- 78 Subsets(求子集Medium)
题目意思:求解一个数组的所有子集,子集内的元素增序排列eg:[1,3,2] result:[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]思路:这是一个递推的过程 [] ...
- 数据结构 --- 线性表学习(php模拟)
线性表:零个或多个数据元素的有限序列(注:以下都是用的整型数据模拟) 一 顺序存储结构(用一段地址连续的存储单元一次存储线性表的数据元素) 1.1 三个属性:存储空间的起始位置:最大存储容量:当前长度 ...
- linux内核学习之二:编译内核
在linux内核学习系列的第一课中讲述了搭建学习环境的过程(http://www.cnblogs.com/xiongyuanxiong/p/3523306.html),环境搭好后,马上就进入到下一环节 ...
- Visual studio code (vscode)
调东西 : 左上角 File -> Preferences -> Workspace Settings ( User Settings 也可以, 它是 for 所有的 project, W ...
- 用UNetbootin来安装USB LINUX,好像比ULTRA ISO省事
UNetbootin can create a bootable Live USB drive, or it can make a "frugal install" on your ...
- jquery序列化form表单使用ajax提交后处理返回的json数据
1.返回json字符串: /** 将一个字符串输出到浏览器 */ protected void writeJson(String json) { PrintWriter pw = null; try ...
- gcc编译命令
g++ demo.cpp -o demo.exe
- CPP之面向对象篇
引述,物体,对象,物体共性,pre-defined-class=标准库函数; string.a("Ruiy") 成员操作符,操作动作