web白盒扫描方法及装置转让专利

申请号 : CN201210161360.0

文献号 : CN103425929B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 郑海鹏

申请人 : 百度在线网络技术(北京)有限公司

摘要 :

本发明提出一种web白盒扫描方法及装置。其中方法包括以下步骤:搭建web环境;使用关键字遍历所述web环境的静态代码;根据遍历结果并基于词法分析对所述静态代码进行跟踪和/或回溯;当跟踪到风险点并回溯至用户输入时,反馈所述风险点到所述用户输入的过程以及所述风险点的漏洞类型;根据所述漏洞类型、所述风险点以及所述用户输入构造攻击请求;将所述攻击请求发送到所述web环境;以及根据所述web环境对所述攻击请求的响应页面判断所述漏洞是否是真实漏洞。根据本发明实施例的方法,通过构造攻击请求进行真实攻击判断漏洞的真实性,大幅度提高了代码安全审计的准确度,降低误报率,同时大大提高了代码安全审计的效率,降低开发成本。

权利要求 :

1.一种web白盒扫描方法,其特征在于,包括以下步骤:搭建web环境;

使用关键字遍历所述web环境的静态代码;

根据遍历结果并基于词法分析对所述静态代码进行跟踪和/或回溯;

当跟踪到风险点并回溯至用户输入时,反馈所述风险点到所述用户输入的过程以及所述风险点的漏洞类型;

根据所述漏洞类型、所述风险点以及所述用户输入构造攻击请求;

所述根据所述漏洞类型、所述风险点以及所述用户输入构造攻击请求包括以下步骤:根据所述漏洞类型和所述风险点来选择对应的PoC;以及将所述PoC和所述用户输入结合以构造所述攻击请求;

将所述攻击请求发送到所述web环境;以及根据所述web环境对所述攻击请求的响应页面判断所述漏洞是否是真实漏洞。

2.根据权利要求1所述的方法,其特征在于,进一步包括步骤:如果所述漏洞是真实漏洞,则将所述漏洞输出并记录在第一报告中;以及如果所述漏洞不是真实漏洞,则将所述漏洞输出并记录在第二报告中。

3.根据权利要求1或2所述的方法,其特征在于,使用http协议将所述攻击请求发送到所述web环境并使用http协议返回所述响应页面。

4.根据权利要求3所述的方法,其特征在于,根据所述web环境对所述攻击请求的响应页面判断所述漏洞是否是真实漏洞包括以下步骤:获取所述响应页面中的html页面内容;以及将所述html页面内容与正常页面以及所述响应页面对比以确定所述漏洞是否是真实漏洞。

5.根据权利要求3所述的方法,其特征在于,根据所述web环境对所述攻击请求的响应页面判断所述漏洞是否是真实漏洞包括以下步骤:获取所述响应页面中的html页面内容;以及使用关键字对所述html页面内容进行检索以确定所述漏洞是否是真实漏洞。

6.根据权利要求1或2所述的方法,其特征在于,所述漏洞类型包括SQL注入漏洞,CGI源码泄露漏洞,缓冲区溢出漏洞和目录遍历漏洞。

7.一种web白盒扫描装置,其特征在于,包括:搭建模块,所述搭建模块用于搭建web环境;

遍历模块,所述遍历模块用于使用关键字遍历所述web环境的静态代码;

跟踪模块,所述跟踪模块用于根据遍历结果并基于词法分析对所述静态代码进行跟踪和/或回溯;

反馈模块,所述反馈模块用于当跟踪到风险点并回溯至用户输入时,反馈所述风险点到所述用户输入的过程以及所述风险点的漏洞类型;

构造模块,所述构造模块用于根据所述漏洞类型、所述风险点以及所述用户输入构造攻击请求;

所述构造模块用于:

根据所述漏洞类型和所述风险点来选择对应的PoC;以及将所述PoC和所述用户输入结合以构造所述攻击请求;发送模块,所述发送模块用于将所述攻击请求发送到所述web环境;以及判断模块,所述判断模块用于根据所述web环境对所述攻击请求的响应页面判断所述漏洞是否是真实漏洞。

8.根据权利要求7所述的装置,其特征在于,进一步包括:第一输出模块,所述第一输出模块用于在所述漏洞是真实漏洞时,将所述漏洞输出并记录在第一报告中;以及第二输出模块,所述第二输出模块用于在所述漏洞不是真实漏洞时,将所述漏洞输出并记录在第二报告中。

9.根据权利要求7或8所述的装置,其特征在于,使用http协议将所述攻击请求发送到所述web环境并使用http协议返回所述响应页面。

10.根据权利要求9所述的装置,其特征在于,所述判断模块用于:获取所述响应页面中的html页面内容;以及将所述html页面内容与正常页面以及所述响应页面对比以确定所述漏洞是否是真实漏洞。

11.根据权利要求9所述的装置,其特征在于,所述判断模块用于:获取所述响应页面中的html页面内容;以及使用关键字对所述html页面内容进行检索以确定所述漏洞是否是真实漏洞。

12.根据权利要求7或8所述的装置,其特征在于,所述漏洞类型包括SQL注入漏洞,CGI源码泄露漏洞,缓冲区溢出漏洞和目录遍历漏洞。

说明书 :

web白盒扫描方法及装置

技术领域

[0001] 本发明涉及互联网技术领域,尤其涉及一种web白盒扫描方法及装置。

背景技术

[0002] 现有技术的web白盒代码扫描工具采用的扫描技术均为静态代码扫描,具体可分为两种:第一种是从用户输入跟踪变量,进行传递式的静态代码扫描;第二种是根据易产生安全问题的关键字列表遍历,进行代码回溯式的静态代码扫描。
[0003] 由于从用户输入来跟踪变量的传递也是需要关键的,因此目前的白盒代码扫描工具以第二种居多,或者两种同时采用。具体的工作流程如下:
[0004] 1、利用关键字遍历代码;
[0005] 2、基于词法分析模式进行跟踪/回溯代码;
[0006] 3、跟踪至风险点/回溯至用户输入;
[0007] 4、将风险点到用户输入整个过程及其所属漏洞类型输出到报告。
[0008] 现有技术存在的问题是,只是单纯地静态扫描代码,扫描过程中容易因各种代码逻辑、处理方式不同等因素而导致在跟踪/回溯代码期间无法回溯到用户输入,直接将风险点输出到报告,从而导致报告中的结果误报率很高,因此需要人工重新验证报告中代码安全漏洞的真实性,降低工作效率。

发明内容

[0009] 本发明旨在至少解决上述技术问题之一。
[0010] 为此,本发明的一个目的在于提出一种可以提高代码审计的效率和准确度的web白盒扫描方法。
[0011] 本发明的另一目的在于提出一种web白盒扫描装置。
[0012] 为了实现上述目的,根据本发明的第一方面实施例的web白盒扫描包括以下步骤:搭建web环境;使用关键字遍历所述web环境的静态代码;根据遍历结果并基于词法分析对所述静态代码进行跟踪和/或回溯;当跟踪到风险点并回溯至用户输入时,反馈所述风险点到所述用户输入的过程以及所述风险点的漏洞类型;根据所述漏洞类型、所述风险点以及所述用户输入构造攻击请求;将所述攻击请求发送到所述web环境;以及根据所述web环境对所述攻击请求的响应页面判断所述漏洞是否是真实漏洞。
[0013] 根据本发明实施例的web白盒扫描方法,通过构造攻击请求进行真实攻击判断漏洞的真实性,大幅度提高了代码安全审计的准确度,降低误报率,同时大大提高了代码安全审计的效率,降低开发成本。
[0014] 为了实现上述目的,根据本发明的第二方面实施例的web白盒扫描装置包括:搭建模块,所述搭建模块用于搭建web环境;遍历模块,所述遍历模块用于使用关键字遍历所述web环境的静态代码;跟踪模块,所述跟踪模块用于根据遍历结果并基于词法分析对所述静态代码进行跟踪和/或回溯;反馈模块,所述反馈模块用于当跟踪到风险点并回溯至用户输入时,反馈所述风险点到所述用户输入的过程以及所述风险点的漏洞类型;构造模块,所述构造模块用于根据所述漏洞类型、所述风险点以及所述用户输入构造攻击请求;发送模块,所述发送模块用于将所述攻击请求发送到所述web环境;以及判断模块,所述判断模块用于根据所述web环境对所述攻击请求的响应页面判断所述漏洞是否是真实漏洞。
[0015] 根据本发明实施例的web白盒扫描装置,通过构造模块构造攻击请求进行攻击,并通过判断模块根据攻击请求的响应页面判断漏洞的真实性,大幅度提高了代码安全审计的准确度,降低误报率,同时大大提高了代码安全审计的效率,降低开发成本。
[0016] 本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

[0017] 本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中,
[0018] 图1是根据本发明一个实施例的web白盒扫描方法的流程图;
[0019] 图2是根据本发明一个实施例的web白盒扫描方法的流程图;
[0020] 图3是根据本发明一个实施例的web白盒扫描装置的结构框图;以及
[0021] 图4是根据本发明一个实施例的web白盒扫描装置的结构框图。

具体实施方式

[0022] 下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。相反,本发明的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。
[0023] 在本发明的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
[0024] 流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
[0025] 下面参考附图描述根据本发明实施例的web白盒扫描方法。
[0026] 一种web白盒扫描方法,包括以下步骤:搭建web环境;使用关键字遍历所述web环境的静态代码;根据遍历结果并基于词法分析对静态代码进行跟踪和/或回溯;当跟踪到风险点并回溯至用户输入时,反馈风险点到用户输入的过程以及风险点的漏洞类型;根据漏洞类型、风险点以及用户输入构造攻击请求;将攻击请求发送到web环境;以及根据web环境对攻击请求的响应页面判断漏洞是否是真实漏洞。
[0027] 图1是根据本发明一个实施例的web白盒扫描方法的流程图。
[0028] 如图1所示,根据本发明实施例的web白盒扫描方法包括下述步骤。
[0029] 步骤S101,搭建web环境。
[0030] 步骤S102,使用关键字遍历web环境的静态代码。
[0031] 步骤S103,根据遍历结果并基于词法分析对静态代码进行跟踪和/或回溯。
[0032] 步骤S104,当跟踪到风险点并回溯至用户输入时,反馈风险点到用户输入的过程以及风险点的漏洞类型。
[0033] 上述步骤S101至步骤S104的具体实现方法可参照现有技术的静态代码扫描方法,此处不做详细描述。
[0034] 静态扫描之后的报告中必然存在三类信息:风险点,如$sql="select*from tab where id=$id"等;风险点的漏洞类型,如SQL注入,CGI源码泄露,缓冲区溢出、目录遍历、代码执行、越权操作、变量覆盖、信息泄露、代码注入、远程文件包含、本地文件包含、命令执行、URL重定向、文件上传、任意文件下载以及CVE漏洞等;以及用户输入变量,如$_GET['id'],$_POST['name']等。根据上述三类信息可以执行后续的动态扫描过程,具体如下。
[0035] 步骤S105,根据漏洞类型、风险点以及用户输入构造攻击请求。
[0036] 具体地,首先,根据漏洞类型和风险点选择对应的攻击PoC(Proof OfConcept,验证性测试)流程框架。然后,将PoC和用户输入结合构造出攻击请求。
[0037] 例如,静态报告中的SQL注入漏洞的代码片段如下:
[0038] “$id=$_GET['id'];//用户输入
[0039] …各种传递过程…
[0040] $sql="select*from tab where id=$id";//这里是风险点
[0041] …执行SQL…”。
[0042] 那么,根据对风险点的词法分析可确定其漏洞类型属于基于GET请求的数字型SQL注入,从而就可以获取预先编写好的攻击PoC流程框架:
[0043] “and 1=1;and 1=2获取正常页面和错误页面
[0044] order by n判断原始语句返回字段数
[0045] url?uid=1 and 1=2union select 1,2,3进行Union利用
[0046] …(后面略)”。
[0047] 之后,再将PoC结合用户输入变量构造真实的攻击请求即可。
[0048] 应理解,上述示例仅为示意性的实施例,并不用于限制本发明。根据本发明实施例的web白盒扫描方法可以对任何类型的漏洞进行测试,这些均应包含在本发明的保护范围内。
[0049] 步骤S106,将攻击请求发送到web环境。
[0050] 在本发明的一个实施例中,使用http协议将攻击请求发送到web环境并使用http协议返回web环境对攻击请求的响应页面。
[0051] 步骤S107,根据web环境对攻击请求的响应页面判断漏洞是否是真实漏洞。
[0052] 根据本发明的一个实施例,首先获取响应页面中的html页面内容,然后通过与正常页面和响应页面对比或者使用关键字对html内容进行检索等方式判断响应页面中是否包含请求所做操作的反馈结果,如果包含则确定漏洞为真实漏洞,否则不是真实漏洞。
[0053] 例如,在SQL注入的请求中包含如下攻击语句:
[0054] url?id=1 and 1=2union select 1,user(),3+--
[0055] 那么在http响应页面中如果存在数据库user信息,就说明这个漏洞是真实存在的。
[0056] 根据本发明实施例的web白盒扫描方法,通过构造攻击请求进行真实攻击判断漏洞的真实性,大幅度提高了代码安全审计的准确度,降低误报率,同时大大提高了代码安全审计的效率,降低开发成本。
[0057] 图2是根据本发明一个实施例的web白盒扫描方法的流程图。
[0058] 如图2所示,根据本发明实施例的web白盒扫描方法包括下述步骤。
[0059] 步骤S201,搭建web环境。
[0060] 步骤S202,使用关键字遍历web环境的静态代码。
[0061] 步骤S203,根据遍历结果并基于词法分析对静态代码进行跟踪和/或回溯。
[0062] 步骤S204,当跟踪到风险点并回溯至用户输入时,反馈风险点到用户输入的过程以及风险点的漏洞类型。
[0063] 在本发明的一个实施例中,风险点的漏洞类型包括SQL注入,CGI源码泄露、缓冲区溢出、目录遍历、代码执行、越权操作、变量覆盖、信息泄露、代码注入、远程文件包含、本地文件包含、命令执行、URL重定向、文件上传、任意文件下载以及CVE漏洞等。
[0064] 步骤S205,根据漏洞类型、风险点以及用户输入构造攻击请求。
[0065] 具体地,首先,根据漏洞类型和风险点选择对应的攻击PoC流程框架。然后,将PoC和用户输入结合构造出攻击请求。
[0066] 步骤S206,将攻击请求发送到web环境。
[0067] 在本发明的一个实施例中,使用http协议将攻击请求发送到web环境并使用http协议返回web环境对攻击请求的响应页面。
[0068] 步骤S207,根据web环境对攻击请求的响应页面判断漏洞是否是真实漏洞。
[0069] 在本发明的一个实施例中,首先获取响应页面中的html页面内容,然后通过与正常页面和响应页面的对比或者使用关键字对html内容进行检索等方式判断响应页面中是否包含请求所做操作的反馈结果,如果包含则确定漏洞为真实漏洞,否则不是真实漏洞。
[0070] 步骤S208,如果漏洞是真实漏洞,则将漏洞输出并记录在第一报告中。
[0071] 步骤S209,如果漏洞不是真实漏洞,则将漏洞输出并记录在第二报告中。也就是说,风险点通过第二报告输出。
[0072] 根据本发明实施例的web白盒扫描方法,通过将真实漏洞和风险点分别输出形成两个不同的报告,便于用户查看,提升用户体验感。
[0073] 下面参考附图描述根据本发明实施例的web白盒扫描装置。
[0074] 一种web白盒扫描装置,包括:搭建模块,用于搭建web环境;遍历模块,用于使用关键字遍历web环境的静态代码;跟踪模块,用于根据遍历结果并基于词法分析对静态代码进行跟踪和/或回溯;反馈模块,用于当跟踪到风险点并回溯至用户输入时,反馈风险点到用户输入的过程以及风险点的漏洞类型;构造模块,用于根据漏洞类型、风险点以及用户输入构造攻击请求;发送模块,用于将攻击请求发送到web环境;以及判断模块,用于根据web环境对攻击请求的响应页面判断漏洞是否是真实漏洞。
[0075] 图3是根据本发明一个实施例的web白盒扫描装置的结构框图。
[0076] 如图3所示,根据本发明实施例的web白盒扫描装置,包括搭建模块10、遍历模块20、跟踪模块30、反馈模块40、构造模块50、发送模块60和判断模块70。
[0077] 搭建模块10用于搭建web环境。遍历模块20用于使用关键字遍历web环境的静态代码。跟踪模块30用于根据遍历结果并基于词法分析对静态代码进行跟踪和/或回溯。反馈模块40用于当跟踪到风险点并回溯至用户输入时,反馈风险点到用户输入的过程以及风险点的漏洞类型。构造模块50用于根据漏洞类型、风险点以及用户输入构造攻击请求。发送模块60用于将攻击请求发送到web环境。判断模块70用于根据web环境对攻击请求的响应页面判断漏洞是否是真实漏洞。
[0078] 具体地,通过反馈模块40获得的静态扫描报告中必然存在三类信息:风险点,如$sql="select*from tab where id=$id"等;风险点的漏洞类型,如SQL注入,CGI源码泄露,缓冲区溢出、目录遍历、代码执行、越权操作、变量覆盖、信息泄露、代码注入、远程文件包含、本地文件包含、命令执行、URL重定向、文件上传、任意文件下载以及CVE漏洞等;以及用户输入变量,如$_GET['id'],$_POST['name']等。
[0079] 根据上述三类信息,构造模块50首先根据漏洞类型和风险点选择对应的PoC,然后再将PoC和用户输入结合以构造攻击请求。
[0080] 例如,静态报告中的SQL注入漏洞的代码片段如下:
[0081] “$id=$_GET['id'];//用户输入
[0082] …各种传递过程…
[0083] $sql="select*from tab where id=$id";//这里是风险点
[0084] …执行SQL…”。
[0085] 那么,根据对风险点的词法分析可确定其漏洞类型属于基于GET请求的数字型SQL注入,从而就可以获取预先编写好的攻击PoC流程框架:
[0086] “and 1=1;and 1=2获取正常页面和错误页面
[0087] order by n判断原始语句返回字段数
[0088] url?uid=1 and 1=2union select 1,2,3进行Union利用
[0089] …(后面略)”。
[0090] 之后,再将PoC结合用户输入变量构造真实的攻击请求即可。
[0091] 具体地,在本发明的一个实施例中,发送模块60使用http协议将攻击请求发送到web环境并使用http协议返回web环境对攻击请求的响应页面。
[0092] 判断模块70在接收到攻击请求的响应页面后,首先获取响应页面中的html页面内容,然后通过与正常页面和响应页面对比或者使用关键字对html内容进行检索等方式判断响应页面中是否包含请求所做操作的反馈结果,如果包含则确定漏洞为真实漏洞,否则不是真实漏洞。
[0093] 例如,在SQL注入的请求中包含如下攻击语句:
[0094] url?id=1 and 1=2union select 1,user(),3+--
[0095] 那么在http响应页面中如果存在数据库user信息,就说明这个漏洞是真实存在的。
[0096] 应理解,上述示例仅为示意性的例子,并不用于限制本发明。根据本发明实施例的web白盒扫描装置可以对任何类型的漏洞进行测试,这些均应包含在本发明的保护范围内。
[0097] 根据本发明实施例的web白盒扫描装置,通过构造模块构造攻击请求进行攻击,并通过判断模块根据攻击请求的响应页面判断漏洞的真实性,大幅度提高了代码安全审计的准确度,降低误报率,同时大大提高了代码安全审计的效率,降低开发成本。
[0098] 图4是根据本发明一个实施例的web白盒扫描装置的结构框图。
[0099] 如图4所示,根据本发明实施例的web白盒扫描装置,包括搭建模块10、遍历模块20、跟踪模块30、反馈模块40、构造模块50、发送模块60、判断模块70、第一输出模块80和第二输出模块90。
[0100] 搭建模块10用于搭建web环境。遍历模块20用于使用关键字遍历web环境的静态代码。跟踪模块30用于根据遍历结果并基于词法分析对静态代码进行跟踪和/或回溯。反馈模块40用于当跟踪到风险点并回溯至用户输入时,反馈风险点到用户输入的过程以及风险点的漏洞类型。构造模块50用于根据漏洞类型、风险点以及用户输入构造攻击请求。发送模块60用于将攻击请求发送到web环境。判断模块70用于根据web环境对攻击请求的响应页面判断漏洞是否是真实漏洞。
[0101] 第一输出模块80用于在漏洞是真实漏洞时,将漏洞输出并记录在第一报告中。第二输出模块90用于在漏洞不是真实漏洞时,将漏洞输出并记录在第二报告中。
[0102] 根据本发明实施例的web白盒扫描装置,通过使用两个输出模块将真实漏洞和风险点分别输出形成两个不同的报告,便于用户查看,提升用户体验感。
[0103] 应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
[0104] 在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
[0105] 尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同限定。