基于二阶分片重组盲注的渗透测试方法-乐德广.pdf
《基于二阶分片重组盲注的渗透测试方法-乐德广.pdf》由会员分享,可在线阅读,更多相关《基于二阶分片重组盲注的渗透测试方法-乐德广.pdf(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2017 年 10 月 Journal on Communications October 2017 2017238-1 第 38 卷第 Z1 期 通 信 学 报 Vo l . 3 8 No.Z1基于二阶分片重组盲注的渗透测试方法 乐德广1,2,3,龚声蓉1,吴少刚3,徐锋3,刘文生4(1. 常熟理工学院计算机科学与工程学院,江苏 常熟 215500; 2. 苏州大学计算机科学与技术学院,江苏 苏州 215006; 3. 中科梦兰电子科技有限公司,江苏 常熟 215500; 4. 泉州市公安局公共信息网络安全监察支队,福建 泉州 362000) 摘 要 :针对如何克服当前 SQL 注入渗透测试
2、存在的盲目性,以生成优化的 SQL 注入攻击模式、增强渗透测试攻击生成阶段的有效性,提高对 SQL 注入渗透测试的准确度问题,提出一种基于二阶分片重组的 SQL 盲注漏洞渗透测试方法。该方法通过对 SQL 注入攻击行为进行建模,并以模型驱动渗透测试多形态和多种类的攻击生成,从而降低 SQL 注入渗透测试盲目性,提高其准确度。通过实际的 Web 应用 SQL 注入漏洞测试实验与比较分析,不仅验证了所提方法的有效性,而且通过减少在安全防御环境下对 SQL 注入漏洞检测的漏报,提高其测试的准确度。 关键词 : SQL 注入;渗透测试;攻击模型;二阶分片重组 中图分类号 : TP393 文献标识码 :
3、 A Penetration test method using blind SQL injection based on second-order fragment and reassembly LE De-guang1,2,3, GONG Sheng-rong1, WU Shao-gang3, XU Feng3, LIU Wen-sheng4(1. School of Computer Science & Engineering, Changshu Institute of Technology, Changshu 215500, China; 2. School of Computer
4、Science and Technology, Soochow University, Suzhou 215006, China; 3. Lemote Electronic Technology Co., Ltd., Changshu 215500, China; 4. Public Information Network Safety Supervision Division, Quanzhou Municipal Public Security Bureau, Quanzhou 362000, China) Abstract: How to get rid of the blindness
5、 of current SQL injection penetration test, produce the optimized attack pattern of SQL injection, enhance the effectiveness in the phase of attack generation, and improve the accuracy of vulnerability detection of SQL injection using penetration test, is a big challenge. In order to resolve these p
6、roblems, a new penetration test method using blind SQL injection was proposed based on second-order fragment and reassembly. In this method, the SQL injection attack model was built firstly and then the multiform and multi-type attack patterns of SQL injection pene-tration test driven by the SQL inj
7、ection attack model was produced, which can reduce the blindness of SQL injection pe-netration test and improve the accuracy of SQL injection vulnerability detection. The experiments of SQL injection vul-nerability detection was conducted through the actual Web applications by using proposed method
8、in comparison with current methods. The analysis results of test show the proposed method is better compared with other methods, which not only proves the effectiveness of proposed method, but also improve the accuracy of SQL injection vulnerability detection by reducing false negative in the defens
9、ive environment. Key words: SQL injection, penetration test, attack model, second-order fragment and reassembly 收稿日期 : 2017-09-22 基金项目 :国家自然科学基金资助项目( No.61402057) ;江苏省产学研前瞻性联合研究基金资助项目( No.BY2016050-01) ;江苏省科技计划基金资助项目( No.BK20160411) Foundation Items: The National Natural Science Foundation of China
10、(No.61402057), The Production and Research ProspectiveJoint Research Project of Jiangsu Province (No.BY2016050-01), The Jiangsu Provincial Natural Science Foundation(No.BK20160411) doi:10.11959/j.issn.1000-436x.2017238 万方数据 74 通 信 学 报 第 38 卷 1 引言 Web 在互联网各种业务领域中的广泛应用同时, Web 漏洞却给当前迅速发展的 Web 应用带了极大的安全
11、威胁1。通过安全漏洞测试来确定 Web 应用是否存在漏洞, 是保障 Web 应用安全性的必要措施2。渗透测试是一种根据信息收集模拟攻击和反应分析的方式检测软件安全漏洞的有效方法,特别是在确定 Web 应用安全漏洞(如 SQL 注入漏洞、XSS 漏洞等)存在性方面具有许多优点,因此对其研究成为近年来的热点3。 但在对 Web 应用的 SQL注入渗透测试的相关研究中4,5,传统的一阶 SQL注入渗透测试方法由于受到 WAF 和代码防御等防御技术的影响,已经无法有效检测出由新型二阶SQL 注入6等引起的 Web 应用安全漏洞。 而针对二阶 SQL 注入渗透测试, 目前尚未有适当理论方法来指导生成多种
12、类、 多形态的 SQL 注入渗透测试的模拟攻击输入以准确测试 Web 应用防御机制充分性,发现更全面的 SQL 注入漏洞。这使二阶 SQL 注入渗透测试盲目性较强、易造成漏报而降低渗透测试准确度。 为此, 本文研究如何从优化 SQL 注入攻击方式的角度,提高 SQL 注入渗透测试准确度,并提出一种基于二阶分片重组的 SQL 盲注渗透测试方法。 该方法通过对 SQL 注入的攻击行为建 立新的攻击模型,描述 SQL 注入攻击行为的全貌和逻辑规律,提高渗透测试中考虑攻击行为的全面性,指导建立二阶分片重组 SQL 盲注的新型注入攻击方式, 并提出对应的渗透测试方法。通过该方法最终生成全面反映二阶分片重
13、组盲注攻击手段和攻击输入的优化SQL 注入渗透测试用例,以触发更充分的 SQL 注入漏洞,减少渗透测试漏报率,提高对 Web 应用SQL 注入渗透测试准确度。 2 相关工作 在 Web 应用渗透测试研究中,文献 7指出信息收集、 攻击生成和反应分析是 Web 应用渗透测试的 3 个基本步骤,与 SQL 注入渗透测试的 SQL 注入点查找、 SQL 注入攻击和 SQL 注入漏洞识别 3 个阶段相对应,是影响和决定渗透测试准确度的关键因素。 为提高 SQL 注入渗透测试的准确度, 目前 SQL注入渗透测试领域主要通过提高对 Web 应用的输入点发现能力或改进漏洞分析反应等研究降低漏报或误报。例如,
14、在增强渗透测试中爬行方式收集信息能力的研究方面,文献 8提出一种基于模型分析改进爬虫的 SQL 注入漏洞测试方法, 增加渗透测试信息收集的完整性。文献 9提出一种自动生成有效输入并填入 Web 应用表单的改进爬虫技术, 以此发现更多的 Web 应用输入点、提高渗透测试覆盖面。在非爬行方式的渗透测试信息收集改进方法方面, Alenezi10提出一种新的基于源码静态分析的渗透测试信息收集方法,解决在测试复杂 Web 应用时, 一般爬行方式无法查找到 Web 应用某些类型输入点的问题。 对于渗透测试反应分析阶段的研究, Kim11通过数据库日志的数据挖掘, 比较 Web 应用中正常与受攻击后 SQL
15、 查询树结构,提出一种改进的 Web应用反应分析方法检测 SQL 注入漏洞。 Jang12提出一种基于有效识别 SQL 查询结果大小的反应分析方法,该方法通过识别送往后台数据库执行的 SQL命令查询结果大小的不同反应来判定 SQL 注入漏洞, 以克服 Web 应用受攻击后返回信息大小不明确造成漏报的问题。 此外, 文献 13基于标记图 ( token graphs)对 SQL 命令行为进行建模,并通过 SVM机器学习比较 Web 应用正常的行为与其受到攻击后的反应来判定 SQL 注入安全漏洞。 以上研究工作主要关注渗透测试的信息收集彻底性和漏洞反应分析正确性 2 个方面的问题,而对于 SQL
16、注入攻击生成的有效性则缺乏研究。例如,文献 10等相关研究将攻击生成作为外部因素,仅关注如何使其所引用攻击输入有效到达可攻击输入点,而不对所引用的攻击输入自身的多样性或充分性进行分析。 在 SQL 注入渗透测试的攻击生成研究中,文献 14提出随机枚举方式生成攻击输入。这种随机枚举的渗透测试方式难以做到全面测试 Web 应用,确定其防御措施是否充分,难以触发隐藏于不充分防御措施后的 SQL 注入漏洞,从而易造成对 SQL注入漏洞的漏报或误报而降低渗透测试准确度。文献 15提出基于组合规避的覆盖准则实例化 SQL 注入测试数据,但未对包括渗透测试用例多样性或充分性在内的攻击生成有效性问题进行研究。
17、文献 16提出一种基于静态分析的二阶SQL 注入漏洞测试工具,但是无法准确定位存储阶段污染数据的中间存储位置和无法判断触发阶2017238-2万方数据第 Z1 期 乐德广等:基于二阶分片重组盲注的渗透测试方法 75 段污染数据到达危险函数前是否经过有效过滤,因此,存在误报率和漏报率高的问题。文献 17提出基于动静态结合分析的二阶 SQL注入漏洞检测方法,但是该方法只考虑在存储阶段拼接了污点信息,且把完整 SQL 代码写在同一语句中的情况,因此,同样存在过高的漏报率。说明当前对SQL 注入渗透测试的相关研究中,未充分考虑如何采用多形态、多种类的攻击输入全面测试 SQL注入漏洞存在性的问题。此外,
18、也没有进一步研究防御措施的防护充分性问题,如果将未知是否充分的防御措施都视为已安全而不存在漏洞,会引起漏洞渗透测试的漏报现象。 近几年,一些研究中提出了基于模型的渗透测试方法18,为渗透测试相关要素建模,以模型规范或指导渗透测试过程。例如,文献 19提出一种将Web 应用开发过程与渗透测试活动结合,以实现安全知识共享的模型驱动渗透测试框架。此外,一些专家也对基于攻击树的 SQL 注入攻击建模方法进行了研究20,21。但是,这些研究中所提出的模型方法仍然未对上述分析的如何以模型指导 SQL 注入渗透测试攻击方式、增强攻击生成有效性来判定SQL 注入漏洞及其防御充分性进行研究,未对如何通过改进攻击
19、方式以提高 SQL 注入渗透测试准确度进行明确阐述。因此,本文针对目前 SQL 注入攻击生成和攻击建模方面存在的不足及亟待解决的问题,进行基于攻击模型的 SQL 注入渗透测试研究, 以形式化建模指导 SQL 注入渗透测试攻击方式的生成及优化,达到提高渗透测试准确度的目的。 3 SQL注入攻击建模 SQL 注入攻击建模将实际的 SQL注入攻击行为转化为模型化描述,为渗透测试提供攻击位置、攻击输入、 SQL 注入漏洞反应规律方面的信息。根据SQL 注入特点,在建模描述其攻击行为时,目前采用的方法有基于攻击树( AT, attack tree)和安全目标模型( SGM, security goal
20、model)等方法21。 AT 模型存在对 SQL 注入攻击输入描述不全面, 描述规律不能适应所有攻击场景或未对攻击输入规律进行描述等问题22。此外,在 AT 模型中攻击行为和结果都用节点表示,容易造成混乱,树分支和节点易产生冗余和重复等缺点。 SGM 是一种用来描述漏洞、安全特性、攻击或安全软件开发的新型建模方法。因此,本节采用基于 SGM 的 SQL注入攻击建模, 所建立的模型从攻击目标角度描述SQL 注入攻击规律,使所提出的 SQL 注入攻击模型能够更好地描述 SQL 注入攻击输入规律。实现通过模型表达 SQL 注入攻击位置、攻击输入和漏洞反映规律信息,同时使所建立的 SQL 注入攻击模
21、型减少表达上的冗余,并可以表述 SQL 注入攻击输入分类等方面的信息, SGM 的建模规则如表1 所示。 表 1 安全目标模型建模图例 图形化符号 描述 根 与 SGM 无关联的子目标 与 SGM 关联的子目标 子目标之间的依赖边 与( AND)操作符 或( OR)操作符 子目标之间的信息边 在表 1 中,根节点表示可以通过实现各子目标而达到的总目标,每个 SGM 只能有一个根节点,其图形化符号用圆角矩形表示。子目标表示一个有助于实现或阻止实现模型总目标的局部目标,每个SGM 可以含有多个子目标,其中,白色的矩形符号表示和 SGM 无关联且有助于实现总目标的子目标。白色六边形符号表示和 SGM
22、 相关联且有助于实现总目标的子目标, 黑色六边形符号表示和 SGM 相关联且阻止实现总目标的子目标。操作符表示子目标之间可实现的关系,包含与( AND)和或( OR) 2 种。依赖边表示子目标之间 AND 或 OR 的依赖关系,用一根带箭头的实线符号表示。例如,一根从 A 指向B 的依赖边表示为了实现本模型所描述的总目标,子目标 A 与 B 应当依次实现。每个子目标节点还可以有一个或多个信息口,用于产生(源)或输入(目的)信息。子目标之间传递信息的情况用信息边表示,其图形化符号为带箭头的虚线。 由于 SGM是描述安全相关的行为目标, 因此,基于 SGM 对 SQL 注入攻击建模,需定义 SQL
23、 注入攻击的目标。首先,从攻击总目标角度对 SQL注入攻击规律进行宏观描述,将 SGM 中的根节点表示为实现 SQL 注入攻击的总目标。 然后, 将 SQL注入攻击内在规律描述向 SGM 的子目标描述方式转化,即自底向上描述、按照攻击总目标,将实现这个总目标的攻击分为窃取系统信息、 绕过认证和2017238-3万方数据 76 通 信 学 报 第 38 卷 注入运行恶意命令 3 类子目标。接着,模型进一步向上分别描述实现这 3 种子目标各自所需的攻击子目标,如注入运行 SQL 命令需要查找 Web 应用注入点、注入条件式或注入可执行命令的子目标等, 同样其他各攻击子目标的描述也是自底向上表达要实
24、施的攻击子目标, 直到模型最上端的一系列攻击注入子目标和查找 Web 应用注入点攻击子目标。新的基于 SGM 所建立 SQL 注入攻击模型如图 1 所示。 在图 1 中,对模型节点进行分层描述,并加入了对 SQL 注入攻击位置信息和漏洞反应规律、反作用的描述。从图 1 中可以看出,模型中自上而下每条不含反作用标节点的路径代表一种攻击子目标的过程。其中,最上端描述攻击输入,中部子目标节点描述 Web 对攻击输入的漏洞反应、即 Web有何种反应时为具有 SQL 注入安全漏洞。模型中黑色六边形的反作用节点表示 SQL 注入攻击被Web 应用防御拦截造成不成功的攻击路径。 将图 1中自上而下实现每种攻
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 分片 重组 渗透 测试 方法 乐德广
限制150内