一种填充式远程漏洞PoC编写方法及漏洞检测方法与流程

文档序号:12467785阅读:744来源:国知局

本发明涉及一种填充式远程漏洞PoC编写方法及漏洞检测方法,属于网络技术领域。



背景技术:

PoC:Proof of Concept,概念验证,指漏洞的验证程序。

Payload:有效荷载,指的是漏洞检测代码实现检测功能的部分的代码,PoC也是Payload的一种。

Fuzzing:模糊测试,一种基于缺陷注入的自动软件测试技术。

通用漏洞:指的是产生于某种通用组件(如Wordpress、Nginx等)的漏洞,这种漏洞的出现可能会影响使用该组件的众多网站、应用。

本发明涉及到了通用漏洞PoC的编写技术。在漏洞日益丰富并且种类多样的今天,通用的漏洞检测方式已经无法满足对新爆发漏洞的检测,于是需要对这些复杂的漏洞针对性的编写PoC,以进行针对性的检测。PoC的编写要求编写者掌握一定的安全能力,能进行漏洞的分析和复现,同时要求编写者掌握一定的编程能力,能将人工手动测试、复现漏洞的过程通过编程实现漏洞PoC,从而将漏洞检测过程自动化,以达到机器代替人工,应对批量化检测的需求场景。

在传统的PoC编写方法中,一个PoC的编写需要先进行漏洞的分析,复现,然后再通过编程实现这个检测过程的自动化,这对编写者的要求颇高,既要要求编写者掌握漏洞分析能力,需要分析漏洞的成因,从而实现构造漏洞Payload进行手工测试,然后同时要求掌握编程能力,通过编写脚本实现手工测试过程的自动化,同时增加测试的可变化,包含可灵活设置测试目标。

在传统的PoC编写过程中,由于PoC的性质决定,要求编写者掌握安全能力的同时需要掌握编程能力,这样才有能力完成一个PoC的编写流程,先通过自己的安全能力实现对漏洞的分析和复现,以及手工测试漏洞,然后通过自己的编程能力编写脚本,将这个手动测试的过程自动化。

而对于很多安全人员来说,由于漏洞的研究需要,能够掌握网络请求技术,明白网络请求的原理,也懂得漏洞的分析和手工测试,但是因为编程能力对于发现漏洞、分析漏洞这个过程不是一个必要能力,所以不一定掌握编程能力,如果在发现漏洞之后,想实现PoC,实现批量化的漏洞测试,就不得不求助于其他人,而自己没有能力进行实现。

所以在传统的PoC编写方法里,只有掌握安全能力和编程能力的安全人员才能进行PoC的编写。



技术实现要素:

针对现有技术中存在的技术问题,本发明的目的在于提供一种填充式远程漏洞PoC编写方法及漏洞检测方法。

本发明的技术方案为:

一种填充式远程漏洞PoC编写方法,其步骤为:

1)创建若干PoC编写模板;

2)用户通过所述PoC编写模板输入目标远程漏洞的测试信息生成该远程漏洞PoC;其中,所述测试信息包括漏洞测试HTTP请求的参数、请求地址、请求方法以及结果判断条件。

一种基于填充式远程漏洞PoC的漏洞检测方法,其步骤为:

3)创建若干PoC编写模板和一模板解析处理框架;

4)用户通过所述PoC编写模板输入目标远程漏洞的测试信息;所述测试信息包括漏洞测试HTTP请求的参数、请求地址、请求方法以及结果判断条件;

5)所述模板解析处理框架对用户填充后的所述PoC编写模板进行解析,获取发起HTTP请求所需要的信息;然后生成HTTP请求并执行;

6)所述模板解析处理框架根据结果判断条件,判断执行该HTTP请求返回的内容是否存在该目标远程漏洞。

进一步的,所述结果判断条件为一个字符串,所述模板解析处理框架判断返回的内容是否存在该字符串,如果存在则判定存在该目标远程漏洞。

进一步的,所述结果判断条件为一个正则表达式,所述模板解析处理框架返回的内容进行正则匹配,如果匹配成功则判定存在该目标远程漏洞。

进一步的,发起HTTP请求所需要的信息包括请求参数、参数内容、请求头部。

进一步的,所述PoC编写模板为JSON格式或者XML格式。

进一步的,通过构建Web页面接收用户输入的所述测试信息,然后将接收的所述测试信息生成JSON格式或者XML格式的文件。

通过长期的漏洞PoC编写经验和总结,本发明发现在漏洞中有一种类型的漏洞都是通过远程的网络请求进行测试,并且主要为HTTP请求;该种漏洞类型的测试通常使用POST或者GET方法进行参数传递,然后判断返回的内容进行漏洞存在与否的判断,于是通过一种固定的PoC编写模板和模板解析处理框架,漏洞编写者不需要懂得编程,只需要将漏洞测试过程中需要进行HTTP请求的参数项和值在模板里进行填充(模板为JSON格式或者XML格式),然后填充返回的内容的判断条件,包含返回内容是否包含某个字符串,是否满足某个正则,模板解析模块包含有通用的处理方法,包含发送网络请求等,可以自动化的解析编写者填充完的模板文件,然后获取填写的内容发送网络请求,进行条件判断,从而实现漏洞检测,而漏洞编写者则只需要进行填充内容就可以实现一个PoC的编写。

这其中模板解析处理框架由Python或者其他语言进行开发实现,包含有模板解析模块,对JSON或者XML文件进行解析,从XML或者JSON文件中用户填写的字段获取值来取得发起HTTP请求所需要的请求参数、参数内容、请求头部等内容;PoC执行模块通过解析模块获取到的HTTP请求所需要的参数,构造HTTP并发起HTTP请求,然后完成一次漏洞的测试,HTTP请求可以通过Python模块requests实现,如下:

import requesst

req=requests.get(url,headers=headers)

return_content=req.text

以上示例代码中,url、headers均为模板解析模块对用户填充的模板解析后获取得到的内容。

在对漏洞结果进行验证的过程中,根据模板解析模块获取得到用户填充的返回内容判断条件,判断条件可以是一个字符串,也可以是正则表达式,如以下是正则表达式的实现方式:

在以上示例代码中,regx的内容是通过模板解析模块解析用户填充后模板从判断条件字段获取到的值,而return_content为框架发起HTTP请求后返回的内容,如果是关键字符串的判断方式,则直接采用以下方式:

与现有技术相比,本发明的积极效果为:

1.本发明总结了远程漏洞的PoC的检测方式,将大部分的远程漏洞的检测方式总结为标准的HTTP请求,简化了PoC的编写流程。

2.本发明通过一种新的方式替代了传统的代码编写的PoC编写方式,让安全人员在无需掌握编程能力的情况下,也可以通过类似编辑文本的方式填空漏洞检测中的请求内容和判断条件,就可以实现一个PoC的编写,降低了PoC编写的门槛和要求。

3.统一的PoC模板,也可以方便的进行批量的调用,方便进行批量化的漏洞检测。

附图说明

图1为本发明方法的流程图。

具体实施方式

下面结合附图,对优选实施例作详细说明。应该强调的是下述说明仅仅是示例性的,而不是为了限制本发明的范围及其应用。

本发明的流程为:

1)由框架提供标准的远程PoC编写模板

2)PoC编写者在已完成漏洞分析和测试的前提下,然后按照模板的填充项从漏洞分析结果中提取模板中所需要填充的项对应的内容进行填充,填充入请求的参数、地址、方法以及结果判断条件(该步骤右边模板是已经标准并且固定的,可以通过在线页面的方式进行填写,而无需拘泥于JSON或者XML格式)。

3)将填充完的PoC编写模板输出给由PoC解析处理框架。

4)PoC解析处理框架解析PoC模板,获取编写者填充的内容。

5)通过PoC执行模块处理编写者填充的内容然后进行PoC的执行。

6)最终输出执行结果。

a)如何实现对填充后PoC编写模板的解析和内容获取?

由框架提供的PoC编写模板是一个固定的文件格式,不管是JSON或者XML格式,文件内容中的字段项(具体字段见下方的示例模板)都是固定的,包含method为HTTP请求方式,任何一份完整的PoC编写模板要求必须包含这些基本字段,框架在对PoC编写模板进行解析的时候只要读取已知对应字段的值即可,比如读取headers字段的内容既可以获得发起HTTP请求时所需要的HTTP请求头。

b)如何实现PoC执行?

框架在对填充后的PoC编写模板进行解析和获取编写者填写的内容后,会根据填写的内容,发起标准的HTTP请求,请求中涉及到的请求地址、请求方法、参数都在PoC编写模板里可以读取到,然后进行请求返回内容的判断即可完成一次PoC的执行。

c)填充式的PoC如何判断目标是否存在漏洞?

在每个填充式PoC中都存在一个名为match的字段,该字段的值代表是否PoC执行成功,在每个填充式PoC中包括目标存在漏洞需要满足的判断条件,该判断条件可以是一个字符串,HTTP请求结果中存在该字符串,则代表目标存在漏洞;也可以是一个正则表达式,对HTTP请求结果进行正则匹配,匹配成功则代表PoC执行成功,并且检测目标存在漏洞。

d)如何进行PoC编写模板的填充?

PoC编写模板原始文件格式为XML或者JSON,其中需要编写者填充的节点或者字段的值为空,需要编写者根据具体漏洞的具体测试方法填写对应的内容,可以通过直接编辑XML或者JSON文件的方式进行填写;为了良好的用户体验,也可以通过构建Web页面,通过填写表单的方式进行填写,然后再生成符合要求的XML或者JSON文件。

PoC规范示例:

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1