CN108664793A - 一种检测漏洞的方法和装置 - Google Patents

一种检测漏洞的方法和装置 Download PDF

Info

Publication number
CN108664793A
CN108664793A CN201710202706.XA CN201710202706A CN108664793A CN 108664793 A CN108664793 A CN 108664793A CN 201710202706 A CN201710202706 A CN 201710202706A CN 108664793 A CN108664793 A CN 108664793A
Authority
CN
China
Prior art keywords
function
required parameter
loophole
program code
end program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201710202706.XA
Other languages
English (en)
Other versions
CN108664793B (zh
Inventor
范宇河
胡珀
郑兴
王放
郭晶
张强
唐文韬
杨勇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201710202706.XA priority Critical patent/CN108664793B/zh
Publication of CN108664793A publication Critical patent/CN108664793A/zh
Application granted granted Critical
Publication of CN108664793B publication Critical patent/CN108664793B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1433Vulnerability analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Debugging And Monitoring (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明公开了一种检测漏洞的方法和装置,属于计算机技术领域。所述方法包括:获取对应目标网页的操作请求,所述操作请求中携带有请求参数;通过所述目标网页的服务端程序代码对所述请求参数进行处理,并根据处理所述请求参数所调用的所述服务端程序代码中的函数,确定所述请求参数对应的处理信息,所述处理信息包括所述函数的标识和经过所述函数处理后的请求参数;如果所述处理信息不满足预设的处理规则,则判定所述服务端程序代码中存在漏洞。采用本发明,可以降低漏洞的漏报率。

Description

一种检测漏洞的方法和装置
技术领域
本发明涉及计算机技术领域,特别涉及一种检测漏洞的方法和装置。
背景技术
Web(网页)检测是利用测试工具(比如代码审计应用程序)按照预设的测试方案和流程对网页进行性能测试,其目的在于检测网页的服务端程序代码中是否存在漏洞。网页的服务端程序代码是该网页的后台服务器中存储的程序代码,后台服务器可以通过运行该服务端程序代码,对用户发送的对应该网页的操作请求进行处理,比如用户登录的操作请求或访问某页面的操作请求等。
在Web检测中,常用的测试方式是白盒审计。白盒审计所使用的代码审计应用程序中,会存储预设的逻辑分析算法,在进行白盒审计时,先将网页的服务端程序代码输入到代码审计应用程序中,代码审计应用程序会根据预设的逻辑分析算法,对输入的服务端程序代码进行逻辑分析,从而确定该服务端程序代码中是否存在漏洞,比如,常见的漏洞有Sql(Structured Query Language,结构化查询语言)注入漏洞、Xss(Cross Site Scripting,跨站脚本攻击)漏洞和上传漏洞等。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
由于代码审计应用程序的分析能力有限,因此,对于一些逻辑比较复杂的程序代码,如果采用白盒审计来检测漏洞,漏洞的漏报率会比较高。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种检测漏洞的方法和装置。所述技术方案如下:
第一方面,提供了一种检测漏洞的方法,所述方法包括:
获取对应目标网页的操作请求,所述操作请求中携带有请求参数;
通过所述目标网页的服务端程序代码对所述请求参数进行处理,并根据处理所述请求参数所调用的所述服务端程序代码中的函数,确定所述请求参数对应的处理信息,所述处理信息包括所述函数的标识和经过所述函数处理后的请求参数;
如果所述处理信息不满足预设的处理规则,则判定所述服务端程序代码中存在漏洞。
第二方面,提供了一种检测漏洞的装置,所述装置包括:
获取模块,用于获取对应目标网页的操作请求,所述操作请求中携带有请求参数;
第一确定模块,用于通过所述目标网页的服务端程序代码对所述请求参数进行处理,并根据处理所述请求参数所调用的所述服务端程序代码中的函数,确定所述请求参数对应的处理信息,所述处理信息包括所述函数的标识和经过所述函数处理后的请求参数;
判断模块,用于如果所述处理信息不满足预设的处理规则,则判定所述服务端程序代码中存在漏洞。
本发明实施例提供的技术方案带来的有益效果是:
本发明实施例中,在通过目标网页的服务端程序代码对请求参数进行处理的过程中,根据处理该请求参数所调用的程序代码中的函数,确定该请求参数对应的处理信息,根据该处理信息来判断目标网页的服务端程序代码中是否存在漏洞,无需对服务端程序代码进行逻辑分析,这样,对于一些逻辑比较复杂的服务端程序代码,仍然可以检测出其中的漏洞,降低漏洞的漏报率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种系统框架图;
图2是本发明实施例提供的一种检测漏洞的方法流程图;
图3是本发明实施例提供的一种界面显示示意图;
图4是本发明实施例提供的一种检测漏洞的方法流程图;
图5是本发明实施例提供的一种检测漏洞的装置结构示意图;
图6是本发明实施例提供的一种检测漏洞的装置结构示意图;
图7是本发明实施例提供的一种检测漏洞的装置结构示意图;
图8是本发明实施例提供的一种分析服务器的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本发明实施例提供了一种检测漏洞的方法,该方法的执行主体为分析服务器。该分析服务器可以是具有检测web漏洞的功能的服务器,如某网站的后台服务器。该分析服务器中可以安装有该网站的服务端程序代码,以及用于检测web漏洞的应用程序。其中,服务端程序代码可以是通过PHP(Hypertext Preprocessor,超文本预处理器)语言编写的程序代码。服务端程序代码中可以包括由技术人员编写的多个函数。当分析服务器接收到对应该网站中某网页的操作请求时,分析服务器可以调用服务端程序代码中的一个或多个函数,对操作请求的处理。例如,分析服务器接收到某网页的访问请求,该访问请求中可以携带有发送该访问请求的用户的标识和需要访问的网页的URL(Uniform Resoure Locator,统一资源定位器),分析服务器可以通过调用服务端程序代码中的函数,判定该用户是否有权限访问该网页,如果有,则返回该网页的网页数据,如果没有,则返回请求失败的提示信息。操作请求中可以携带至少一个请求参数(比如上述用户的标识和需要访问的网页的URL),分析服务器在处理操作请求时,会按照预设的处理方法分别对每个请求参数进行处理,从而实现对该操作请求的处理。
由于技术人员在编写服务端程序代码时,可能会因考虑不周全等原因出现编写的服务端程序代码中存在漏洞的情况,比如Sql注入漏洞、Xss漏洞和上传漏洞等。这些漏洞会影响该网站运行的稳定性和安全性,例如,不法分子可以利用Sql注入漏洞来篡改或获取该网站的数据库中的数据。本发明实施例中,分析服务器可以获取到对应某网页的操作请求后,可以监听处理该操作请求中的请求参数时所调用的函数,根据处理该请求参数时所调用的函数,确定该请求参数对应的处理信息,进而根据该处理信息来判定网页的服务端程序代码中是否存在漏洞,并可以在检测到漏洞时输出漏洞提示信息,例如,可以将漏洞提示信息发送给具有统计功能的统计服务器,由统计服务器汇总并输出各分析服务器发送的漏洞提示信息。如图1所示,为本实施例提供的系统框架图,其中包括终端、分析服务器、路由器和统计服务器。其中,分析服务器可以与至少一个终端连接数据连接,分析服务器和统计服务器之间可以通过路由器来进行通信。
下面将结合具体实施方式,对图2所示的处理流程进行详细的说明,内容可以如下:
步骤201,获取对应目标网页的操作请求,该操作请求中携带有请求参数。
在实施中,目标网页可以是需要进行web检测的任意网页,该操作请求可以是用户在实际应用中对目标网页进行操作时,用户的终端向分析服务器发送的操作请求,也可以是技术人员对目标网页进行操作时,技术人员的终端向分析服务器发送的操作请求,还可以是分析服务器从预设的目标网页的操作请求库中获取到的操作请求。操作请求的内容可以是任意的,例如,可以是对目标网页中进行正常操作所产生的操作请求,也可以是对目标网页进行恶意攻击时的操作请求。该操作请求中携带的请求参数的参数项,可以由该操作请求所使用的协议,以及该操作请求对应的具体操作决定。例如,该操作请求为用于访问网页gamembbs.xxxx.com的HTTP请求,根据HTTP协议的规定,HTTP请求携带的请求参数可以包括Host:gamembbs.xxxx.com.cn、Cookie:JSESSIONID=0DB7145F1F806F4514B23A7EB6BE83CC、Accept-Language:zh-CN,zh;q=0.8等。
分析服务器可以预先存储用于检测web漏洞的应用程序。分析服务器获取到对应目标网页的操作请求后,可以通过该应用程序对该操作请求进行解析,获取其中携带的请求参数,以便进行后续基于该请求参数进行WEB漏洞检测。
分析服务器安装该应用程序的方式可以是多种多样的。例如,第三方设备(可以为终端或其他服务器)中可以存储有该应用程序的数据包和python脚本,通过python脚本为多个分析服务器安装该应用程序的数据包,具体的处理过可以为:第三方设备获取预设的需要安装该应用程序的分析服务器的标识,如IP(Internet Protocol,互联网协议)信息,然后可以在这些分析服务器中,确定未安装该应用程序的分析服务器,将该应用程序的数据包发送给确定出的分析服务器,分析服务器接收到该应用程序的数据包后,可以基于该数据包进行安装处理,并在安装成功后向第三方设备发送安装成功通知,如果安装失败,则可以向第三方设备发送安装失败通知,该安装失败通知中可以携带有失败原因等信息,以使第三方设备根据该失败原因执行相应的处理。这样,可以实现该应用程序的自动安装,无需人工在分析服务器中进行安装操作,从而可以提高安装该应用程序的效率,在分析服务器的数量较大的情况下,可以有效的节约人力成本。
步骤202,通过目标网页的服务端程序代码对请求参数进行处理,并根据处理请求参数所调用的服务端程序代码中的函数,确定该请求参数对应的处理信息。
其中,处理信息可以包括处理该请求参数所调用的函数的标识和经过该函数处理后的请求参数。
在实施中,技术人员可以基于PHP扩展的特性,通过编写扩展程序来增加HOOK功能(即监听功能),以便于在处理请求参数的过程中,监听所调用的函数。在处理不同的请求参数时,需要调用的函数可以是相同的,也可以是不同的。对于任一请求参数,分析服务器都可以监听处理该请求参数时所调用的函数,每当调用的一个函数对该请求参数进行处理后,分析服务器可以记录该函数的标识,以及经过该函数处理后的请求参数,得到该请求参数对应的处理信息。
分析服务器可以在操作请求携带的各请求参数中,确定在处理过程中需要进行监听的请求参数(也可称为可控变量),该请求参数可以是能够由用户输入或进行修改的参数。对于操作请求为HTTP请求的情况,HTTP请求中的各请求参数都可以作为需要进行监听的请求参数。为了降低分析服务器的处理量,技术人员也可以预先设置参数列表,当接收到操作请求后,分析服务器可以在操作请求中确定参数列表所包含的请求参数,然后对确定出的请求参数进行监听。另外,分析服务器还可以对需要进行监听处理的请求参数进行标记(也可称为污染),例如,可以在该请求参数的字符串后,添加一个预设的字符(可称为监听标识),以便区分该请求参数是被监听的请求参数。
可选的,分析服务器可以通过添加标识的方式,来记录处理该请求参数都调用了哪些函数,相应的处理过程可以如下:根据处理该请求参数所调用的服务端程序代码中的函数,确定经过函数处理后的请求参数,并在处理后的请求参数的字符串之后,添加函数的标识,得到请求参数对应的处理信息。
在实施中,每当分析服务器调用的一个函数对该请求参数进行处理后,分析服务器可以确定经过该函数处理后的请求参数,在该处理后的请求参数的字符串之后,添加该函数的标识。如果在处理该请求参数的过程中调用了多个函数,则可以在该处理后的请求参数的字符串之后,依次添加相应的标识。例如,请求参数用X表示,经过函数A处理后,可以添加标记a,得到处理信息Xa,然后经过函数B处理后,可以添加标记b,得到处理信息Xab。对于上述在请求参数的字符串后添加监听标识的情况,可以在该监听标识后依次添加函数的标识。
基于PHP语言的特性,服务端程序代码中的函数可以获取请求参数的字符串所包含的字符数目,当函数对添加有函数的标识的请求参数进行处理时,可以根据该字符数目,从获取到的字符串中确定该请求参数的字符串,这样,在请求参数的字符串之后添加一些字符,不会影响服务端程序代码对该请求参数的处理。
另外,请求参数经过某些函数处理(如字符串处理函数、序列化/反序列化函数、加密/解密函数、反射函数和回调函数等)后,请求参数的内容可能会发生变化,并且这些函数在处理该请求参数时,会丢弃该请求参数的字符串之后添加的标识。针对这种情况,可以采用污染传递的方式来确定处理信息,也即,可以获取该函数处理前,该请求参数的字符串之后所添加的标识,然后调用该函数对该请求参数进行处理,将获取到的标识添加到经过该函数处理后的请求参数的字符串之后,并可以继续添加该函数的标识。例如,请求参数用X表示,经过函数A和B处理后,得到处理信息Xab,Xab经过函数C处理后,得到X’,则可以将ab添加到X’之后,得到X’ab,并可以继续添加函数C的标识,得到X’abc。需要说明的是,可以只对预设的部分函数(比如安全过滤函数)进行标记,也可以对调用的所有函数进行标记。
步骤203,如果处理信息不满足预设的处理规则,则判定该服务端程序代码中存在漏洞。
在实施中,分析服务器可以在检测到需要调用预设的危险函数时,判断该处理信息是否满足预设的处理规则,也即,分析服务器每调用一个函数之前,先判断该函数是否是预设的危险函数,如果是,则判断该处理信息是否满足预设的处理规则,如果不是,则调用该函数对该请求参数进行处理;或者,也可以在对请求参数处理完成后,判断该请求函数的处理信息是否满足预设的处理规则。如果满足,则说明在处理该请求参数的过程中未检测到漏洞;如果不满足,则说明目标网页的服务端程序代码中存在漏洞,并可以输出该请求参数对应的漏洞提示信息。
可选的,对于分析服务器在检测到需要调用预设的危险函数时,判断该处理信息是否满足预设的处理规则的情况,具体的处理过程可以为:如果处理信息中不包含该危险函数对应的安全过滤函数的标识,或者经过函数处理后的请求参数不满足预设的参数内容条件,则判定服务端程序代码中存在漏洞。
在实施中,服务端程序代码中的函数可以分为多种类型的函数,比如危险函数和安全过滤函数。其中,危险函数可以是可能对后台数据进行修改或对服务端程序代码进行修改的函数,比如命令执行函数、数据库操作函数、文件操作函数和代码执行函数等。针对每种危险函数,技术人员可以分别设置与其对应的安全过滤函数,比如针对命令执行函数的过滤函数、针对数据库操作函数的过滤函数、针对文件操作函数的过滤函数和将变量转换为数字型的函数等。安全过滤函数可以对请求参数所包含的内容进行修改,以使该请求参数的内容符合该危险函数的安全执行标准,这样,即使调用危险函数对该请求参数进行处理,也不会出现对后台数据进行非法修改或对服务端程序代码进行非法修改的情况。安全执行标准可以由技术人员根据对应的危险函数进行设置。
当分析服务器检测到需要调用预设的危险函数时,分析服务器可以获取该处理信息,进而可以根据该处理信息中的函数的标识,判断是否已经调用该危险函数对应的安全过滤函数对该请求参数进行处理,并且可以判断该请求参数所包含的内容是否符合该危险函数的安全执行标准(即参数内容条件)。例如,可以判断该请求参数中是否包含预设的危险字符,比如“‘”或“’”。如果该处理信息中不包含该危险函数对应的安全过滤函数的标识,或者该请求参数不满足预设的参数内容条件,则说明该服务端程序代码中存在漏洞,然后可以生成该请求参数对应的漏洞提示信息,进而输出该漏洞提示信息。如果该处理信息中包含该危险函数对应的安全过滤函数的标识,并且该请求参数满足预设的参数内容条件,则说明该服务端程序代码中不存在漏洞。
可选的,漏洞提示信息中可以包含检测到的漏洞类型,以便于技术人员查找该漏洞并进行修改,相应的处理过程可以如下:确定危险函数对应的漏洞类型;输出漏洞提示信息,漏洞提示信息包含操作请求的内容信息和确定出的漏洞类型。
在实施中,分析服务器在检测到需要调用预设的危险函数时,可以判断该处理信息是否满足预设的处理规则,如果不满足,则判定服务端程序代码中存在关于该危险函数的漏洞。分析服务器可以根据预先存储的危险函数和漏洞类型的对应关系,确定需要调用的危险函数对应的漏洞类型。例如,危险函数为数据库操作函数,对应的漏洞类型为Sql注入漏洞。分析服务器确定出漏洞类型后,可以生成漏洞提示信息。该漏洞提示信息可以包括确定出的漏洞类型,以及该请求参数所属的操作请求的内容信息。例如,操作请求为HTTP请求,漏洞提示信息可以包括HTTP头的全部内容、该HTTP请求的POST参数和该HTTP请求的URL信息中的一项或多项。另外,漏洞提示信息还可以包括确定该漏洞的分析服务器的IP地址、当前的时间信息和调用栈等,其中,调用栈可以是用于反映服务端程序代码对请求参数的处理过程的信息,可以包括调用的所有函数的信息和函数的调用顺序等。基于上述处理,可以动态的进行web检测,并且,操作请求是技术人员在访问目标网页时产生的,更加接近真实环境和数据,可以使web检测比较全面。
分析服务器生成漏洞提示信息后,可以在本地显示该漏洞提示信息,或者,也可以将该漏洞提示信息发送给统计服务器,统计服务器可以与多个分析服务器建立数据连接,接收多个分析服务器发送的漏洞提示信息,然后将多个分析服务器发送的漏洞提示信息进行集中显示。这样,技术人员可以在该统计服务器中,浏览多个分析服务器对目标网页进行web检测的检测结果。如图3所示,可以以漏洞列表的形式对漏洞提示信息中的内容进行显示,由于漏洞列表的显示区域有限,一些内容可能无法完全显示,技术人员可以点击“查看”选项,来查看完整的内容。另外,漏洞列表还设置有“删除”选项,以便技术人员可以删除误报的漏洞提示信息。统计服务器还可以对检测到的漏洞类型进行统计,并通过图表等方式显示漏洞类型的统计结果。例如,可以分别统计各漏洞类型对应的漏洞数目,确定漏洞的分布情况;还可以在检测到的漏洞类型中,确定预设的高危漏洞的数目在总漏洞数据中所占比例,得到高危漏洞占比;还可以根据历史的web检测结果,确定漏洞走势等信息。技术人员看到该漏洞提示信息后,可以查看本地存储的服务端程序代码,或者从分析服务器中获取该服务端程序代码进行查看,从而准确定位存在漏洞的函数,以便对该函数进行修改。
可选的,当分析服务器检测到需要调用危险函数时,如果判定服务端程序代码中存在漏洞,则可以停止对该请求参数进行处理,相应的处理过程可以如下:如果处理信息不满足预设的处理规则,则停止对请求参数进行处理。
在实施中,当分析服务器检测到需要调用危险函数时,如果判定处理信息不满足预设的处理规则,则可以不调用该危险函数,停止对该请求参数的处理,以避免后台数据或服务端程序代码遭到篡改。如果处理信息满足预设的处理规则,则说明在处理该请求参数的过程中未检测到漏洞,可以继续对该请求参数进行处理。
本发明实施例提供了一种检测漏洞的方法,如图4所示,该方法的处理流程可以包括如下的步骤:
步骤401,获取对应目标网页的操作请求,该操作请求中携带有请求参数。
在实施中,目标网页可以是需要进行web检测的任意网页,该操作请求可以是用户在实际应用中对目标网页进行操作时,用户的终端向分析服务器发送的操作请求,也可以是技术人员对目标网页进行操作时,技术人员的终端向分析服务器发送的操作请求,还可以是分析服务器从预设的目标网页的操作请求库中获取到的操作请求。操作请求的内容可以是任意的,例如,可以是对目标网页中进行正常操作所产生的操作请求,也可以是对目标网页进行恶意攻击时的操作请求。该操作请求中携带的请求参数的参数项,可以由该操作请求所使用的协议,以及该操作请求对应的具体操作决定。例如,该操作请求为用于访问网页gamembbs.xxxx.com的HTTP请求,根据HTTP协议的规定,HTTP请求携带的请求参数可以包括Host:gamembbs.xxxx.com.cn、Cookie:JSESSIONID=0DB7145F1F806F4514B23A7EB6BE83CC、Accept-Language:zh-CN,zh;q=0.8等。
分析服务器可以预先存储用于检测web漏洞的应用程序。分析服务器获取到对应目标网页的操作请求后,可以通过该应用程序对该操作请求进行解析,获取其中携带的请求参数,以便进行后续基于该请求参数进行WEB漏洞检测。
步骤402,通过目标网页的服务端程序代码对请求参数进行处理,每当调用服务端程序代码中的函数对请求参数进行处理后,根据处理请求参数所调用的服务端程序代码中的函数,确定经过函数处理后的请求参数,并在处理后的请求参数的字符串之后,添加函数的标识,得到请求参数对应的处理信息。
其中,处理信息可以包括函数的标识和经过函数处理后的请求参数。
在实施中,技术人员可以基于PHP扩展的特性,通过编写扩展程序来增加HOOK功能(即监听功能),以便于在处理请求参数的过程中,监听所调用的函数。在处理不同的请求参数时,需要调用的函数可以是相同的,也可以是不同的。对于任一请求参数,分析服务器都可以监听处理该请求参数时所调用的函数,每当调用的一个函数对该请求参数进行处理后,分析服务器可以记录该函数的标识,以及经过该函数处理后的请求参数,得到该请求参数对应的处理信息。
分析服务器还可以在操作请求携带的各请求参数中,确定在处理过程中需要进行监听的请求参数(也可称为可控变量),该请求参数可以是能够由用户输入或进行修改的参数。对于操作请求为HTTP请求的情况,HTTP请求中的各请求参数都可以作为需要进行监听的请求参数。为了降低分析服务器的处理量,技术人员也可以预先设置参数列表,当接收到操作请求后,分析服务器可以在操作请求中确定参数列表所包含的请求参数,然后对确定出的请求参数进行监听。另外,分析服务器还可以对需要进行监听处理的请求参数进行标记(也可称为污染),例如,可以在该请求参数的字符串后,添加一个预设的字符(可称为监听标识),以便区分该请求参数是被监听的请求参数。
每当分析服务器调用的一个函数对该请求参数进行处理后,分析服务器可以确定经过该函数处理后的请求参数,在该处理后的请求参数的字符串之后,添加该函数的标识。如果在处理该请求参数的过程中调用了多个函数,则可以在该处理后的请求参数的字符串之后,依次添加相应的标识。例如,请求参数用X表示,经过函数A处理后,可以添加标记a,得到处理信息Xa,然后经过函数B处理后,可以添加标记b,得到处理信息Xab。对于上述在请求参数的字符串后添加监听标识的情况,可以在该监听标识后依次添加函数的标识。
基于PHP语言的特性,服务端程序代码中的函数可以获取请求参数的字符串所包含的字符数目,当函数对添加有函数的标识的请求参数进行处理时,可以根据该字符数目,从获取到的字符串中确定该请求参数的字符串,这样,在请求参数的字符串之后添加一些字符,不会影响服务端程序代码对该请求参数的处理。
另外,请求参数经过某些函数处理(如字符串处理函数、序列化/反序列化函数、加密/解密函数、反射函数和回调函数等)后,请求参数的内容可能会发生变化,并且这些函数在处理该请求参数时,会丢弃该请求参数的字符串之后添加的标识。针对这种情况,可以采用污染传递的方式来确定处理信息,也即,可以获取该函数处理前,该请求参数的字符串之后所添加的标识,然后调用该函数对该请求参数进行处理,将获取到的标识添加到经过该函数处理后的请求参数的字符串之后,并可以继续添加该函数的标识。例如,请求参数用X表示,经过函数A和B处理后,得到处理信息Xab,Xab经过函数C处理后,得到X’,则可以将ab添加到X’之后,得到X’ab,并可以继续添加函数C的标识,得到X’abc。需要说明的是,可以只对预设的部分函数(比如安全过滤函数)进行标记,也可以对调用的所有函数进行标记。
当检测到需要调用预设的危险函数时,可以执行步骤403。
步骤403,判断处理信息是否满足预设的处理规则。
在实施中,服务端程序代码中的函数可以分为多种类型的函数,比如危险函数和安全过滤函数。其中,危险函数可以是可能对后台数据进行修改或对服务端程序代码进行修改的函数,比如命令执行函数、数据库操作函数、文件操作函数和代码执行函数等。针对每种危险函数,技术人员可以分别设置与其对应的安全过滤函数,比如针对命令执行函数的过滤函数、针对数据库操作函数的过滤函数、针对文件操作函数的过滤函数和将变量转换为数字型的函数等。安全过滤函数可以对请求参数所包含的内容进行修改,以使该请求参数的内容符合该危险函数的安全执行标准,这样,即使调用危险函数对该请求参数进行处理,也不会出现对后台数据进行非法修改或对服务端程序代码进行非法修改的情况。安全执行标准可以由技术人员根据对应的危险函数进行设置。
当分析服务器检测到需要调用预设的危险函数时,分析服务器可以获取该处理信息,进而可以根据该处理信息中的函数的标识,判断是否已经调用该危险函数对应的安全过滤函数对该请求参数进行处理,并且可以判断该请求参数所包含的内容是否符合该危险函数的安全执行标准(即参数内容条件)。例如,可以判断该请求参数中是否包含预设的危险字符,比如“‘”或“’”。
步骤404,判断经过函数处理后的请求参数不满足预设的参数内容条件。
如果处理信息中不包含危险函数对应的安全过滤函数的标识,或者经过函数处理后的请求参数不满足预设的参数内容条件,则执行步骤405~408,否则,执行步骤409。
其中,步骤403与步骤404的执行顺序可以不分先后。
步骤405,判定服务端程序代码中存在漏洞。
步骤406,确定危险函数对应的漏洞类型。
在实施中,分析服务器在检测到需要调用预设的危险函数时,可以判断该处理信息是否满足预设的处理规则,如果不满足,则判定服务端程序代码中存在关于该危险函数的漏洞。分析服务器可以根据预先存储的危险函数和漏洞类型的对应关系,确定需要调用的危险函数对应的漏洞类型。例如,危险函数为数据库操作函数,对应的漏洞类型为Sql注入漏洞。分析服务器生成漏洞提示信息后,可以在本地显示该漏洞提示信息,或者,也可以将该漏洞提示信息发送给统计服务器,统计服务器可以与多个分析服务器建立数据连接,接收多个分析服务器发送的漏洞提示信息,然后将多个分析服务器发送的漏洞提示信息进行集中显示。这样,技术人员可以在该统计服务器中,浏览多个分析服务器对目标网页进行web检测的检测结果。如图3所示,可以以漏洞列表的形式对漏洞提示信息中的内容进行显示,由于漏洞列表的显示区域有限,一些内容可能无法完全显示,技术人员可以点击“查看”选项,来查看完整的内容。另外,漏洞列表还设置有“删除”选项,以便技术人员可以删除误报的漏洞提示信息。统计服务器还可以对检测到的漏洞类型进行统计,并通过图表等方式显示漏洞类型的统计结果。例如,可以分别统计各漏洞类型对应的漏洞数目,确定漏洞的分布情况;还可以在检测到的漏洞类型中,确定预设的高危漏洞的数目在总漏洞数据中所占比例,得到高危漏洞占比;还可以根据历史的web检测结果,确定漏洞走势等信息。技术人员看到该漏洞提示信息后,可以查看本地存储的服务端程序代码,或者从分析服务器中获取该服务端程序代码进行查看,从而准确定位存在漏洞的函数,以便对该函数进行修改。
步骤407,输出漏洞提示信息,漏洞提示信息包含操作请求的内容信息和确定出的漏洞类型。
在实施中,分析服务器确定出漏洞类型后,可以生成漏洞提示信息。该漏洞提示信息可以包括确定出的漏洞类型,以及该请求参数所属的操作请求的内容信息。例如,操作请求为HTTP请求,漏洞提示信息可以包括HTTP头的全部内容、该HTTP请求的POST参数和该HTTP请求的URL信息中的一项或多项。另外,漏洞提示信息还可以包括确定该漏洞的分析服务器的IP地址、当前的时间信息和调用栈等,其中,调用栈可以是用于反映服务端程序代码对请求参数的处理过程的信息,可以包括调用的所有函数的信息和函数的调用顺序等。基于上述处理,可以动态的进行web检测,并且,操作请求是技术人员在访问目标网页时产生的,更加接近真实环境和数据,可以使web检测比较全面。
步骤408,停止对请求参数进行处理。
在实施中,当分析服务器检测到需要调用危险函数时,如果判定处理信息不满足预设的处理规则,则可以不调用该危险函数,停止对该请求参数的处理,以避免后台数据或服务端程序代码遭到篡改。
其中,步骤406~步骤407,与步骤408的执行顺序可以不分先后。
步骤409,未检测到漏洞,继续处理该请求参数。
如果该处理信息中包含该危险函数对应的安全过滤函数的标识,并且该请求参数满足预设的参数内容条件,则说明该服务端程序代码中不存在漏洞,可以继续处理该请求参数。
本发明实施例中,在通过目标网页的服务端程序代码对请求参数进行处理的过程中,根据处理该请求参数所调用的程序代码中的函数,确定该请求参数对应的处理信息,根据该处理信息来判断目标网页的服务端程序代码中是否存在漏洞,无需对服务端程序代码进行逻辑分析,这样,对于一些的逻辑比较复杂的服务端程序代码,仍然可以检测出其中的漏洞,降低漏洞的漏报率。
基于相同的技术构思,本发明实施例还提供了一种检测漏洞的装置,如图5所示,该装置包括:
获取模块510,用于获取对应目标网页的操作请求,所述操作请求中携带有请求参数;
第一确定模块520,用于通过所述目标网页的服务端程序代码对所述请求参数进行处理,并根据处理所述请求参数所调用的所述服务端程序代码中的函数,确定所述请求参数对应的处理信息,所述处理信息包括所述函数的标识和经过所述函数处理后的请求参数;
判断模块530,用于如果所述处理信息不满足预设的处理规则,则判定所述服务端程序代码中存在漏洞。
目标网页可以是需要进行web检测的任意网页,该操作请求可以是用户在实际应用中对目标网页进行操作时,用户的终端向获取模块510发送的操作请求,也可以是技术人员对目标网页进行操作时,技术人员的终端向获取模块510发送的操作请求,还可以是获取模块510从预设的目标网页的操作请求库中获取到的操作请求。操作请求的内容可以是任意的,例如,可以是对目标网页中进行正常操作所产生的操作请求,也可以是对目标网页进行恶意攻击时的操作请求。该操作请求中携带的请求参数的参数项,可以由该操作请求所使用的协议,以及该操作请求对应的具体操作决定。获取模块510获取到对应目标网页的操作请求后,可以通过该应用程序对该操作请求进行解析,获取其中携带的请求参数。
技术人员可以基于PHP扩展的特性,通过编写扩展程序来增加HOOK功能(即监听功能),以便于在处理请求参数的过程中,监听所调用的函数。在处理不同的请求参数时,需要调用的函数可以是相同的,也可以是不同的。对于任一请求参数,第一确定模块520都可以监听处理该请求参数时所调用的函数,每当调用的一个函数对该请求参数进行处理后,第一确定模块520可以记录该函数的标识,以及经过该函数处理后的请求参数,得到该请求参数对应的处理信息。
第一确定模块520可以在操作请求携带的各请求参数中,确定在处理过程中需要进行监听的请求参数(也可称为可控变量),该请求参数可以是能够由用户输入或进行修改的参数。对于操作请求为HTTP请求的情况,HTTP请求中的各请求参数都可以作为需要进行监听的请求参数。为了降低第一确定模块520的处理量,技术人员也可以预先设置参数列表,当接收到操作请求后,第一确定模块520可以在操作请求中确定参数列表所包含的请求参数,然后对确定出的请求参数进行监听。另外,第一确定模块520还可以对需要进行监听处理的请求参数进行标记(也可称为污染),例如,可以在该请求参数的字符串后,添加一个预设的字符(可称为监听标识),以便区分该请求参数是被监听的请求参数。
判断模块530可以在检测到需要调用预设的危险函数时,判断该处理信息是否满足预设的处理规则,或者,也可以在对请求参数处理完成后,判断该请求函数的处理信息是否满足预设的处理规则。如果满足,则判定在处理该请求参数的过程中未检测到漏洞;如果不满足,则判定目标网页的服务端程序代码中存在漏洞。
可选的,所述第一确定模块520,用于:
每当调用的所述服务端程序代码中的函数对所述请求参数进行处理后,根据所述函数,确定所述请求参数对应的处理信息;
所述判断模块530,用于:
当检测到需要调用预设的危险函数时,如果所述处理信息不满足预设的处理规则,则判定所述服务端程序代码中存在漏洞。
服务端程序代码中的函数可以分为多种类型的函数,比如危险函数和安全过滤函数。其中,危险函数可以是可能对后台数据进行修改或对服务端程序代码进行修改的函数,比如命令执行函数、数据库操作函数、文件操作函数和代码执行函数等。每当调用的所述服务端程序代码中的函数对所述请求参数进行处理后,第一确定模块520都可以根据所述函数,确定所述请求参数对应的处理信息。判断模块530可以判断需要调用的函数是否是预设的危险函数,如果是,则判断处理信息是否满足预设的处理规则,如果不是,则调用该函数对该请求参数进行处理。
可选的,所述判断模块530,用于:
如果所述处理信息中不包含所述危险函数对应的安全过滤函数的标识,或者经过所述函数处理后的请求参数不满足预设的参数内容条件,则判定所述服务端程序代码中存在漏洞。
针对每种危险函数,技术人员可以分别设置与其对应的安全过滤函数,比如针对命令执行函数的过滤函数、针对数据库操作函数的过滤函数、针对文件操作函数的过滤函数和将变量转换为数字型的函数等。安全过滤函数可以对请求参数所包含的内容进行修改,以使该请求参数的内容符合该危险函数的安全执行标准,这样,即使调用危险函数对该请求参数进行处理,也不会出现对后台数据进行非法修改或对服务端程序代码进行非法修改的情况。安全执行标准可以由技术人员根据对应的危险函数进行设置。
当判断模块530检测到需要调用预设的危险函数时,判断模块530可以获取该处理信息,进而可以根据该处理信息中的函数的标识,判断是否已经调用该危险函数对应的安全过滤函数对该请求参数进行处理,并且可以判断该请求参数所包含的内容是否符合该危险函数的安全执行标准(即参数内容条件)。例如,可以判断该请求参数中是否包含预设的危险字符,比如“‘”或“’”。如果该处理信息中不包含该危险函数对应的安全过滤函数的标识,或者该请求参数不满足预设的参数内容条件,则说明该服务端程序代码中存在漏洞,然后可以生成该请求参数对应的漏洞提示信息,进而输出该漏洞提示信息。如果该处理信息中包含该危险函数对应的安全过滤函数的标识,并且该请求参数满足预设的参数内容条件,则说明该服务端程序代码中不存在漏洞。
可选的,如图6所示,所述装置还包括:
第二确定模块540,用于确定所述危险函数对应的漏洞类型;
输出模块550,用于输出漏洞提示信息,所述漏洞提示信息包含所述操作请求的内容信息和确定出的漏洞类型。
判断模块530在检测到需要调用预设的危险函数时,可以判断该处理信息是否满足预设的处理规则,如果不满足,则判定服务端程序代码中存在关于该危险函数的漏洞。第二确定模块540可以根据预先存储的危险函数和漏洞类型的对应关系,确定需要调用的危险函数对应的漏洞类型。例如,危险函数为数据库操作函数,对应的漏洞类型为Sql注入漏洞。第二确定模块540确定出漏洞类型后,输出模块550可以生成漏洞提示信息。该漏洞提示信息可以包括确定出的漏洞类型,以及该请求参数所属的操作请求的内容信息。例如,操作请求为HTTP请求,漏洞提示信息可以包括HTTP头的全部内容、该HTTP请求的POST参数和该HTTP请求的URL信息中的一项或多项。另外,漏洞提示信息还可以包括确定该漏洞的分析服务器的IP地址、当前的时间信息和调用栈等,其中,调用栈可以是用于反映服务端程序代码对请求参数的处理过程的信息,可以包括调用的所有函数的信息和函数的调用顺序等。基于上述处理,可以动态的进行web检测,并且,操作请求是技术人员在访问目标网页时产生的,更加接近真实环境和数据,可以使web检测比较全面。
输出模块550生成漏洞提示信息后,可以在本地显示该漏洞提示信息,或者,也可以将该漏洞提示信息发送给统计服务器,统计服务器可以与多个输出模块550建立数据连接,接收多个输出模块550发送的漏洞提示信息,然后将多个输出模块550发送的漏洞提示信息进行集中显示。这样,技术人员可以在该统计服务器中,浏览多个输出模块550对目标网页进行web检测的检测结果。如图3所示,可以以漏洞列表的形式对漏洞提示信息中的内容进行显示,由于漏洞列表的显示区域有限,一些内容可能无法完全显示,技术人员可以点击“查看”选项,来查看完整的内容。另外,漏洞列表还设置有“删除”选项,以便技术人员可以删除误报的漏洞提示信息。统计服务器还可以对检测到的漏洞类型进行统计,并通过图表等方式显示漏洞类型的统计结果。例如,可以分别统计各漏洞类型对应的漏洞数目,确定漏洞的分布情况;还可以在检测到的漏洞类型中,确定预设的高危漏洞的数目在总漏洞数据中所占比例,得到高危漏洞占比;还可以根据历史的web检测结果,确定漏洞走势等信息。技术人员看到该漏洞提示信息后,可以查看本地存储的服务端程序代码,或者从分析服务器中获取该服务端程序代码进行查看,从而准确定位存在漏洞的函数,以便对该函数进行修改。
可选的,所述第一确定模块520,用于:
根据处理所述请求参数所调用的所述服务端程序代码中的函数,确定经过所述函数处理后的请求参数,并在所述处理后的请求参数的字符串之后,添加所述函数的标识,得到所述请求参数对应的处理信息。
第一确定模块520调用的一个函数对该请求参数进行处理后,第一确定模块520可以确定经过该函数处理后的请求参数,在该处理后的请求参数的字符串之后,添加该函数的标识。如果在处理该请求参数的过程中调用了多个函数,则可以在该处理后的请求参数的字符串之后,依次添加相应的标识。对于上述在请求参数的字符串后添加监听标识的情况,可以在该监听标识后依次添加函数的标识。
基于PHP语言的特性,服务端程序代码中的函数可以获取请求参数的字符串所包含的字符数目,当函数对添加有函数的标识的请求参数进行处理时,可以根据该字符数目,从获取到的字符串中确定该请求参数的字符串,这样,在请求参数的字符串之后添加一些字符,不会影响服务端程序代码对该请求参数的处理。
另外,请求参数经过某些函数处理(如字符串处理函数、序列化/反序列化函数、加密/解密函数、反射函数和回调函数等)后,请求参数的内容可能会发生变化,并且这些函数在处理该请求参数时,会丢弃该请求参数的字符串之后添加的标识。针对这种情况,可以采用污染传递的方式来确定处理信息,也即,可以获取该函数处理前,该请求参数的字符串之后所添加的标识,然后调用该函数对该请求参数进行处理,将获取到的标识添加到经过该函数处理后的请求参数的字符串之后,并可以继续添加该函数的标识。需要说明的是,可以只对预设的部分函数(比如安全过滤函数)进行标记,也可以对调用的所有函数进行标记。
可选的,如图7所示,所述装置还包括:
处理模块560,用于如果所述处理信息不满足预设的处理规则,则停止对所述请求参数进行处理。
当第一确定模块520检测到需要调用危险函数时,如果判断模块530判定处理信息不满足预设的处理规则,则处理模块560可以不调用该危险函数,停止对该请求参数的处理,以避免后台数据或服务端程序代码遭到篡改。如果处理信息满足预设的处理规则,则说明在处理该请求参数的过程中未检测到漏洞,处理模块560可以继续对该请求参数进行处理。
本发明实施例中,在通过目标网页的服务端程序代码对请求参数进行处理的过程中,根据处理该请求参数所调用的程序代码中的函数,确定该请求参数对应的处理信息,根据该处理信息来判断目标网页的服务端程序代码中是否存在漏洞,无需对服务端程序代码进行逻辑分析,这样,对于一些的逻辑比较复杂的服务端程序代码,仍然可以检测出其中的漏洞,降低漏洞的漏报率。
需要说明的是:上述实施例提供的检测漏洞的装置在检测漏洞时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的检测漏洞的装置与检测漏洞的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图8是本发明实施例提供的服务器的结构示意图。该服务器600可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processingunits,CPU)622(例如,一个或一个以上处理器)和存储器632,一个或一个以上存储应用程序642或数据644的存储介质630(例如一个或一个以上海量存储设备)。其中,存储器632和存储介质630可以是短暂存储或持久存储。存储在存储介质630的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器622可以设置为与存储介质630通信,在服务器600上执行存储介质630中的一系列指令操作。
服务器600还可以包括一个或一个以上电源626,一个或一个以上有线或无线网络接口650,一个或一个以上输入输出接口658,一个或一个以上键盘656,和/或,一个或一个以上操作系统641,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
服务器600可以包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于分析服务器执行上述检测漏洞的方法的指令。
本发明实施例中,在通过目标网页的服务端程序代码对请求参数进行处理的过程中,根据处理该请求参数所调用的程序代码中的函数,确定该请求参数对应的处理信息,根据该处理信息来判断目标网页的服务端程序代码中是否存在漏洞,无需对服务端程序代码进行逻辑分析,这样,对于一些的逻辑比较复杂的服务端程序代码,仍然可以检测出其中的漏洞,降低漏洞的漏报率。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (12)

1.一种检测漏洞的方法,其特征在于,所述方法包括:
获取对应目标网页的操作请求,所述操作请求中携带有请求参数;
通过所述目标网页的服务端程序代码对所述请求参数进行处理,并根据处理所述请求参数所调用的所述服务端程序代码中的函数,确定所述请求参数对应的处理信息,所述处理信息包括所述函数的标识和经过所述函数处理后的请求参数;
如果所述处理信息不满足预设的处理规则,则判定所述服务端程序代码中存在漏洞。
2.根据权利要求1所述的方法,其特征在于,所述根据处理所述请求参数所调用的所述服务端程序代码中的函数,确定所述请求参数对应的处理信息,包括:
每当调用所述服务端程序代码中的函数对所述请求参数进行处理后,根据所述函数,确定所述请求参数对应的处理信息;
所述如果所述处理信息不满足预设的处理规则,则判定所述服务端程序代码中存在漏洞,包括:
当检测到需要调用预设的危险函数时,如果所述处理信息不满足预设的处理规则,则判定所述服务端程序代码中存在漏洞。
3.根据权利要求2所述的方法,其特征在于,所述如果所述处理信息不满足预设的处理规则,则判定所述服务端程序代码中存在漏洞,包括:
如果所述处理信息中不包含所述危险函数对应的安全过滤函数的标识,或者经过所述函数处理后的请求参数不满足预设的参数内容条件,则判定所述服务端程序代码中存在漏洞。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
确定所述危险函数对应的漏洞类型;
输出漏洞提示信息,所述漏洞提示信息包含所述操作请求的内容信息和确定出的漏洞类型。
5.根据权利要求1所述的方法,其特征在于,所述根据处理所述请求参数所调用的所述服务端程序代码中的函数,确定所述请求参数对应的处理信息,包括:
根据处理所述请求参数所调用的所述服务端程序代码中的函数,确定经过所述函数处理后的请求参数,并在所述处理后的请求参数的字符串之后,添加所述函数的标识,得到所述请求参数对应的处理信息。
6.根据权利要求1-5任一所述的方法,其特征在于,所述方法还包括:
如果所述处理信息不满足预设的处理规则,则停止对所述请求参数进行处理。
7.一种检测漏洞的装置,其特征在于,所述装置包括:
获取模块,用于获取对应目标网页的操作请求,所述操作请求中携带有请求参数;
第一确定模块,用于通过所述目标网页的服务端程序代码对所述请求参数进行处理,并根据处理所述请求参数所调用的所述服务端程序代码中的函数,确定所述请求参数对应的处理信息,所述处理信息包括所述函数的标识和经过所述函数处理后的请求参数;
判断模块,用于如果所述处理信息不满足预设的处理规则,则判定所述服务端程序代码中存在漏洞。
8.根据权利要求7所述的装置,其特征在于,所述第一确定模块,用于:
每当调用所述服务端程序代码中的函数对所述请求参数进行处理后,根据所述函数,确定所述请求参数对应的处理信息;
所述判断模块,用于:
当检测到需要调用预设的危险函数时,如果所述处理信息不满足预设的处理规则,则判定所述服务端程序代码中存在漏洞。
9.根据权利要求8所述的装置,其特征在于,所述判断模块,用于:
如果所述处理信息中不包含所述危险函数对应的安全过滤函数的标识,或者经过所述函数处理后的请求参数不满足预设的参数内容条件,则判定所述服务端程序代码中存在漏洞。
10.根据权利要求8所述的装置,其特征在于,所述装置还包括:
第二确定模块,用于确定所述危险函数对应的漏洞类型;
输出模块,用于输出漏洞提示信息,所述漏洞提示信息包含所述操作请求的内容信息和确定出的漏洞类型。
11.根据权利要求7所述的装置,其特征在于,所述第一确定模块,用于:
根据处理所述请求参数所调用的所述服务端程序代码中的函数,确定经过所述函数处理后的请求参数,并在所述处理后的请求参数的字符串之后,添加所述函数的标识,得到所述请求参数对应的处理信息。
12.根据权利要求7-11任一所述的装置,其特征在于,所述装置还包括:
处理模块,用于如果所述处理信息不满足预设的处理规则,则停止对所述请求参数进行处理。
CN201710202706.XA 2017-03-30 2017-03-30 一种检测漏洞的方法和装置 Active CN108664793B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710202706.XA CN108664793B (zh) 2017-03-30 2017-03-30 一种检测漏洞的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710202706.XA CN108664793B (zh) 2017-03-30 2017-03-30 一种检测漏洞的方法和装置

Publications (2)

Publication Number Publication Date
CN108664793A true CN108664793A (zh) 2018-10-16
CN108664793B CN108664793B (zh) 2021-10-22

Family

ID=63785511

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710202706.XA Active CN108664793B (zh) 2017-03-30 2017-03-30 一种检测漏洞的方法和装置

Country Status (1)

Country Link
CN (1) CN108664793B (zh)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109491912A (zh) * 2018-11-09 2019-03-19 北京知道创宇信息技术有限公司 一种代码审计方法、装置及存储介质
CN110968872A (zh) * 2019-11-20 2020-04-07 北京国舜科技股份有限公司 文件漏洞的检测处理方法、装置、电子设备及存储介质
CN111177729A (zh) * 2019-12-17 2020-05-19 腾讯云计算(北京)有限责任公司 一种程序漏洞的测试方法以及相关装置
CN111723380A (zh) * 2020-06-22 2020-09-29 深圳前海微众银行股份有限公司 一种检测组件漏洞的方法及装置
CN112016096A (zh) * 2020-08-28 2020-12-01 苏州浪潮智能科技有限公司 一种xss漏洞的审计方法、装置
CN112398784A (zh) * 2019-08-15 2021-02-23 奇安信安全技术(珠海)有限公司 防御漏洞攻击的方法及装置、存储介质、计算机设备
CN113064783A (zh) * 2020-01-02 2021-07-02 北京京东尚科信息技术有限公司 应用程序监控方法、装置、系统、电子设备及可读介质
CN113569246A (zh) * 2020-04-28 2021-10-29 腾讯科技(深圳)有限公司 漏洞检测方法、装置、计算机设备和存储介质
CN113810343A (zh) * 2020-06-15 2021-12-17 深信服科技股份有限公司 函数注入攻击的检测方法、装置、设备及可读存储介质
CN114338240A (zh) * 2022-03-07 2022-04-12 浙江网商银行股份有限公司 漏洞扫描方法以及装置
WO2022267343A1 (zh) * 2021-06-25 2022-12-29 深圳前海微众银行股份有限公司 漏洞检测方法、设备及可读存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101364988A (zh) * 2008-09-26 2009-02-11 深圳市迅雷网络技术有限公司 一种确定网页安全性的方法和装置
US20120151438A1 (en) * 2010-12-08 2012-06-14 Microsoft Corporation Visual cues based on file type
CN104901962A (zh) * 2015-05-28 2015-09-09 北京椒图科技有限公司 一种网页攻击数据的检测方法及装置
US20150379272A1 (en) * 2013-05-29 2015-12-31 Lucent Sky Corporation Method, system, and computer program product for automatically mitigating vulnerabilities in source code
CN105429953A (zh) * 2015-10-30 2016-03-23 上海红神信息技术有限公司 一种用于访问网站的方法、装置和系统
CN105631340A (zh) * 2015-12-17 2016-06-01 珠海市君天电子科技有限公司 一种xss漏洞检测的方法及装置
CN105791261A (zh) * 2015-12-28 2016-07-20 华为技术有限公司 一种跨站脚本攻击的检测方法和检测设备
CN106101145A (zh) * 2016-08-10 2016-11-09 北京神州绿盟信息安全科技股份有限公司 一种网站漏洞检测方法及装置

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101364988A (zh) * 2008-09-26 2009-02-11 深圳市迅雷网络技术有限公司 一种确定网页安全性的方法和装置
US20120151438A1 (en) * 2010-12-08 2012-06-14 Microsoft Corporation Visual cues based on file type
US20150379272A1 (en) * 2013-05-29 2015-12-31 Lucent Sky Corporation Method, system, and computer program product for automatically mitigating vulnerabilities in source code
CN104901962A (zh) * 2015-05-28 2015-09-09 北京椒图科技有限公司 一种网页攻击数据的检测方法及装置
CN105429953A (zh) * 2015-10-30 2016-03-23 上海红神信息技术有限公司 一种用于访问网站的方法、装置和系统
CN105631340A (zh) * 2015-12-17 2016-06-01 珠海市君天电子科技有限公司 一种xss漏洞检测的方法及装置
CN105791261A (zh) * 2015-12-28 2016-07-20 华为技术有限公司 一种跨站脚本攻击的检测方法和检测设备
CN106101145A (zh) * 2016-08-10 2016-11-09 北京神州绿盟信息安全科技股份有限公司 一种网站漏洞检测方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
VOITOVYCH O.P.等: "SQL Injection Prevention System", 《网页在线公开:HTTPS://IEEEXPLORE.IEEE.ORG/STAMP/STAMP.JSP?TP=&ARNUMBER=7739642》 *
张庭秀等: "Evil-hunter:基于评分机制的web shell检测系统", 《东南大学学报(英文版)》 *

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109491912A (zh) * 2018-11-09 2019-03-19 北京知道创宇信息技术有限公司 一种代码审计方法、装置及存储介质
CN112398784B (zh) * 2019-08-15 2023-01-06 奇安信安全技术(珠海)有限公司 防御漏洞攻击的方法及装置、存储介质、计算机设备
CN112398784A (zh) * 2019-08-15 2021-02-23 奇安信安全技术(珠海)有限公司 防御漏洞攻击的方法及装置、存储介质、计算机设备
CN110968872A (zh) * 2019-11-20 2020-04-07 北京国舜科技股份有限公司 文件漏洞的检测处理方法、装置、电子设备及存储介质
CN111177729A (zh) * 2019-12-17 2020-05-19 腾讯云计算(北京)有限责任公司 一种程序漏洞的测试方法以及相关装置
CN111177729B (zh) * 2019-12-17 2023-03-10 腾讯云计算(北京)有限责任公司 一种程序漏洞的测试方法以及相关装置
CN113064783A (zh) * 2020-01-02 2021-07-02 北京京东尚科信息技术有限公司 应用程序监控方法、装置、系统、电子设备及可读介质
CN113569246B (zh) * 2020-04-28 2024-05-28 腾讯科技(深圳)有限公司 漏洞检测方法、装置、计算机设备和存储介质
CN113569246A (zh) * 2020-04-28 2021-10-29 腾讯科技(深圳)有限公司 漏洞检测方法、装置、计算机设备和存储介质
CN113810343A (zh) * 2020-06-15 2021-12-17 深信服科技股份有限公司 函数注入攻击的检测方法、装置、设备及可读存储介质
CN113810343B (zh) * 2020-06-15 2023-05-12 深信服科技股份有限公司 函数注入攻击的检测方法、装置、设备及可读存储介质
CN111723380A (zh) * 2020-06-22 2020-09-29 深圳前海微众银行股份有限公司 一种检测组件漏洞的方法及装置
CN112016096A (zh) * 2020-08-28 2020-12-01 苏州浪潮智能科技有限公司 一种xss漏洞的审计方法、装置
WO2022267343A1 (zh) * 2021-06-25 2022-12-29 深圳前海微众银行股份有限公司 漏洞检测方法、设备及可读存储介质
CN114338240B (zh) * 2022-03-07 2022-08-26 浙江网商银行股份有限公司 漏洞扫描方法以及装置
CN114338240A (zh) * 2022-03-07 2022-04-12 浙江网商银行股份有限公司 漏洞扫描方法以及装置

Also Published As

Publication number Publication date
CN108664793B (zh) 2021-10-22

Similar Documents

Publication Publication Date Title
CN108664793A (zh) 一种检测漏洞的方法和装置
McHugh Intrusion and intrusion detection
CN112787992A (zh) 一种敏感数据的检测与防护的方法、装置、设备和介质
CN109274637A (zh) 确定分布式拒绝服务攻击的系统和方法
US20060064598A1 (en) Illegal access preventing program, apparatus, and method
US20100131512A1 (en) System and methods for selective local database access restriction
AU2014346390A1 (en) Cloud service security broker and proxy
CN108696490A (zh) 账号权限的识别方法及装置
CN108337266B (zh) 一种高效的协议客户端漏洞发掘方法与系统
CN109347882B (zh) 网页木马监测方法、装置、设备及存储介质
CN103780450B (zh) 浏览器访问网址的检测方法和系统
CN108989355A (zh) 一种漏洞检测方法和装置
Lindqvist et al. eXpert-BSM: A host-based intrusion detection solution for Sun Solaris
CN110912776A (zh) 一种实体路由器管理协议的自动化模糊测试方法及装置
Zhang et al. An execution-flow based method for detecting cross-site scripting attacks
US11595436B2 (en) Rule-based dynamic security test system
CN110879889A (zh) Windows平台的恶意软件的检测方法及系统
CN113111347A (zh) 一种Android应用的威胁处置方法和安全监测探针
Zhan et al. Coda: Runtime detection of application-layer cpu-exhaustion dos attacks in containers
Antunes et al. Evaluating and improving penetration testing in web services
CN107392026A (zh) 漏洞检测方法及装置
WO2021243574A1 (zh) 用户信息违规获取检测方法及相关设备
Vigna et al. Host-based intrusion detection
CN110378120A (zh) 应用程序接口攻击检测方法、装置以及可读存储介质
CN115225531B (zh) 数据库防火墙测试方法、装置、电子设备及介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant