一种应用SGM-SQL注入模型驱动web应用渗透测试的方法

文档序号:6423646阅读:186来源:国知局
专利名称:一种应用SGM-SQL注入模型驱动web应用渗透测试的方法
一种应用SGM-SQL注入模型驱动web应用渗透测试的方法
技术领域
本发明属于web应用安全漏洞检测和基于模型的测试技术领域,具体涉及一种应 用SGM对SQL注入攻击建模、以模型驱动SQL注入安全漏洞渗透测试的方法。
背景技术
随着互联网技术的发展,Web应用的安全漏洞问题日益成为显著的互联网络安全 问题。其中危害最为严重的漏洞之一就是SQL注入攻击漏洞(SQL injection)。SQL注入 攻击是攻击难度不高、但造成后果严重、且影响普遍的一类安全漏洞,需加以关注研究。软件的安全测试是检测web应用是否存在安全漏洞的有效方式。当前对于web应 用安全漏洞的测试主要包括两种方式源码分析(白盒测试)和渗透测试(黑盒方式)。渗透测试是web应用安全漏洞测试研究的重要内容,是当前web应用安全漏洞测 试的主要手段。一方面,web应用本身的复杂性和变动性,使得源码分析(白盒测试)方式 分析web应用安全漏洞较为困难、不易大范围实现;另一方面,渗透测试是基于攻击者角度 测试系统是否安全,这符合人们对于web应用安全的理解逻辑web应用是否安全,取决于 其在攻击面前是否有不利于安全期望的行为反应。从逻辑上讲,考察web应用是否安全,即 是要测试其在恶意攻击中反应动作如何。故渗透测试以模拟攻击的方式揭示web应用的安 全程度,能够提供更为可信的安全测试结果。目前对于web应用的渗透测试主要问题是其测试准确度不高。这由很多原因造 成,如存在以下亟待解决的研究问题1)缺乏对web应用安全漏洞准确定义和描述的研究, 造成测试中缺乏准确判定漏洞存在性的准则;2)对安全漏洞渗透测试用例规则生成和表 达问题的研究不足,用例使用盲目性高、测试效果差;幻缺乏宏观对提高测试准确度要素 的概括,未从宏观指出渗透测试准确度受哪几个关键因素影响、进而指明提高测试准确度 应从哪几方面协同展开研究等。当前尚未见到对web应用软件安全漏洞测试理论与技术的 全面、系统性的研究。这些问题的存在,造成了当前web应用渗透测试准确度较低。

发明内容本发明的目的是提高当前web应用安全漏洞渗透测试准确度,提出一种应用 SGM-SQL注入攻击模型驱动web应用安全漏洞渗透测试的方法。该方法通过定义模型驱动的测试框架,以框架中的SGM-SQL注入模型表达的信息 为指导,定义SQL注入安全漏洞形式化定义和渗透测试用例的形式化表述体系,为渗透测 试提供漏洞存在性准确判定准则和有序完备的测试用例,从而提高渗透测试准确度,弥补 当前渗透测试准确度不高的缺点。本发明提供的应用SGM-SQL注入模型驱动web应用渗透测试的方法包括步骤1、定义SGM-SQL注入攻击安全漏洞渗透测试框架;步骤2、根据对SQL注入攻击行为进行抽象,定义本发明所述SGM-SQL注入攻击模 型;
步骤3、根据步骤2定义的SGM-SQL注入攻击模型,定义SQL注入安全漏洞的形式 化定义集合;步骤4、根据步骤2定义的SGM-SQL注入攻击模型,定义生成SQL注入攻击参数或 称测试用例的形式化表达体系集合;步骤5、定义生成步骤3和步骤4所述集合的实例化方法和结果;步骤6、定义SGM-SQL注入安全漏洞渗透测试算法,应用步骤5的实例化结果进行 web应用SQL注入安全漏洞渗透测试。本发明步骤1定义了攻击模型驱动的web应用安全漏洞渗透测试框架(

图1),框 架通过SGM-SQL注入攻击模型所表述的SQL注入攻击规律信息,对SQL注入的攻击位置、 安全漏洞判定准则、注入参数或称测试用例规则三大测试要素进行指导,包括框架中的 SGM-SQL注入攻击模型“探查WEB输入点”子任务节点表述信息指导查找web应用的SQL注 入攻击位置A ;SGM-SQL注入攻击模型中“窃取系统信息”、“绕过认证”、“运行恶意命令”子 目标节点表述信息指导产生较准确的安全漏洞判定准则D ;SGM-SQL注入攻击模型中构造 注入内容的诸子节点所表述信息指导生成条理化注入参数或称测试用例规则I。SGM-SQL 注入攻击模型通过对此三项要素的指导,实现对最底端的实际测试活动在识别攻击位置、 测试用例和判定安全漏洞存在三方面的支持。本发明步骤2应用安全目标模型(SGM),基于对当前SQL注入攻击手段的全面考 察,对其攻击行为进行抽象,定义SGM-SQL注入攻击模型(图2)。此攻击模型是根据SGM 的建模理论方法,将对web应用的SQL注入攻击实际手段进行抽象表达将SQL注入攻击分 为窃取系统信息、绕过认证、运行恶意命令三大子类,分别以SGM的子目标节点表述。其中 窃取系统信息子类又分为盲注入和注入获得可利用错误信息两个子类,各自由SGM子目标 节点表述;运行恶意命令子类又分为注入运行SQL命令和注入运行注入运行存储过程两个 子类,分别以SGM的子目标节点表述。盲注入子目标节点上方以SGM子目标节点描述此类 攻击所需注入的攻击注入参数类型时间推断命令和条件式,及探查web输入点的子任务。 注入获得可利用错误信息子目标节点上方以SGM子目标节点描述此类攻击所需注入的攻 击注入参数类型异常字符和不可执行命令,及探查web输入点的子任务。绕过认证子目标 节点上方以SGM子目标节点描述此类攻击所需注入的攻击注入参数类型条件式和异常字 符,及探查web输入点的子任务。注入运行SQL命令子目标节点上方以SGM子目标节点描 述此类攻击所需注入的攻击注入参数类型条件式和可执行命令,及探查web输入点的子 任务。注入运行存储过程子目标节点上方以SGM子目标节点描述此类攻击所需注入的攻击 注入参数类型可执行命令,及探查web输入点的子任务。根据SGM的建模规则,子目标节 点之间以单向箭头及AND、OR操作符表述子目标间上述的分类依赖关系。本发明步骤3所述的定义SQL注入安全漏洞的形式化定义集合,是用形式化语言 准确定义SQL注入攻击漏洞的行为特征,定义web应用对攻击注入有怎样的反应、动作以判 定是否有SQL注入安全漏洞,具体内容包括设攻击者为attacker ;受测web应用记为WA ;根据SGM-SQL注入攻击模型的描 述定义1 某WA存在SQL注入安全漏洞,记作SQLI (WA),则SQLI (WA) ^ I (WA) V R(WA) V L(WA)(1)
定义2 =SQL注入窃取系统信息,记作I (WA)I (WA) ^ deformSInject (WA) V blindlnject (WA)(2)定义3 :SQL注入诱发错误信息,表示攻击者可通过注入异常字符或无法执行的命 令来诱发web应用错误信息,从中获得有价值的信息,记作def0rmSInject(WA);deformSInject (WA) ο· (attacker, input e Deformed characters V attacker, input e Deformedcommands) Λ information e WA. response (attacker, input), error Λ attacker. GET_knowledge(information);
(3)attacker, input表示攻击者向WA提交的输入;Deformed characters表示异常字 符集合、Deformed commands表示可诱发错误信息的异常命令语句,两者的主要目的在于诱 发干扰web应用产生错误信息;attacker. GET_knowledge ()表示攻击者可获得有利于攻击的信息; WA. response ()表示WA对输入的反应;WA. response, error表示WA产生出错信息。定义4 :SQL注入盲注入,记作blincnnjeCt(WA)。如模型所示,其包括时间推断 timing_inference ()禾口条件猜角军 condition_inference ()两禾中方式blindlnject (WA) ο· timing_inference(WA) V condition_inference(WA);
(4)timing_inference (WA) ^ attacker, input i,j ^ I N_ conditional Λ true (attacker, inputi) Φ true (attacker, input j) 一 information ^ WA. respοηse (a11acker. input i). time Φ WA. response (attacker, input j) . time Λ attacker. GET_knowledge (infor mat ion) Λ (true (attacker, inputi) = true (attacker, input j) 一 WA. response(attacker, input i). time = WA. response (attacker, inputj). time);
(5)condition_inference (WA) o· attacker, input i,j e IFC_ conditional Λ true (attacker, inputi) Φ true (attacker, input j) 一 information ^ WA. response (attacker, input i) . state Φ WA. response(attacker, input j). state Λ attacker. GET_knowledge (infor mat ion) Λ (true(attacker, inputi) = true(attacker, input j) 一 WA. response (attacker, input i). state = WA.response (attacker, inputj). state);
(6)定义IN_conditional为时间推断命令的条件式;IFC_conditional为用于条件 猜解的条件式;定义true (conditional)为条件式conditional成立与否状态,即可确定 的其真或假(成立/不成立)两种状态;WA. response (). time为WA对输入的时间反应; WA. response (). state 为 WA 的反应状态。定义conditional为符合SQL语法规范的条件式集合;TRUE conditional表示 恒为真的条件表达式集合;FALSE conditional为恒不成立(为假)的条件式;且TRUE conditional, FALSE conditional, IN_conditional, IFC_conditional e conditional.定义5 =SQL注入运行恶意命令攻击,表示攻击者可向WA注入SQL语法允许的、符合攻击者目的的命令并运行。记作R(WA);R(WA) ^SQLRuning(WA) V SPRuning(WA) ;(7)SQLRuning(WA)表示web应用可被注入SQL语句或条件进行运行;SPRuning (WA) 表示攻击者可向web应用注入命令语句,运行已有的系统存储过程或自定义过程。即SQLRuning(WA) o· (attacker, input ^ SQL commands V attacker, input ^ AD_ conditional V attacker, input ^ TRUE conditional) Λ WA. response (attacker, input). run = = true ; (8)SPRuning (WA) ^ attacker, input ^ stored procedures Λ WA. response (attacker, input) . run = = true ; (9)SQL commands表示可执行的SQLi吾法语句集合;AD_conditional表示攻击者在原 SQL命令末尾额外注入的条件,其目的是改变原命令所涉及的记录范围,实现更多查询、删 除等记录范围,AD_conditional e conditional ;stored procedures 表示可执行的 web 应 用存储过程集合;WA. response (). run表示web应用对攻击者注入的命令是否予以执行。定义6 =SQL注入绕过认证,表示攻击者可以通过SQL注入攻击实现绕过web应用 WA的合法用户认证。记作L (WA)。L(WA) ο· (attacker, input e LG_Deformed characters V attacker, input e TRUE conditional) Λ usr, pwd e attacker, input Λ WA. response (usr, pwd). authenticated == true (10)其中authenticated表示是否通过web应用的身份认证;usr,pwd表示输入web 应用的用户名和密码信息。LG_Deformed characters表示可用于干扰web应用登录认证机 制的异常字符。LG_Deformed characters G Deformed characters ο上述在步骤2所定义的SGM-SQL注入模型的基础上,形式化定义了相对较为普适 的SQL注入安全漏洞的形式化定义集合(1-10式),为判定SQL注入漏洞提供较为较广泛适 用的准则。本发明步骤4所述定义生成SQL注入攻击参数或称测试用例的形式化表达体系集 合,是指提出对SQL注入攻击参数的形式化描述方法体系,以提出的形式化符号描述体系, 实现对SQL注入安全漏洞渗透测试用例的有序规则表达和100%覆盖完备描述,具体包括定义安全测试的注入攻击参数算子▽,Vi代表对于某种web应用的注入型安全 漏洞i,可使用的对其攻击的注入参数集合;所定义的攻击参数算子着眼于从攻击目的表 述注入参数,而非描述参数具体形式或格式;算子代表的是用于某种攻击目的的注入参数 集合;上述定义的注入攻击参数算子具体定义内容如下表
权利要求
1.一种应用SGM-SQL注入模型驱动web应用渗透测试的方法,其特征在于该方法包括 以下步骤步骤1、定义SGM-SQL注入攻击安全漏洞渗透测试框架;步骤2、根据对SQL注入攻击行为进行抽象,定义SGM-SQL注入攻击模型;步骤3、根据步骤2定义的SGM-SQL注入攻击模型,定义SQL注入安全漏洞的形式化定 义集合;步骤4、根据步骤2定义的SGM-SQL注入攻击模型,定义生成SQL注入攻击参数或称测 试用例的形式化表达体系集合;步骤5、定义生成步骤3和步骤4所述集合的实例化方法和结果;步骤6、定义SGM-SQL注入安全漏洞渗透测试算法,应用步骤5的实例化结果进行web 应用SQL注入安全漏洞渗透测试。
2.根据权利要求1所述的方法,其特征在于步骤1所定义的本发明所述的SGM-SQL注 入攻击安全漏洞渗透测试框架,通过框架中SGM-SQL注入攻击模型所表述的SQL注入攻击 规律信息,对SQL注入攻击位置、安全漏洞判定准则、注入参数或称测试用例规则三大测试 要素进行指导,包括框架中的SGM-SQL注入攻击模型“探查TOB输入点”子任务节点表述信 息指导查找web应用的SQL注入攻击位置A ;SGM-SQL注入攻击模型中“窃取系统信息”、“绕 过认证”、“运行恶意命令”子目标节点及相关模型表述信息指导产生较准确的安全漏洞判 定准则D ;SGM-SQL注入攻击模型中构造注入内容的诸子节点所表述信息指导生成条理化 注入参数或称测试用例规则I ;SGM-SQL注入攻击模型通过对此三项要素的指导,实现对框 架最底端的实际测试活动在识别攻击位置、测试用例和判定安全漏洞存在三方面的支持。
3.根据权利要求1所述的方法,其特征在于步骤2定义的SGM-SQL注入攻击模型;此攻 击模型是根据安全目标模型(SGM)的建模理论方法,将对web应用的SQL注入攻击纷繁的 实际手段所蕴含的规律进行抽象表达将SQL注入攻击分为窃取系统信息、绕过认证、运行 恶意命令三大子类,分别以SGM的子目标节点表述;其中窃取系统信息子类又分为盲注入 和注入获得可利用错误信息两个子类,各自由SGM子目标节点表述;运行恶意命令子类又 分为注入运行SQL命令和注入运行注入运行存储过程两个子类,分别以SGM的子目标节点 表述;盲注入子目标节点上方以SGM子目标节点描述此类攻击所需注入的攻击注入参数类 型时间推断命令和条件式,及探查web输入点的子任务;注入获得可利用错误信息子目标 节点上方以SGM子目标节点描述此类攻击所需注入的攻击注入参数类型异常字符和不可 执行命令,及探查web输入点的子任务;绕过认证子目标节点上方以SGM子目标节点描述此 类攻击所需注入的攻击注入参数类型条件式和异常字符,及探查web输入点的子任务;注 入运行SQL命令子目标节点上方以SGM子目标节点描述此类攻击所需注入的攻击注入参数 类型条件式和可执行命令,及探查web输入点的子任务;注入运行存储过程子目标节点上 方以SGM子目标节点描述此类攻击所需注入的攻击注入参数类型可执行命令,及探查web 输入点的子任务;根据SGM的建模规则,子目标节点之间以单向箭头及AND、OR操作符表述 子目标间上述的分类依赖关系。
4.根据权利要求1所述的方法,其特征在于步骤3所述的定义SQL注入安全漏洞的形 式化定义集合,是用形式化语言准确定义SQL注入攻击漏洞的特征,定义web应用对攻击注 入有怎样的反应、动作以判定是否有SQL注入安全漏洞,具体内容包括设攻击者为attacker ;受测web应用记为WA ;根据SGM-SQL注入攻击模型描述 定义1 某WA存在SQL注入安全漏洞,记作SQLI (WA),则 SQLI (WA) ^ I (WA) V R(WA) V L(WA)(1)定义2 =SQL注入窃取系统信息,记作I (WA) I (WA) ^ deformSInject(WA) V blindlnject(WA)(2)定义3 :SQL注入诱发错误信息,表示攻击者可通过注入异常字符或无法执行的命令来 诱发web应用错误信息,从中获得有价值的信息,记作def0rmSInject(WA);deformSInject(WA) ο· (attacker, input e Deformed characters V attacker, input e Deformedcommands) Λ information e WA. response (attacker, input). error Λ attacker. GET_knowledge(information) ;(3)attacker, input表示攻击者向WA提交的输入;Deformed characters表示异常字符集 合、Deformed commands表示可诱发错误信息的异常命令语句,两者的主要目的在于诱发干 扰web应用产生错误信息;attacker. GET_knowledge ()表示攻击者可获得有利于攻击的信息;WA. response ()表 示WA对输入的反应;WA. response, error表示WA产生出错信息;定义4 :SQL注入盲注入,记作blin(Hnject (WA),包括时间推断timing_inference () 禾口条件猜角军condition_inference ()两禾中方式blindlnject(WA) ο· timing_inference (WA) V condition_inference (WA);(4)timing_inference (WA) o-attacker. input i, j ^ IN—conditional Λ true (attacker, inputi) Φ true (attacker, input j) 一 information ^ WA. response (attacker, input i). time Φ WA. response(attacker, input j). time Λ attacker. GET_knowl edge (information) Λ (true (attacker, inputi) = true (attacker, input j) 一 WA. response (attacker, input i). time = WA. response (attacker, inputj). time);(5)condition_inference (WA) o· attacker, input i , j e IF C _ conditional Λ true (attacker, inputi) Φ· true (attacker, input j) information e WA. response(attacker, input i). state ^ WA. response(attacker, input j). state Λ attacker. GET_knowledge(information) Λ (true (attacker, inputi) = true (attacker, input j) WA.response(attacker, input i). state = WA. response(attacker, inputj). state) ; (6)定义IN_C0nditi0nal为时间推断命令的条件式;IFC_C0nditi0nal为用于条件猜解的 条件式;定义true (conditional)为条件式conditional成立与否状态,能够确定真或假 即成立/不成立两种状态;WA. response (). time为WA对输入的时间反应;WA. response (). state为WA的反应状态;定义conditional为符合SQL语法规范的条件式集合;TRUE conditional表示恒为 真的条件表达式集合;FALSE conditional为恒不成立的条件式;且TRUE conditional, FALSEconditional, IN_conditional, IFC_conditional e conditional.;定义5 =SQL注入运行恶意命令攻击,表示攻击者可向WA注入SQL语法允许的、符合攻击者目的的命令并运行,记作R(WA);R(WA) ^SQLRuning(WA) V SPRuning(WA) ;(7)SQLRuning(WA)表示web应用可被注入SQL语句或条件进行运行;SPRuning (WA)表示 攻击者可向web应用注入命令语句,运行已有的系统存储过程或自定义过程,即SQLRuning(WA) o· (attacker, input ^ SQL commands V attacker, input ^ AD_ conditional V attacker, input ^ TRUE conditional) Λ WA. response (attacker, input). run = = true ; (8)SPRuning(WA) ο· attacker, input ^ stored procedures Λ WA. response(attacker, input). run = = true ;(9)SQL commands表示可执行的SQL语法语句集合;AD—conditional表示攻击者在原SQL 命令末尾额外注入的条件,其目的是改变原命令所涉及的记录范围,实现更多查询、删除等 记录范围,AD_conditional ^ conditional ;stored procedures 表示可执行的 web 应用存 储过程集合;WA. response (). run表示web应用对攻击者注入的命令是否予以执行;定义6 :SQL注入绕过认证,表示攻击者可以通过SQL注入攻击实现绕过web应用WA的 合法用户认证,记作L(WA);L(WA) ο· (attacker, input ^ LG—Deformed characters V attacker, input ^ TRUE conditional) Λ usr,pwd ^ attacker, input Λ WA. response(usr, pwd). authenticated ==true (10)其中authenticated表示是否通过web应用的身份认证;usr,pwd表示 输入web应用的用户名和密码信息;LG—Deformed characters表示可用于干扰web应用登 录认证机制的异常字符,LG—Deformed characters G Deformed characters ;在步骤2所定义的SGM-SQL注入模型的基础上,形式化定义了相对较为普适的SQL注 入的漏洞定义,1-10式,为判定SQL注入漏洞提供较为广泛适用的准则。
5.根据权利要求1所述的方法,其特征在于步骤4所述定义生成SQL注入攻击参数 或称测试用例的形式化表达体系集合,是指提出对SQL注入攻击参数的形式化描述方法体 系,以提出的形式化符号描述体系,实现对SQL注入安全漏洞渗透测试用例的有序规则表 达和100%覆盖完备描述,具体包括定义安全测试的注入攻击参数算子▽;如Vi代表对于某种web应用的注入型安全漏洞 i,可使用的对其攻击的注入参数集合;所定义的攻击参数算子从攻击目的表述注入参数, 而非描述参数具体形式或格式;算子代表的是用于某种攻击目的的注入参数集合; 上述注入攻击参数算子具体定义内容如下表
6.根据权利要求5所述的方法,其特征在于步骤5所述的定义生成步骤3和步骤4所 述集合的实例化方法和结果,是将步骤3定义的SQL注入安全漏洞形式化定义集合和步骤4 定义的SQL注入攻击参数或称测试用例的形式化表达体系集合,根据受测web应用的具体 情况,转化为测试中的实际测试语句和可操作判定标准。
7.根据权利要求1所述的方法,其特征在于步骤6所述定义SGM-SQL注入安全漏洞渗 透测试算法,算法采用当前web应用安全漏洞渗透测试通行的“爬行-模拟攻击-分析反 应”的步骤,在算法的模拟攻击阶段采用本发明步骤5所述对步骤4定义的测试用例形式 化规则的实例化结果、作为模拟攻击输入,使测试具有有序完备的用例输入;在算法的分析 反应阶段使用本发明步骤5所述的对步骤3定义的安全漏洞形式化定义集合的实例化结 果、作为分析漏洞存在性的依据,使测试具有准确的安全漏洞判定标准;算法最终返回受测 web应用SQL注入安全漏洞的注入点集合作为测试结果,完成测试;算法1. SGM-SQL注入安全漏洞渗透测试算法输入受测web系统;根据SGM-SQL注入攻击模型M所定义的测试用例的形式化表达体系集合I、SQL注入安 全漏洞的形式化定义集合D ;1与D的对应定系S ;根据模型M的表述知识,定义I、D与P的 对应定系T输出受测web系统中存在SWL注入安全漏洞的注入点集合VIP.算法步骤①VIP = Φ ;②自动爬行或人工分析受测web系统,查找其SQL注入攻击的可注入点或称攻击位置 集合P、同时根据T将P中各注入点与I及D建立联系备用,并获取关于可注入点及受测web 系统的相关信息W;③根据W实例化I和D,生成实例化的测试用例I’和D’(I’与D’的对应关系亦为S, I’、D’与P的对应关系亦为Τ);;④Foreach测试目的Clie D ⑤{根据S确定Cli相对应的用例注入参数集合F’i e I’ ⑥根据T确定Cli相对应的可注入点集合Pie P ;⑦Foreach实例化可注入参数f,」eF,i⑧Uf^Pi ! = Φ)⑨{Foreach可注入点pke Pi⑩{将f’ j注入Pk ;O以Cli的实例化形式D’ i e D’作为判定准则集合,判断pk是否存在SQL注入漏洞;O If (Pk存在Cli的SQL注入安全漏洞)thenO {VIP = VIP U pk ;Pi = Pi-Pk ;}β恢复受测web系统至f ’ j注入Pk前的状态;¢5 } //end ofForeach 可注入点 pk }//end of if (Pi ! = Φ)σ }//end of Foreach实例化可注入参数f,j0 } //end of Foreach 测试目的 Cli return VIP。
全文摘要
一种应用SGM-SQL注入模型驱动web应用渗透测试的方法,该方法定义了SGM-SQL注入攻击模型驱动的web应用渗透测试框架,通过定义框架中SGM-SQL注入攻击模型,指导定义SQL注入安全漏洞的形式化定义集合、及对其渗透测试用例的形式化描述体系,从而实现向渗透测试提供准确的安全漏洞存在性判定准则和有序完备的测试用例,据此提出了SGM-SQL注入攻击模型驱动的SQL注入安全漏洞渗透测试算法,以提高web应用SQL注入安全漏洞渗透测试的准确度。本方法实践证明是可信的,具有系统性和完备性,可用于web应用安全漏洞渗透测试领域。
文档编号G06F11/36GK102136051SQ20111011616
公开日2011年7月27日 申请日期2011年5月6日 优先权日2011年5月6日
发明者刘磊, 张天华, 张莹, 田伟, 练坤梅, 许静 申请人:南开大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1