NAVEX:针对动态web应用的精确可扩展的漏洞利用生成工具

栏目: 数据库 · 发布时间: 5年前

内容简介:and V.N. Venkatakrishnan, University of Illinois at Chicago

作者: {wh1t3p1g}@ArkTeam

原文作者: Abeer Alhuzali, Rigel Gjomemo, Birhanu Eshete,

and V.N. Venkatakrishnan, University of Illinois at Chicago

原文标题: NAVEX: Precise and Scalable Exploit Generation for Dynamic Web Applications

原文会议:the 27th USENIX Security Symposium

原文链接: https://www.usenix.org/conference/usenixsecurity18/presentation/alhuzali

现代的WEB应用程序多采用动态生成的方式来实现相应功能,这使得对于此类漏洞分析存在挑战性。本文提出采用动静态结合的方式,来自动识别漏洞并构建利用代码。针对提出的方法,作者实现了NAVEX,它是一种可以扩展的自动化漏洞分析和利用生成的工具。在作者的实验中,使用NAVEX对320w行 PHP 代码进行建库分析,发现并生成了204个漏洞利用。

  1. 问题的提出

    1. 发现可达的sink点

      在现代的Web应用中,从source点到sink点的代码执行路径通常跨越多个模块或多个文件,并且在代码执行路径上存在可能的净化函数(1.内置净化函数2.隐式净化函数3.自定义净化函数),对可能存在漏洞的source点进行相关安全处理,导致整个执行链路不可攻击。针对这个问题,作者提出使用约束求解器,来推断该链是否可被攻击。

    2. WEB的动态特性

      现代的Web应用,常通过动态生成表单或链接,静态的方式无法检测此类动态生成的source点。针对这个问题,作者使用了动态执行(爬虫)的方式来解决这个问题。

    3. 可扩展性

      由于现代Web应用的复杂性,构建漏洞利用代码需要分析客户端、服务器端以及数据库端。而且漏洞的类型也在不断增加,这就要求分析 工具 具备可扩展性来应对复杂多变的Web应用。

  2. 方法提出

    程序实现共包括两个部分a. 漏洞sink点识别b. 具体的攻击生成

    NAVEX:针对动态web应用的精确可扩展的漏洞利用生成工具

    1. 漏洞sink点识别

      1. 攻击字典 {sink点,净化函数,遍历类型,攻击语句}
      2. 代码属性图构建

        在代码属性图上添加了净化标签和数据库限制标签,用于后面做约束求解器的条件

      3. 图遍历算法 {前向算法,后向算法}
      4. 漏洞利用字符串生成 得到约束求解器的另一个条件

NAVEX:针对动态web应用的精确可扩展的漏洞利用生成工具

  1. 具体的攻击生成

    1. 动态执行

      采用爬虫的方式,获取表单和链接,使用约束求解器自动化生成符合要求的表单内容提交。

    2. 导向图生成

      由动态执行步骤生成的有向图G=<N,E>,N代表HTTP请求集合,E代表ni->nj的有向边,表示从当前ni这个http请求通过表单或链接的方式定向到nj。

    3. 最终的漏洞利用生成

      利用导向图的搜索算法,找到最终的url,并将参数部分填入相关漏洞Payload

NAVEX:针对动态web应用的精确可扩展的漏洞利用生成工具

3. 讨论

作者在代码属性图的基础上,添加了净化标签和数据库标签,并且使用了净化约束,数据库查询约束和攻击字串的约束作为约束条件,用Z3约束求解器来判断该代码链是否可被攻击。但是注意到的是作者并没有明确处理基于类开发的CMS的漏洞检测,或许这个问题可以进一步发掘。其次关于微软开发的Z3约束求解器的作用,可以在后续的研究中应用这个方法来处理一些类似机器学习的分类效果。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

算法:C语言实现

算法:C语言实现

塞奇威克 / 机械工业出版社 / 2006-9 / 69.00元

本书是Sedgewick彻底修订和重写的C算法系列的第一本。全书分为四部分,共16章,第一部分“基础知识”(第1-2章)介绍基本算法分析原理。第二部分“数据结构”(第3-5章)讲解算法分析中必须掌握的数据结构知识,主要包括基本数据结构,抽象数据结构,递归和树。一起来看看 《算法:C语言实现》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具