随着公众对Web安全的聚焦,越来越多的行业领域如运营商、政府电子政务互动平台、企事业门户网站及教育医疗机构等都已经开始频繁使用扫描器去评估其风险性,以便提前发现潜在的安全隐患,及时安全加固以保障网站业务的正常持续运转。反观扫描器使用群体的变化,已由专业安全人士更多地转向网站安全运维人员,这就给扫描器自身的可用性和易用性提出高要求。而扫描器的核心能力,如何帮助用户快速发现漏洞、识别漏洞并定位漏洞,以及什么样的验证场景可以确定漏洞真实存在就成为亟待解决的首要问题。

1. 现状

由于Web安全技术功底的薄弱,在网站安全运维人员眼里,现有的扫描器依然显得过于专业。一份扫描报告中,大量显示漏洞存在的URL、弱点参数以及扫描器自身所构造的各种请求等晦涩难懂的内容,常常让安全运维人员不知所云,甚至不得不专请专业人员进行二次解读。而且这种易读性差的扫描报告不能让运维人员第一时间识别出漏洞风险分布并制定相应漏洞的修补计划,从而无法真正贯彻防微杜渐的安全思路,保障网站业务安全可靠地运行。

由于受限于目标网站环境的复杂性、漏洞种类的多样性,扫描器或多或少存在误报。为保证漏洞发现的权威性,增强报告内容的可信度,扫描器本身必须能清晰地给出:漏洞是如何被发现的,哪些页面及参数有问题,风险详情如何,有无重现该漏洞发现的场景分析文件,向导式的二次验证等。而如何对发现的漏洞进行权威验证这一点,一直是业界关注的焦点话题。

web 漏洞检测(场景可视化重现技术)(1)

图 1 需要二次解读的扫描报告

2 可视化漏洞分析

基于现状,绿盟科技提出了一种可视化的Web漏洞分析方法。该方法依据漏洞种类的不同,从扫描器判断漏洞存在的角度:首先从逻辑层面给出相关标准,作为判断此漏洞是否存在的条件依据;其次从漏洞触发层面列出该漏洞发现时的具体交互方式,如通过哪些检测手段,构造哪些URL参数;再从数据支撑层面列出漏洞检测过程中所交互的所有数据信息,如扫描器发送的网络请求与站点响应报文以及对应的具体页面源码文件等;最后,整个漏洞分析过程统一打包成离线场景文件。此方法可让评估者轻松还原漏洞发现场景,重现漏洞发现的每一步直至全过程,真正实现漏洞分析过程的简单可视、通俗易懂,进而为下一步可能进行的漏洞误报确认提供可视化验证场景,达到准确识别的权威效果。

如图2所示,整个可视化漏洞分析方法为用户提供了一个循序渐进,全面认知漏洞的过程。

1、 判断标准

Web漏洞的形成有很多因素,不同漏洞的表现形式和产生原因差异很大,扫描器在确认漏洞的同时,需要给出针对该漏洞的判断标准和参考依据。

2、 执行详情

知道漏洞的产生原因和表现形式外,还需要构造可以产生这个漏洞的充分必要条件,明确哪些具体的操作和方法能够触发这个漏洞,使其通过可理解的直观现象展示出来,并最终与判断标准相符合。

3、 过程报文

漏洞的探索和发现不是一蹴而就的,是一个有强烈依赖关系的发包探测、规则匹配的逻辑过程。过程报文还原了整个探测过程中的收发包情况,探测方对被探测Web站点都发送了哪些请求,对方服务器是如何应答的,过程报文都一一记录,为分析漏洞和网站实时响应提供有利数据。

web 漏洞检测(场景可视化重现技术)(2)

图2 可视化漏洞分析方法

以下给出了几种常见的漏洞类型,利用本文所介绍的可视化分析方法分别进行具体阐述。

2.1 XSS漏洞

基于特征值匹配来进行检测的XSS漏洞类型,其常见的检测逻辑如图 3 所示,是一个反复探测和验证的过程。

扫描器通过爬虫爬取Web站点的有效链接后,传递给相关插件进行探测扫描。插件在获取链接后,需要判断此链接是否有存在该漏洞的条件,抽取所有可能存在漏洞的位置点,构造请求URL和参数值去探测和发包,根据该漏洞的表现形式来判断返回的页面是否存在漏洞。

web 漏洞检测(场景可视化重现技术)(3)

图3基于特征值匹配的检测逻辑

对应的特征值匹配检测逻辑条件满足后,漏洞发现条件也同步形成。此时,扫描器会把如下内容一一罗列出来:尝试探测的URL链接,具体的请求方式,在哪个参数字段上构造的特征值,相关的判断标准,最终构造的请求变量和URL语句函数,执行结果与预期结果的差异,页面请求和响应报文结果等漏洞确认的详情。

如图4所示,以探测http://demo.testfire.net/search.aspx?txtSearch=1是否存在跨站漏洞为例,判断标准中给出了是否存在跨站的判断,能够执行构造的特殊字符串。判断执行详情中给出了具体构造的请求URL、修改的参数及参数值。过程报文中的请求及响应页面内,匹配到注入的字符串afbkyz(ozn),在判断是否可以真正被浏览器执行后,在响应页面中(图5)高亮可以被执行的位置。

web 漏洞检测(场景可视化重现技术)(4)

图4 漏洞分析示例

图 5 高亮注入点

这样,就为此类XSS漏洞的发现提供了一个完整的检测可视化过程,让评估者清晰知晓XSS漏洞存在的相关判断依据、具体位置及如何验证和结果对比等。

2.2 SQL盲注

对于像SQL盲注这样的检测是不能通过特征值匹配来检测的,需要构造多次相似请求,根据返回页面的不同来判断,如图 6。

插件在获取到被检测URL后,抽取可能存在漏洞的注入点,会尝试发送三次请求获取充分条件。第一次采样,原始请求,将原始页面内容作为采样标准A;第二次采样,伪真页面B;第三次采样,false页面C。SQL盲注的检测,需要计算B/A和 C/A 之间的相似度,在某个确定的范围内就可以判定是否存在注入。

web 漏洞检测(场景可视化重现技术)(5)

图 6 SQL盲注检测逻辑

此基于相似度对比的检测过程对于评估者来说完全是黑盒的,根本无法获知真假页面之间的区别和差异,直观感受更无从谈起。而若采用本文介绍的可视化漏洞分析方法,如图7-1所示,扫描器通过提供可视化的漏洞检测过程,在判断标准中给出了插件的检测过程和漏洞表现形式,判断详情中给出了发送的伪真、错误请求URL,以及原始URL的请求和对应响应报文。

web 漏洞检测(场景可视化重现技术)(6)

图 7 -1 SQL盲注的漏洞展示

图7-2展示了发送的原始页面和伪真页面的请求以及两者之间的差异,可以看出差异非常小,只有一行代码不同。

web 漏洞检测(场景可视化重现技术)(7)

图7-2 SQL盲注的漏洞展示

图7-3 展示了发送的原始页面和错误页面的请求以及两者之间的巨大差异。

web 漏洞检测(场景可视化重现技术)(8)

图7-3 SQL盲注的漏洞展示

根据如上两组数据的页面相似度对比结果可以清楚看出两者之间的差异,当这个差异落在特定范围内时,就判断SQL盲注存在。从探测到展示,给评估者提供了重现该漏洞的完整场景。

2.3 弱口令猜测

在检测表单登录是否存在弱口令时,扫描器会根据预配置的弱口令列表或者自定义弱口令字典,通过枚举用户名和口令尝试登录,进行扫描确认。如图8所示,在获取到登录页面后,扫描器会根据配置的弱口令进行登录探测。

web 漏洞检测(场景可视化重现技术)(9)

图 8 弱口令猜测检测逻辑

在检测出弱口令漏洞后,会给出具体的用户名、密码。评估者可以直接用给出的弱口令尝试登录漏洞URL。如图9的判断详情中,给出了具体的登录页面,检测出来的弱口令为admin,admin,看到请求响应,发现页面跳转到了主页面,登录成功,表示存在漏洞,从而重现这一探测过程。

web 漏洞检测(场景可视化重现技术)(10)

图 9 弱口令展示

3 结束语

通过上述简单介绍的可视化漏洞分析方法,评估者在看到扫描报告时,通过漏洞的判断标准、执行详情、过程报文,再也无须因不了解漏洞成因而困惑为什么Web环境会存在这样的漏洞,或者质疑是否存在误报,相关漏洞到底是如何被发现和确认的。此外,通过从扫描器给出的离线版漏洞场景文件,可以重现漏洞发现及确认全过程,从而进一步获取漏洞详情,为下一步的漏洞验证、漏洞修复提供更有效的参考数据。

,