本发明涉及漏洞防御技术领域,具体地说是一种点击劫持的测试方法及装置。
背景技术:
点击劫持是一种视觉上的欺骗手段,攻击者使用一个透明的、不可见的iframe,覆盖在一个网页上,然后诱使用户在该网页上进行操作,此时用户在不知情的情况下点击了透明的iframe页面。该透明的页面可能包含一些危险的动作,比如支付、下载木马等,但实际用户并不能看到该透明的页面,而是看到攻击者想要你看到的看似安全的网站。攻击者通过css调整iframe页面的位置,诱使用户恰好点击在iframe页面的一些功能性按钮上,完成攻击。
传统的点击劫持检测是遍历网页的按钮,针对所有的网页的按钮,进行逐个测试,对每个页面逐一进行数据的匹配,测试效率低。
技术实现要素:
本发明实施例中提供了一种点击劫持的测试方法及装置,以解决现有技术中测试效率低的问题。
为了解决上述技术问题,本发明实施例公开了如下技术方案:
本发明第一方面提供了一种点击劫持的测试方法,所述测试方法包括以下步骤:
创建http会话,获取目标网页源代码,检查响应头中是否存在安全字段x-frame-options;
若不存在安全字段,则检查网页源代码中的标签,判断标签内是否存在iframe表单;
若存在iframe表单,则检索所述标签内是否存在button;
若否,则无点击劫持风险,若是,则提示存在点击劫持风险。
进一步地,通过网络爬虫获取所述目标网页源代码,通过正则匹配检查是否存在安全字段。
进一步地,所述检索所述标签内是否存在button的具体过程为:
定义按钮关键字,所述按钮关键字为button必用关键字;
查找网页源码中是否存在所述按钮关键字;
若存在,则存在button,否则不存在button。
进一步地,其特征是,在提示存在点击劫持风险后,所述方法还包括步骤:
测试是否存在点击劫持漏洞。
进一步地,所述测试是否存在点击劫持漏洞的具体过程为:
对当前网页的所有button进行白名单撞库测试,若所述所有button均在白名单内,则当前网页不存在点击劫持漏洞,否则当前网页存在点击劫持漏洞。
进一步地,所述测试是否存在点击劫持漏洞的具体过程为:
对当前网页的所有button进行模拟点击测试,若所有button在模拟点击后均安全,则当前页面不存在点击劫持漏洞,否则当前网页存在点击劫持漏洞。
本发明第二方面提供了一种点击劫持的测试装置,所述装置包括:
预测试模块,用于获取目标网页的源代码,依次判断是否存在安全字段x-frame-options、iframe表单和button,根据判断结果确定是否进行漏洞测试;
漏洞测试模块,用于对网页中的所有button进行漏洞测试,判断当前网页的点击劫持漏洞。
进一步地,所述预测试模块包括:
第一预测试单元,用于检查响应头中是否存在安全字段,若是,则结束测试,若否,则转到第二预测单元;
第二预测试单元,用于判断标签内是否存在iframe表单,若否,则结束测试,若是,则转到第三预测单元;
第三预测试单元,用于判断标签内是否存在button,若否,则结束测试,若是,则转到漏洞测试模块。
进一步地,所述漏洞测试模块包括:
白名单撞库测试单元,用于对当前网页的所有button进行白名单撞库测试,判断当前网页是否存在点击劫持漏洞。
进一步地,所述漏洞测试模块包括:
模拟点击测试单元,用于对当前网页的所有button进行模拟点击操作,判断当前网页是否存在点击劫持漏洞。
本发明第二方面的所述点击劫持的测试装置能够实现第一方面及第一方面的各实现方式中的方法,并取得相同的效果。
发明内容中提供的效果仅仅是实施例的效果,而不是发明所有的全部效果,上述技术方案中的一个技术方案具有如下优点或有益效果:
本发明通过对点击劫持发生所需要必要条件的分析,在进行测试之前,首先对形成点击劫持风险的必要条件不存在安全字段、标签中存在iframe以及标签中存在button进行测试,若具备上述条件,则证明当网页不存在点击劫持风险,不必逐一对标签中的button进行测试,节省测试时间,大幅提高测试效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明所述方法的流程示意图
图2是本发明所述装置实施例1的结构示意图;
图3是本发明所述装置实施例2的结构示意图。
具体实施方式
为能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本发明进行详细阐述。下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本发明省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本发明。
点击劫持的必要不充分条件为1.有iframe标签2.有button按钮。另外,x-frame-options通过禁用iframe加载页面防止点击劫持,从而3.x-frame-options可作为无点击劫持的充分不必要条件。在正式确定是否存在点击劫持漏洞时,还要通过传统测试的方法测试,本发明是依据以上3点提供一个预测,过滤掉不可能发生点击劫持的网页,节省掉不必要的测试过程,提高测试效率。实际上基于button和iframe表单已经可以过滤大部分网页。
如图1所示,本发明点击劫持的测试方法包括以下步骤:
创建http会话,获取目标网页源代码,检查响应头中是否存在安全字段x-frame-options;
若是,则无点击劫持风险,若否,执行下一步;
检查网页源代码中的标签,判断标签内是否存在iframe表单;
若否,则无点击劫持风险,若是,执行下一步;
检索所述标签内是否存在button;
若否,则无点击劫持风险,若是,则提示存在点击劫持风险。
点击劫持利用的是iframe对网页的覆盖,通过一系列引诱使用户点击按钮来达到攻击的操作,而响应头中的安全字段x-frame-options则是禁止加载frame页面的选项。基于此,首先我们检查是响应头种是否存在安全字段x-frame-options。
采用抓包工具、发包工具及浏览器等的现有技术即可创建http会话,通过网络爬虫获取目标网页源代码,通过正则匹配或距离向量判断是否存在安全字段。
通过http会话工具查看到网站的源码从而判断标签是否存在,从而检索会话的网页源码标签内是否存在iframe表单。
检索标签内是否存在button可通过爬虫结合正则匹配的方法,爬虫是自动化获取网页响应的工具,正则匹配是根据制定字符串查找到文件中的关键字。
具体过程为:
定义按钮关键字,其中按钮关键字为button必用关键字;
查找网页源码中是否存在按钮关键字;
若存在,则存在button,否则不存在button。
以上实施例中依次进行安全字段、iframe以及button的校验,能够明显提高测试效率,因网页中只要存在安全字段就不会有点击劫持的风险,且对安全字段的检测,相比于button的检测,工作量更小。
对于iframe检测的必要性通过举例来说:存在一个有button属性的html文件,且没有安全响应头的话,若不检测iframe,则需要进行点击劫持测试,而实际上该html文件并没有iframe标签,依照本方案并不需要进行点击劫持测试。所以针对此种情况本发明能够提高测试的效率。
在提示存在点击劫持风险后,还进行是否进行点击劫持漏洞的测试。
测试是否存在点击劫持漏洞有两种方式,其一方式的具体过程为:
对当前网页的所有button进行白名单撞库测试,若所有button均在白名单内,则当前网页不存在点击劫持漏洞,否则当前网页存在点击劫持漏洞。
测试是否存在点击劫持漏洞的另一方式,具体过程为:
对当前网页的所有button进行模拟点击测试,若所有button在模拟点击后均安全,则当前页面不存在点击劫持漏洞,否则当前网页存在点击劫持漏洞。
如图2、3所示,本发明的点击劫持测试装置包括预测试模块1和漏洞测试模块2。预测试模块1用于获取目标网页的源代码,依次判断是否存在安全字段x-frame-options、iframe表单和button,根据判断结果确定是否进行漏洞测试。漏洞测试模块2用于对网页中的所有button进行漏洞测试,判断当前网页的点击劫持漏洞。
预测试模块1包括第一预测单元11、第二预测单元12和第三预测单元13。第一预测试单元11用于检查响应头中是否存在安全字段,若是,则结束测试,若否,则转到第二预测单元;第二预测试单元12用于判断标签内是否存在iframe表单,若否,则结束测试,若是,则转到第三预测单元;第三预测试单元13用于判断标签内是否存在button,若否,则结束测试,若是,则转到漏洞测试模块。
漏洞测试模块2包括白名单撞库测试单元21,白名单撞库单元21用于对当前网页的所有button进行白名单撞库测试,判断当前网页是否存在点击劫持漏洞。
漏洞测试模块2模拟点击测试单元22,模拟点击测试单元22用于对当前网页的所有button进行模拟点击操作,判断当前网页是否存在点击劫持漏洞。
以上所述只是本发明的优选实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也被视为本发明的保护范围。