Black Widow: 数据驱动的黑盒WEB应用扫描器
2021-05-25 11:56:39 Author: mp.weixin.qq.com(查看原文) 阅读量:128 收藏


原文作者:Benjamin Eriksson, Giancarlo Pellegrino, Andrei Sabelfeld

原文标题:Black Widow: Blackbox Data-driven Web Scanning

原文链接:https://trouge.net/papers/blackwidow_sp2021.pdf

笔记作者:nerd@SecQuan

简介

该文为发表于S&P 2021的Black Widow: Blackbox Data-driven Web Scanning。其研究主要在于设计了一种数据驱动的WEB应用黑盒扫面方法。作者认为,当前在WEB扫描方面的三大支柱分别为导航图建模、遍历和内状态依赖关系追踪。作者同时利用这三种技术,大幅提高了黑盒扫描器的代码覆盖率。

方法

针对作者提出的WEB扫描器三大支柱技术,目前最先进的扫描器们往往侧重于其中的某个单项。因此,作者同时利用这三项技术,从而提高黑盒扫描器的代码覆盖率。由作者给出的伪代码来看,单独任何一项技术都不是非常复杂,但是结合到一起却能够大幅提高扫描器性能。

  1. 导航图建模
    该文所描述的导航图为以客户端状态为节点,动作为边的有向图。与以页面为节点的表示方法相比,这种表示方法能更细粒度地表示使用WEB应用时的实际情况:通过一系列动作,改变应用状态。其中客户端状态具体包括页面状态、URL状态、JS脚本状态;动作具体包括GET请求、表单提交、内联框架和JS事件。为了构建这一导航图,在遍历站点的过程中,扫描器会通过在页面运行前注入监控JS代码(jAk scanner提供)的方式来记录页面触发的JS事件以及DOM的改变。另一方面,为了降低导航图复杂度,避免出现过多相似节点和循环扫描等情况,该扫描器将具有相同URL页面定义为相似页面,并规定了相似页面数量的最大值。此外,为了方便回溯路径,导航图的每个边都用其前一个边进行标记(指向前向边的指针)。
  2. 遍历
    该文使用广度优先遍历法对站点进行遍历。针对整个遍历过程,作者重点介绍了当其扫描器遇到需要先执行特定操作序列的情况时(个人认为是在广度优先搜索时,有些动作会改变状态,破坏特定操作序列的条件,所以在推进深度时需要适当回溯节点),如何避免每次都从头节点开始沿着边执行动作序列,以提高遍历性能。作者首先定义GET请求的边是安全的,不会影响后续动作(并不绝对,为了性能妥协)。当遇到需要先执行特定操作序列的边时,则对其通过前指针进行前向遍历,直到找到第一个安全的边。由于每个导航图的首个边都是GET请求(视为安全),所以必有解。
  3. 内状态依赖关系追踪
    该文在扫描站点时,使用端到端的污点跟踪方法将用户输入与应用的状态关联起来。具体来讲,该扫描器遇到网站可控输入时,随机输入一个含有8个小写字母的字符串,并在其他节点页面寻找该字符串以关联用户输入与应用状态。这一功能能对漏洞扫描提供帮助,作者也在实验部分针对XSS漏洞进行测试。个人认为,相较于一般的漏扫,结合用户输入与应用状态关系发现的漏洞能够在较高程度上确保攻击者构造的Payload能通过一条行之有效的路径到达漏洞点,以降低漏洞误报率。

实验与评估

作者在实验部分主要横向对比了几个WEB扫描器针对数个热门WEB应用的代码覆盖情况。作者定义的代码覆盖为在扫描会话中,执行的代码行数。通过使用Xdebug模块,记录每次请求服务器端调用代码的具体情况,从中统计执行代码的内容与数量,从而分析扫描器们的代码覆盖情况。其结果如下图所示,图中数据分别为Black Widow覆盖而其他扫描器未覆盖的,Black Widow和其他扫描器都覆盖的和Black Widow未覆盖而其他扫描器覆盖了的。

可以看到,Black Widow对于代码覆盖的提高达到63%280%。另外,针对XSS漏洞的挖掘过程中,Black Widow针对漏洞利用路径的构建优于其他扫描器。

安全学术圈招募队友-ing, 有兴趣加入学术圈的请联系secdr#qq.com


文章来源: http://mp.weixin.qq.com/s?__biz=MzU5MTM5MTQ2MA==&mid=2247485872&idx=1&sn=deb8910fc88772c37a692a807d541a3e&chksm=fe2ef63bc9597f2d8ea0bb69a09dddc540e2bb5acb4ea3b2ff6fa78ca8f2ee510dcbe04157e6#rd
如有侵权请联系:admin#unsafe.sh