2.2 SQL盲注
对于像SQL盲注这样的检测是不能通过特征值匹配来检测的,需要构造多次相似请求,根据返回页面的不同来判断,如图 6。
插件在获取到被检测URL后,抽取可能存在漏洞的注入点,会尝试发送三次请求获取充分条件。第一次采样,原始请求,将原始页面内容作为采样标准A;第二次采样,伪真页面B;第三次采样,false页面C。SQL盲注的检测,需要计算B/A和 C/A 之间的相似度,在某个确定的范围内就可以判定是否存在注入。
图 6 SQL盲注检测逻辑
此基于相似度对比的检测过程对于评估者来说完全是黑盒的,根本无法获知真假页面之间的区别和差异,直观感受更无从谈起。而若采用本文介绍的可视化漏洞分析方法,如图7-1所示,扫描器通过提供可视化的漏洞检测过程,在判断标准中给出了插件的检测过程和漏洞表现形式,判断详情中给出了发送的伪真、错误请求URL,以及原始URL的请求和对应响应报文。
图 7 -1#FormatImgID_7##FormatImgID_8# SQL盲注的漏洞展示
图7-2展示了发送的原始页面和伪真页面的请求以及两者之间的差异,可以看出差异非常小,只有一行代码不同。
图7-2 SQL盲注的漏洞展示
图7-3 展示了发送的原始页面和错误页面的请求以及两者之间的巨大差异。
图7-3 SQL盲注的漏洞展示
根据如上两组数据的页面相似度对比结果可以清楚看出两者之间的差异,当这个差异落在特定范围内时,就判断SQL盲注存在。从探测到展示,给评估者提供了重现该漏洞的完整场景。
