渗透测试步骤

一种探查ActiveX漏洞的简单方法是,修改调用该控件的HTML代码,向其提交自己的参数,然后监控执行结果。

(1)使用第16章描述的相同攻击有效载荷可探查缓冲区溢出之类的漏洞。如果以不受控制的方式触发这种漏洞,很可能会导致负责该控件执行的浏览器进程崩溃。

(2)本质上存在风险的方法通过其名称即可确定,如LaunchExe。在其他情况下,控件名称可能无害或含义模糊,但有时,一些有用的数据,如文件名、URL或系统命令,明显被用作控件的参数。应该尝试将这些参数修改为任意值,确定控件是否按预计的方式处理输入。

我们常常发现,应用程序并没有调用控件的所有方法。例如,一些方法主要用于测试目的、一些已被取代但尚未删除、一些可能是为了方便将来使用或用于自我更新目的。为了对控件进行综合测试,有必要枚举出它通过这些方法暴露的各种受攻击面,并对这些受攻击面进行彻底测试。

有各种工具可用于枚举和测试ActiveX控件方法。iDefense开发的COMRaider就是一个有用的工具,它能够显示一个控件的全部方法,并对每个方法执行基本的模糊测试,如图13-7所示。

img433

图13-7 COMRaider显示某个ActiveX控件的方法

13.6.2 防止ActiveX漏洞

保护本地编译软件组件的安全,防止其受到攻击,是一个广泛而复杂的话题,这不属于本书 的讨论范围。基本上,ActiveX控件的设计者与开发者必须确保恶意Web站点无法调用该控件实施的方法,用以对安装这个控件的用户执行恶意操作。以下是一些应该注意的问题。

img002 应对控件进行以安全为中心的源代码审查与渗透测试,以确定缓冲区溢出之类的漏洞。

img002 控件不得暴露任何使用用户可控制的输入调用外部文件系统或操作系统、本质上存在风险的方法。只需稍微做出一些努力,就可以找到更安全的替代方法。例如,如果有必要启动外部进程,则应编辑一个列表,列出所有可合法、安全启动的外部进程;然后创建单独的方法调用每个进程,或者使用一个方法提取这个列表中的索引号。

为进行深层防御,一些ActiveX控件对发布HTML页面(这些控件即从中调用)的域名进行确认。Microsoft的“SiteLock活动模板库”模板允许开发者将ActiveX控件仅限于特定的域名列表。

一些控件甚至更进一步,要求提交给它们的所有参数必须使用加密签名。如果提交的签名无效,控件不会执行请求的操作。还要注意,如果允许调用这些控件的Web站点存在任何XSS漏洞,那么攻击者就有可能突破这类防御。