CN103856467B - 一种实现安全扫描的方法及分布式系统 - Google Patents
一种实现安全扫描的方法及分布式系统 Download PDFInfo
- Publication number
- CN103856467B CN103856467B CN201210518679.4A CN201210518679A CN103856467B CN 103856467 B CN103856467 B CN 103856467B CN 201210518679 A CN201210518679 A CN 201210518679A CN 103856467 B CN103856467 B CN 103856467B
- Authority
- CN
- China
- Prior art keywords
- task
- scan
- message
- scanning
- sublink
- 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.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种实现安全扫描的方法及分布式系统,该方法包括:开始任务接口将生成的任务消息上传到待爬取消息队列;爬虫进程依据在所述待爬取消息队列中监听到的任务消息中的待扫描任务入口URL,得到所述待扫描任务入口URL下的子链接,并发送扫描消息给待扫描消息队列;扫描监听进程在待扫描消息队列监听到所述扫描消息时,将所述子链接存储到数据库;web server收到扫描进程发送的http请求后,依据数据库存储的子链接生成扫描任务,将生成的扫描任务返回给扫描进程;扫描进程对收到的子链接进行漏洞扫描,出现漏洞时生成漏洞数据,并依据漏洞数据生成扫描结果。根据本发明提供的技术方案,能够大大提高web安全测试的效率。
Description
【技术领域】
本发明涉及互联网的安全测试技术,尤其涉及一种实现安全扫描方法及分布式系统。
【背景技术】
目前,对网站进行web安全测试的方法主要有以下三种方式:
第一种是由专门的安全测试人员对网站进行人工web安全测试。这种方式的缺点是:依赖于人工操作,测试周期较长,需要占用较多人力资源和时间资源,测试效率较低。
第二种是利用一些安全扫描工具对网站进行安全扫描,这种方式的缺点是:安全扫描工具都是客户端或服务器模式,仍然需要依赖人工进行安装和部署客户端或服务器,需要占用较多人力资源和时间资源,测试效率较低。
第三种是安全测试人员通过web页面提交扫描任务后,利用抓取URL模块得到需要的子链接,然后进入漏洞扫描,最后生成扫描报告。这种方式的缺点是:抓取工具和扫描工具在同一设备下串行工作,这样爬虫工具和扫描工具势必会出现相互等待和相互制约的情况,而且整个设备的稳定性、容错性和方便扩展性都将受到较大制约,测试效率较低。
【发明内容】
本发明提供了一种实现安全扫描的方法及分布式系统,能够大大提高web安全测试的效率。
本发明的具体技术方案如下:
根据本发明一优选实施例,一种实现安全扫描的分布式系统,包括:开始任务接口、包括待爬取消息队列和待扫描消息队列的消息服务器、包括一个以上爬虫进程的爬虫集群、包含扫描监听进程和数据库的监听服务器、web服务器(server)和包括一个以上扫描进程的扫描集群;其中,
开始任务接口,用于将生成的任务消息上传到待爬取消息队列;
爬虫进程,用于依据在所述待爬取消息队列中监听到的任务消息中的待扫描任务入口URL,得到所述待扫描任务入口URL下的子链接,并发送扫描消息给待扫描消息队列;
扫描监听进程,用于在待扫描消息队列监听到所述扫描消息时,将所述子链接存储到数据库;
web server,用于收到扫描进程发送的http请求后,依据数据库存储的子链接生成扫描任务,将生成的扫描任务返回给扫描进程;
扫描进程,用于对收到的子链接进行漏洞扫描,出现漏洞时生成漏洞数据,并依据漏洞数据生成扫描结果。
上述系统中,所述爬虫进程在得到所述待扫描任务入口URL下的子链接时,具体包括:
对待爬取消息队列进行监听,第一个监听到任务消息的爬虫进程获取所述任务消息,并在所述待爬取消息队列中将所述任务消息的标志位设置为正在处理;
对所述任务消息中的待扫描任务入口URL进行爬取,得到所述待扫描任务入口URL下的所有子链接。
上述系统中,所述待爬取消息队列,还用于当爬虫进程对待扫描任务入口URL进行爬取的过程中,所述爬虫进程所在的机器出现故障时,将所述爬虫进程正在爬取的任务消息的标志位设置为等待处理。
上述系统中,所述爬虫进程,还用于依据得到的待扫描任务入口URL的子链接生成爬虫结果,将保存爬虫结果的爬虫结果文件保存到缓存服务器。
上述系统中,所述web server在将生成的扫描任务发送给扫描进程时,具体包括:
依据数据库中的子链接生成扫描任务,每个扫描任务中包含的子链接的数量等于预设的任务链接数;
依据每个扫描进程一次只发送一个扫描任务的策略,将生成的扫描任务返回给请求扫描任务的扫描进程;
将扫描任务中子链接在数据库中的标志位设置为正在扫描。
上述系统中,所述扫描进程在对收到的子链接进行漏洞扫描时,具体包括:
从扫描任务中第一个子链接的第一个参数开始,将规则库中的参数值作为子链接中参数的参数值输入到子链接中,如果输入后报出漏洞则终止对所述参数的扫描,对所述子链接的其他参数进行扫描,对所述子链接的所有参数扫描完毕后,对扫描任务中的其他子链接进行扫描。
上述系统中,所述web server,还用于在等待超时时间内没有收到扫描进程发送的确认完成信息时,将子链接在数据库中的标志位设置为等待分配。
上述系统中,该系统还包括:停止扫描接口;
所述消息服务器还包括停止爬取消息队列和停止扫描消息队列;
停止扫描接口,用于前端界面的停止任务按钮被触发后,判断所述扫描任务处于爬取过程还是扫描过程;如果所述扫描任务处于爬取过程,将生成的停止爬取消息发送到消息服务器的停止爬取消息队列;爬虫进程用于从停止爬取消息队列监听到停止爬取消息时,终止所述扫描任务的爬取操作;
如果扫描任务处于扫描过程,停止扫描接口用于将生成的停止扫描消息发送到停止扫描消息队列,扫描监听进程用于从停止扫描消息队列监听到停止扫描消息时,如果扫描任务的子链接还没有被分配到扫描进程,则将所述子链接设置为停止扫描;如果所述子链接已经被分配到扫描进程,则不停止所述子链接的扫描。
一种实现安全扫描的方法,开始任务接口将生成的任务消息上传到待爬取消息队列;爬虫进程依据在所述待爬取消息队列中监听到的任务消息中的待扫描任务入口URL,得到所述待扫描任务入口URL下的子链接,并发送扫描消息给待扫描消息队列;扫描监听进程在待扫描消息队列监听到所述扫描消息时,将所述子链接存储到数据库;包括:
web server收到扫描进程发送的http请求后,依据数据库存储的子链接生成扫描任务,将生成的扫描任务返回给扫描进程;
扫描进程对收到的子链接进行漏洞扫描,出现漏洞时生成漏洞数据,并依据漏洞数据生成扫描结果。
上述方法中,爬虫进程得到所述待扫描任务入口URL下的子链接的方法为:
爬虫进程对待爬取消息队列进行监听,第一个监听到任务消息的爬虫进程获取所述任务消息,并在所述待爬取消息队列中将所述任务消息的标志位设置为正在处理;
爬虫进程对所述任务消息中的待扫描任务入口URL进行爬取,得到所述待扫描任务入口URL下的所有子链接。
上述方法中,该方法还包括:
当爬虫进程对待扫描任务入口URL进行爬取的过程中,所述爬虫进程所在的机器出现故障,待爬取消息队列将所述爬虫进程正在爬取的任务消息的标志位设置为等待处理。
上述方法中,爬虫进程发送扫描消息给待扫描消息队列之前,该方法还包括:
爬虫进程依据得到的待扫描任务入口URL的子链接生成爬虫结果,将保存爬虫结果的爬虫结果文件保存到缓存服务器。
上述方法中,所述web server将生成的扫描任务发送给扫描进程的方法为:
依据数据库中的子链接生成扫描任务,每个扫描任务中包含的子链接的数量等于预设的任务链接数;
依据每个扫描进程一次只发送一个扫描任务的策略,将生成的扫描任务返回给请求扫描任务的扫描进程;
将扫描任务中子链接在数据库中的标志位设置为正在扫描。
上述方法中,扫描进程对收到的子链接进行漏洞扫描的方法为:
扫描进程从扫描任务中第一个子链接的第一个参数开始,将规则库中的参数值作为子链接中参数的参数值输入到子链接中,如果输入后报出漏洞则终止对所述参数的扫描,对所述子链接的其他参数进行扫描,对所述子链接的所有参数扫描完毕后,对扫描任务中的其他子链接进行扫描。
上述方法中,该方法还包括:
如果web server在等待超时时间内没有收到扫描进程发送的确认完成信息,则将子链接在数据库中的标志位设置为等待分配。
上述方法中,该方法还包括:
当前端界面的停止任务按钮被触发后,停止扫描接口判断所述扫描任务处于爬取过程还是扫描过程;
如果所述扫描任务处于爬取过程,将生成的停止爬取消息发送到消息服务器的停止爬取消息队列,爬虫进程从停止爬取消息队列监听到停止爬取消息时,终止所述扫描任务的爬取操作;
如果扫描任务处于扫描过程,停止扫描接口将生成的停止扫描消息发送到停止扫描消息队列,扫描监听进程从停止扫描消息队列监听到停止扫描消息时,如果扫描任务的子链接还没有被分配到扫描进程,则将所述子链接设置为停止扫描;如果所述子链接已经被分配到扫描进程,则不停止所述子链接的扫描。
由以上技术方案可以看出,本发明提供的具有以下有益效果:
爬虫集群和扫描集群作为两个相互独立、相互隔离的单独的分布式集群,互不制约、互不影响,能够最大限度的利用分布式集群的并行处理能力,大大提高web安全扫描的效率。
【附图说明】
图1是本发明实现安全扫描的分布式系统的优选实施例的结构示意图;
图2是本发明实现安全扫描的方法的优选实施例的流程示意图。
【具体实施方式】
本发明的基本思想是:开始任务接口将生成的任务消息上传到待爬取消息队列;爬虫进程依据在所述待爬取消息队列中监听到的任务消息中的待扫描任务入口URL,得到所述待扫描任务入口URL下的子链接,并发送扫描消息给待扫描消息队列;扫描监听进程在待扫描消息队列监听到所述扫描消息时,将所述子链接存储到数据库;web server收到扫描进程发送的http请求后,依据数据库存储的子链接生成扫描任务,将生成的扫描任务返回给扫描进程;扫描进程对收到的子链接进行漏洞扫描,出现漏洞时生成漏洞数据,并依据漏洞数据生成扫描结果。
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
本发明提供一种实现安全扫描的分布式系统,图1是本发明实现安全扫描的分布式系统的优选实施例的结构示意图,如图1所示,该系统包括:前端界面、开始任务接口、停止扫描接口、消息服务器、爬虫集群、监听服务器、web服务器server和扫描集群。
其中,消息服务器包括待爬取消息队列、待扫描消息队列、停止爬取消息队列和停止扫描消息队列。
爬虫集群包括一个以上机器,每个机器包括一个以上爬虫进程。
监听服务器包括扫描监听进程和数据库。
扫描集群包括一个以上机器,每个机器包括一个以上扫描进程。
基于上述系统,本发明还提供一种实现安全扫描的方法,图2是本发明实现安全扫描的方法的优选实施例的流程示意图,如图2所示,该优选实施例包括以下步骤:
步骤201,前端界面接收用户提交的扫描任务信息,开始任务接口依据前端界面接收的扫描任务信息生成任务消息,将该任务消息发送到消息服务器的待爬取消息队列。
具体的,前端界面向用户提供选项框和输入框,用来接收用户提交的扫描任务信息,提交的扫描任务信息包括以下内容:待扫描任务入口URL、用户名、密码、登录类型、爬取层级和终端类型;其中,如果爬虫集群对待扫描任务入口URL进行爬取时,该待扫描任务入口URL下的子链接需要登录后才能爬取,则需要用户提交用户名和密码,如果不存在需要登录的子链接,则用户名和密码为空;如果待扫描任务入口URL下的子链接数量巨大,则可以依据爬取层级,只获取待扫描任务入口URL下该爬取层级的子链接;终端类型包括PC终端、移动终端等;用户在输入扫描任务信息后可以触发前端界面提供的提交按钮来提交扫描任务给前端界面。
前端界面收到用户提交的扫描任务信息后,调用开始任务接口,该开始任务接口依据前端界面接收的扫描任务信息生成任务消息;例如,生成的任务消息可以为:
msg={’id’:id,’project_id’:project_id,’url’:target_url,’user_name’:user_name,’user_passwd’:user_passed,’login_type’:login_type,’url_pre’:url_pre,’user_agent’:user_agent};其中,’id’:id为任务ID,’project_id’:project_id为项目ID,对于用户提交的每个扫描任务都生成一个项目ID,但是一个扫描任务可能会执行多次扫描操作,因此,对应每次扫描操作将生成一个任务ID,因此,一个项目ID对应一个以上任务ID;’url’:target_url为待扫描任务入口URL ,’user_name’:user_name 为登录时需要的用户名,’user_passwd’:user_passed为登录时需要的密码,’login_type’:login_type为登录类型’url_pre’:url_pre为爬取层级,’user_agent’:user_agent为终端类型。
消息服务器中包括待爬取消息队列q_spider、停止爬取消息队列t_spider_stop、待扫描消息队列q_scan和停止扫描消息队列q_scan_stop;开始任务接口将生成的任务消息发送到消息服务器的待爬取消息队列。
步骤202,爬虫集群中的爬虫进程在所述待爬取消息队列中监听到任务消息时,对该任务消息中待扫描任务入口URL进行爬取,得到待扫描任务入口URL下的所有子链接。
具体的,爬虫集群中包括一个以上机器,每个机器包括一个以上爬虫进程,每个爬虫进程都对消息服务器中的待爬取消息队列进行监听;例如,爬虫集群中可以有50个机器,每个机器上有10个爬虫进程,每个爬虫进程都可以作为一个消费者对任务消息进行消费,这样就有500个爬虫进程监听待爬取消息队列,通过增加爬虫集群中的机器就能够方便扩展爬虫集群的并行爬取能力,使得爬虫集群具有较高的扩展性和较高的处理能力。
当爬虫进程在待爬取消息队列中监听到任务消息时,第一个监听到该任务消息的爬虫进程将获取该任务消息,爬虫进程对该任务消息中的待扫描任务入口URL进行爬取;同时,该爬虫进程在获取到任务消息后,会在待爬取消息队列中将该任务消息的标志位设置为正在处理,表示已经有爬虫进程处理该任务消息,这样,其他爬虫进程就不会对该任务消息进行重复爬取操作;当爬虫进程对待扫描任务入口URL进行爬取的过程中,如果该爬虫进程所在的机器出现故障,导致该爬虫进程与待爬取消息队列断开连接,则待爬取消息队列在检测到该情况后将该爬虫进程正在处理的任务消息的标志位设置为等待处理,这样,其他的爬虫进程就可以对该任务消息进行爬取操作了,从而提高爬虫集群的容错性;爬虫进程对任务消息中的待扫描任务入口URL的爬取操作完毕后,得到该待扫描任务入口URL下的所有子链接,爬虫进程向待爬取消息队列返回一个ACK消息,用于通知待爬取消息队列该任务消息已经爬取完毕,待爬取消息队列就可以将该任务消息删除,如此,可以保证扫描任务不会重复且不会丢失。
本优选实施例中,由于爬虫进程爬取操作的时间相对较短,因此将一个任务消息交由一个爬虫进程单独进行处理即可。
步骤203,所述爬虫进程将得到的子链接保存到缓存服务器,并发送扫描消息给消息服务器的待扫描消息队列;监听服务器中的扫描监听进程从待扫描消息队列监听到扫描消息时,将所述子链接存储到监听服务器中的数据库。
具体的,爬虫集群中的爬虫进程对任务消息中的待扫描任务入口URL的爬取操作完毕后,依据爬取得到的该待扫描任务入口URL的子链接生成爬虫结果,该爬虫结果包括待扫描任务入口URL的子链接、对应的http请求类型和cookie;爬虫进程将爬虫结果实时保存到缓存服务器的爬虫结果文件中,该爬虫结果文件中保存爬虫结果,且该爬虫结果文件以扫描任务的任务ID命名,如文件名为id.txt。
爬虫集群存储好爬虫结果后,就完成了自身的爬取操作,向消息服务器的待扫描消息队列发送扫描消息,该扫描消息中携带爬虫结果文件的文件名,例如,该扫描消息可以为:msg={’id’:id,’project_id’:project_id,’url’:url}。
监听服务器中的扫描监听进程对待扫描消息队列进行监听,当从待扫描消息队列监听到扫描消息时,依据扫描消息中的任务ID从缓存服务器中找到对应的爬虫结果文件,并将任务ID、项目ID和爬虫结果文件中的所有子链接拷贝到监听服务器中的数据库,由该数据库对子链接进行存储,并在数据库中将这些子链接的标志位设置为等待分配init,表示这些子链接可以被分配到扫描进程进行扫描,该标志位还可以设置为正在扫描scanning、停止扫描stop、扫描完毕complete,所述scanning表示子链接正在被扫描进程扫描,stop表示子链接被停止扫描,不能分配给扫描进程,complete表示子链接扫描完毕。
步骤204,web server收到扫描集群中的扫描进程发送的http请求后,依据数据库中的子链接生成扫描任务,所述扫描任务中包括的子链接数量等于预设任务链接数,webserver将生成的扫描任务发送给扫描进程。
具体的,扫描集群中包括一个以上机器,每个机器包括一个以上扫描进程,每个扫描进程都周期性的向web server)发送http请求,用于向web server请求扫描任务。例如,扫描集群中可以有6个机器,每个机器上启动10个扫描进程,这样一共有60个扫描进程,这些扫描进程可以同时执行扫描任务,通过增加扫描集群中的机器就能够方便扩展扫描集群的并行扫描能力,使得扫描集群具有较高的扩展性。
web server收到扫描集群中的扫描进程发送的http请求后,依据预设的任务链接数对数据库中的子链接进行划分,生成一个以上扫描任务,每个扫描任务中包含的子链接的数量等于预设的任务链接数,web server依据每个扫描进程一次只发送一个扫描任务的策略,将生成的扫描任务返回给请求扫描任务的扫描进程;其中,任务链接数的数值是可以配置的,可以依据扫描集群中单个机器的处理能力配置该任务链接数,该任务链接数用于限制发送给扫描进程的扫描任务中子链接的数量;如果数据库中没有子链接,则webserver收到扫描进程的http请求后,忽略该http请求;web server在将扫描任务返回给扫描进程后,将扫描任务中子链接在数据库中的标志位设置为scanning。
例如,web server以每20个URL为一个扫描任务,将数据库中的子链接分成多个扫描任务,每个扫描任务中有20个URL,web server将生成的扫描任务分发到多个扫描进程,如此,可以达到扫描负载均衡的目的,一个扫描任务会被划分为多个扫描子任务,从而分配给多个扫描进程,多个扫描进程并行执行扫描操作,提高扫描效率;同时每个扫描进程上需要扫描的子链接的数量相同,因此每个扫描进程所承担的负载相同。
步骤205,扫描进程对收到的子链接进行漏洞扫描,出现漏洞时生成漏洞数据,并依据漏洞数据生成扫描结果。
具体的,扫描进程收到web server分配的扫描任务后,对其中的第一个子链接的第一个参数开始对扫描任务中的子链接依次进行扫描,将规则库中的参数值作为子链接中参数的参数值输入到子链接中,如果输入后报出漏洞则终止对该参数进行扫描,实时生成对应的漏洞数据写入数据库;同理,对该子链接的其他参数进行扫描,对该子链接的所有参数扫描完毕后,对扫描任务中的其他子链接进行扫描,以此类推,最终对扫描任务中的所有子链接都扫描完毕,并得到相应的漏洞数据。
扫描进程对子链接进行扫描的过程中,每扫描完一个子链接就可以向webserver返回一个确认完成信息,其中携带该子链接的任务ID和项目ID;webserver就可以将该子链接在数据库中的标志位设置为complete;如果webserver在等待超时时间内没有收到扫描进程发送的确认完成信息,则认为该子链接没有扫描成功,扫描进程所在的机器出现异常,则将该子链接在数据库中的标志位由scanning重新设置为init,使得该子链接可以再被分配到其他扫描进程进行扫描,从而提高扫描集群的容错性。同时,扫描进程还可以将扫描进度实时同步到前端界面,扫描进度包括已完成扫描子链接的个数和待扫描子链接的个数,还可以将生成的漏洞数据实时同步到前端界面。
扫描完毕后,扫描进程依据数据库中保存的漏洞数据生成扫描结果报告,将该扫描结果报告通过前端界面显示给用户;其中,扫描结果报告包括以下内容:出现漏洞的子链接、子链接中出现漏洞的参数、漏洞类型、风险级别、漏洞的具体描述;所述风险级别包括高、中、低和未知。
例如,扫描进程中一般有很多漏洞,如跨站脚本攻击(XSS、Cross-sitescripting)、结构化查询语言结构(SQL,Structured Query Language)注入攻击等,以XSS为例,得到扫描任务后,从第一个子链接的第一个参数开始,将xsslib.txt规则库里的参数值依次作为第一个参数的参数值输入到第一个子连接中,如果报出漏洞,则终止第一个参数的扫描,生成漏洞数据后,对第一个子链接的第二个参数进行扫描,将xsslib.txt规则库里的参数值依次作为第二个参数的参数值输入到第一个子连接中,同理,遇到漏洞则终止扫描,并生成漏洞数据,第一个子链接的所有参数扫描完毕后对第二个子链接以同样的方法进行扫描。
该方法还可以包括:
前端界面在用户提交扫描任务后,会向用户显示已经提交的扫描任务及相关信息,如扫描任务、当前扫描进度、停止按钮等;如果用户想要停止该扫描任务,可以触发该停止任务按钮,前端界面的停止任务按钮被触发后,调用数据库提供的停止扫描接口,该停止扫描接口依据数据库中是否有该扫描任务的扫描任务号,判断该扫描任务处于爬取过程还是扫描过程。
如果数据库中没有扫描任务号,表示该扫描任务处于爬取过程,因此停止扫描接口生成停止爬取消息,该停止爬取消息可以为:msg={’id’:id,’project_id’:project_id};停止扫描接口将该停止爬取消息发送到消息服务器的停止爬取消息队列,该停止爬取消息队列为一对多机制,停止爬取消息队列中的停止爬取消息可以同时被一个以上爬虫进程处理,爬虫集群中的爬虫进程采用多线程机制,部分线程进行子链接的爬取操作,采用一个线程对停止爬取消息队列进行监听,当监听到有停止爬取消息时,爬虫集群中的每个爬虫进程都需要判断该停止爬取消息中的任务ID与自身当前爬取的任务消息中的任务ID是否一致,如果一致,则爬虫进程终止自身当前的爬取操作,然后向停止爬取消息队列发送一个ACK消息,停止爬取消息队列收到ACK消息后,将该停止爬取消息在停止爬取消息队列中删除。
如果数据库已经生成扫描任务号,表示该扫描任务处于扫描过程,因此停止扫描接口生成停止扫描消息,该停止扫描消息可以为:msg={’id’:id,’project_id’:project_id};停止扫描接口将该停止扫描消息发送到停止扫描消息队列,扫描监听进程对停止扫描消息队列进行监听,监听到停止扫描消息时,依据其中的任务ID和项目ID判断数据库中对应的子链接的标志位,如果标志位是init,表示该扫描任务的子链接还没有被web server分配到扫描进程,则将该子链接的标志位设置为stop,表示该子链接不能进行扫描,从而实现停止扫描任务;如果标志位是scanning,表示该扫描任务的子链接已经被分配到扫描进程进行扫描,则不能停止该子链接的扫描,不需要进一步处理,任由扫描进程将该扫描任务扫描完毕。
为实现上述方法,如图1所示,该实现安全扫描的分布式系统中:
开始任务接口,用于将生成的任务消息上传到待爬取消息队列;
爬虫进程,用于依据在所述待爬取消息队列中监听到的任务消息中的待扫描任务入口URL,得到所述待扫描任务入口URL下的子链接,并发送扫描消息给待扫描消息队列;
扫描监听进程,用于在待扫描消息队列监听到所述扫描消息时,将所述子链接存储到数据库;
web server,用于收到扫描进程发送的http请求后,依据数据库存储的子链接生成扫描任务,将生成的扫描任务返回给扫描进程;
扫描进程,用于对收到的子链接进行漏洞扫描,出现漏洞时生成漏洞数据,并依据漏洞数据生成扫描结果。
其中,所述爬虫进程在得到所述待扫描任务入口URL下的子链接时,具体包括:
对待爬取消息队列进行监听,第一个监听到任务消息的爬虫进程获取所述任务消息,并在所述待爬取消息队列中将所述任务消息的标志位设置为正在处理;
对所述任务消息中的待扫描任务入口URL进行爬取,得到所述待扫描任务入口URL下的所有子链接。
其中,所述待爬取消息队列,还用于当爬虫进程对待扫描任务入口URL进行爬取的过程中,所述爬虫进程所在的机器出现故障时,将所述爬虫进程正在爬取的任务消息的标志位设置为等待处理。
其中,所述爬虫进程,还用于依据得到的待扫描任务入口URL的子链接生成爬虫结果,将保存爬虫结果的爬虫结果文件保存到缓存服务器。
其中,所述web server在将生成的扫描任务发送给扫描进程时,具体包括:
依据数据库中的子链接生成扫描任务,每个扫描任务中包含的子链接的数量等于预设的任务链接数;
依据每个扫描进程一次只发送一个扫描任务的策略,将生成的扫描任务返回给请求扫描任务的扫描进程;
将扫描任务中子链接在数据库中的标志位设置为正在扫描。
其中,所述扫描进程在对收到的子链接进行漏洞扫描时,具体包括:
从扫描任务中第一个子链接的第一个参数开始,将规则库中的参数值作为子链接中参数的参数值输入到子链接中,如果输入后报出漏洞则终止对所述参数的扫描,对所述子链接的其他参数进行扫描,对所述子链接的所有参数扫描完毕后,对扫描任务中的其他子链接进行扫描。
其中,所述web server,还用于在等待超时时间内没有收到扫描进程发送的确认完成信息时,将子链接在数据库中的标志位设置为等待分配。
其中,停止扫描接口,还用于前端界面的停止任务按钮被触发后,判断所述扫描任务处于爬取过程还是扫描过程;如果所述扫描任务处于爬取过程,将生成的停止爬取消息发送到消息服务器的停止爬取消息队列;爬虫进程用于从停止爬取消息队列监听到停止爬取消息时,终止所述扫描任务的爬取操作;
如果扫描任务处于扫描过程,停止扫描接口用于将生成的停止扫描消息发送到停止扫描消息队列,扫描监听进程用于从停止扫描消息队列监听到停止扫描消息时,如果扫描任务的子链接还没有被分配到扫描进程,则将所述子链接设置为停止扫描;如果所述子链接已经被分配到扫描进程,则不停止所述子链接的扫描。
本发明的上述技术方案,爬虫集群和扫描集群作为两个相互独立、相互隔离的单独的分布式集群,互不制约、互不影响,能够最大限度的利用分布式集群的并行处理能力,大大提高web安全扫描的效率;而且,扫描集群和爬虫集群能够各自配置负载均衡策略和容错策略,实现起来简单灵活。扫描集群和爬虫集群还具有各自的扩展性,因此,整个分布式系统具有高扩展性、高稳定性和高容错性。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (16)
1.一种实现安全扫描的分布式系统,其特征在于,该系统包括:开始任务接口、包括待爬取消息队列和待扫描消息队列的消息服务器、爬虫集群、包含扫描监听进程和数据库的监听服务器、web服务器和扫描集群;其中,
开始任务接口,用于将生成的任务消息上传到待爬取消息队列;
爬虫集群,包括一个以上机器,每个机器包括一个以上爬虫进程;
扫描集群,包括一个以上机器,每个机器包括一个以上扫描进程;
爬虫进程,用于依据在所述待爬取消息队列中监听到的任务消息中的待扫描任务入口URL,得到所述待扫描任务入口URL下的子链接,并发送扫描消息给待扫描消息队列;
扫描监听进程,用于在待扫描消息队列监听到所述扫描消息时,将所述子链接存储到数据库;
web服务器,用于收到扫描进程发送的http请求后,依据数据库存储的子链接生成扫描任务,将生成的扫描任务返回给扫描进程;
扫描进程,用于对收到的子链接进行漏洞扫描,出现漏洞时生成漏洞数据,并依据漏洞数据生成扫描结果。
2.根据权利要求1所述的系统,其特征在于,所述爬虫进程在得到所述待扫描任务入口URL下的子链接时,具体包括:
对待爬取消息队列进行监听,第一个监听到任务消息的爬虫进程获取所述任务消息,并在所述待爬取消息队列中将所述任务消息的标志位设置为正在处理;
对所述任务消息中的待扫描任务入口URL进行爬取,得到所述待扫描任务入口URL下的所有子链接。
3.根据权利要求2所述的系统,其特征在于,
所述待爬取消息队列,还用于当爬虫进程对待扫描任务入口URL进行爬取的过程中,所述爬虫进程所在的机器出现故障时,将所述爬虫进程正在爬取的任务消息的标志位设置为等待处理。
4.根据权利要求1所述的系统,其特征在于,所述爬虫进程,还用于依据得到的待扫描任务入口URL的子链接生成爬虫结果,将保存爬虫结果的爬虫结果文件保存到缓存服务器。
5.根据权利要求1所述的系统,其特征在于,所述web服务器在将生成的扫描任务发送给扫描进程时,具体包括:
依据数据库中的子链接生成扫描任务,每个扫描任务中包含的子链接的数量等于预设的任务链接数;
依据每个扫描进程一次只发送一个扫描任务的策略,将生成的扫描任务返回给请求扫描任务的扫描进程;
将扫描任务中子链接在数据库中的标志位设置为正在扫描。
6.根据权利要求1所述的系统,其特征在于,所述扫描进程在对收到的子链接进行漏洞扫描时,具体包括:
从扫描任务中第一个子链接的第一个参数开始,将规则库中的参数值作为子链接中参数的参数值输入到子链接中,如果输入后报出漏洞则终止对所述参数的扫描,对所述子链接的其他参数进行扫描,对所述子链接的所有参数扫描完毕后,对扫描任务中的其他子链接进行扫描。
7.根据权利要求6所述的系统,其特征在于,所述web服务器,还用于在等待超时时间内没有收到扫描进程发送的确认完成信息时,将子链接在数据库中的标志位设置为等待分配。
8.根据权利要求1所述的系统,其特征在于,
该系统还包括:停止扫描接口;
所述消息服务器还包括停止爬取消息队列和停止扫描消息队列;
停止扫描接口,用于前端界面的停止任务按钮被触发后,判断所述扫描任务处于爬取过程还是扫描过程;如果所述扫描任务处于爬取过程,将生成的停止爬取消息发送到消息服务器的停止爬取消息队列;爬虫进程用于从停止爬取消息队列监听到停止爬取消息时,终止所述扫描任务的爬取操作;
如果扫描任务处于扫描过程,停止扫描接口用于将生成的停止扫描消息发送到停止扫描消息队列,扫描监听进程用于从停止扫描消息队列监听到停止扫描消息时,如果扫描任务的子链接还没有被分配到扫描进程,则将所述子链接设置为停止扫描;如果所述子链接已经被分配到扫描进程,则不停止所述子链接的扫描。
9.一种实现安全扫描的方法,其特征在于,开始任务接口将生成的任务消息上传到待爬取消息队列;爬虫集群中包括一个以上机器,每个机器包括一个以上爬虫进程,爬虫进程依据在所述待爬取消息队列中监听到的任务消息中的待扫描任务入口URL,得到所述待扫描任务入口URL下的子链接,并发送扫描消息给待扫描消息队列;扫描监听进程在待扫描消息队列监听到所述扫描消息时,将所述子链接存储到数据库;该方法包括:
web服务器收到扫描进程发送的http请求后,依据数据库存储的子链接生成扫描任务,将生成的扫描任务返回给扫描进程;
扫描集群中包括一个以上机器,每个机器包括一个以上扫描进程;扫描进程对收到的子链接进行漏洞扫描,出现漏洞时生成漏洞数据,并依据漏洞数据生成扫描结果。
10.根据权利要求9所述的方法,其特征在于,爬虫进程得到所述待扫描任务入口URL下的子链接的方法为:
爬虫进程对待爬取消息队列进行监听,第一个监听到任务消息的爬虫进程获取所述任务消息,并在所述待爬取消息队列中将所述任务消息的标志位设置为正在处理;
爬虫进程对所述任务消息中的待扫描任务入口URL进行爬取,得到所述待扫描任务入口URL下的所有子链接。
11.根据权利要求10所述的方法,其特征在于,该方法还包括:
当爬虫进程对待扫描任务入口URL进行爬取的过程中,所述爬虫进程所在的机器出现故障,待爬取消息队列将所述爬虫进程正在爬取的任务消息的标志位设置为等待处理。
12.根据权利要求9所述的方法,其特征在于,爬虫进程发送扫描消息给待扫描消息队列之前,该方法还包括:
爬虫进程依据得到的待扫描任务入口URL的子链接生成爬虫结果,将保存爬虫结果的爬虫结果文件保存到缓存服务器。
13.根据权利要求9所述的方法,其特征在于,所述web服务器将生成的扫描任务发送给扫描进程的方法为:
依据数据库中的子链接生成扫描任务,每个扫描任务中包含的子链接的数量等于预设的任务链接数;
依据每个扫描进程一次只发送一个扫描任务的策略,将生成的扫描任务返回给请求扫描任务的扫描进程;
将扫描任务中子链接在数据库中的标志位设置为正在扫描。
14.根据权利要求9所述的方法,其特征在于,扫描进程对收到的子链接进行漏洞扫描的方法为:
扫描进程从扫描任务中第一个子链接的第一个参数开始,将规则库中的参数值作为子链接中参数的参数值输入到子链接中,如果输入后报出漏洞则终止对所述参数的扫描,对所述子链接的其他参数进行扫描,对所述子链接的所有参数扫描完毕后,对扫描任务中的其他子链接进行扫描。
15.根据权利要求14所述的方法,其特征在于,该方法还包括:
如果web服务器在等待超时时间内没有收到扫描进程发送的确认完成信息,则将子链接在数据库中的标志位设置为等待分配。
16.根据权利要求9所述的方法,其特征在于,该方法还包括:
当前端界面的停止任务按钮被触发后,停止扫描接口判断所述扫描任务处于爬取过程还是扫描过程;
如果所述扫描任务处于爬取过程,将生成的停止爬取消息发送到消息服务器的停止爬取消息队列,爬虫进程从停止爬取消息队列监听到停止爬取消息时,终止所述扫描任务的爬取操作;
如果扫描任务处于扫描过程,停止扫描接口将生成的停止扫描消息发送到停止扫描消息队列,扫描监听进程从停止扫描消息队列监听到停止扫描消息时,如果扫描任务的子链接还没有被分配到扫描进程,则将所述子链接设置为停止扫描;如果所述子链接已经被分配到扫描进程,则不停止所述子链接的扫描。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210518679.4A CN103856467B (zh) | 2012-12-06 | 2012-12-06 | 一种实现安全扫描的方法及分布式系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210518679.4A CN103856467B (zh) | 2012-12-06 | 2012-12-06 | 一种实现安全扫描的方法及分布式系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103856467A CN103856467A (zh) | 2014-06-11 |
CN103856467B true CN103856467B (zh) | 2018-12-14 |
Family
ID=50863687
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210518679.4A Active CN103856467B (zh) | 2012-12-06 | 2012-12-06 | 一种实现安全扫描的方法及分布式系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103856467B (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104834599B (zh) * | 2015-04-24 | 2018-10-12 | 百度在线网络技术(北京)有限公司 | Web安全检测方法和装置 |
CN105978894A (zh) * | 2016-06-27 | 2016-09-28 | 上海柯力士信息安全技术有限公司 | 基于安犬漏洞扫描云平台的网络安全监测管理系统 |
CN106878251B (zh) * | 2016-08-22 | 2020-07-03 | 阿里巴巴集团控股有限公司 | 一种用于分布式的网站程序漏洞扫描系统、方法和装置 |
CN107959662B (zh) * | 2016-10-18 | 2020-12-01 | 中国电信股份有限公司 | 网站安全检测的方法和系统 |
CN108062244B (zh) * | 2016-11-09 | 2021-03-26 | 北京国双科技有限公司 | 爬虫任务的取消方法及装置 |
CN110020041B (zh) * | 2017-08-21 | 2021-10-08 | 北京国双科技有限公司 | 一种跟踪爬取过程的方法及装置 |
CN108052454A (zh) * | 2017-12-29 | 2018-05-18 | 广州品唯软件有限公司 | 一种h5页面扫描方法、装置和系统 |
CN108449355A (zh) * | 2018-04-04 | 2018-08-24 | 上海有云信息技术有限公司 | 一种漏洞扫描方法及系统 |
CN109190368B (zh) * | 2018-08-19 | 2021-01-12 | 杭州安恒信息技术股份有限公司 | 一种sql注入检测装置及sql注入检测方法 |
CN110968755A (zh) * | 2018-09-29 | 2020-04-07 | 北京国双科技有限公司 | 一种爬取数据的方法及装置 |
CN110059007B (zh) * | 2019-04-03 | 2020-12-22 | 奇安信科技集团股份有限公司 | 系统漏洞扫描方法、装置、计算机设备及存储介质 |
CN110569414A (zh) * | 2019-08-21 | 2019-12-13 | 时趣互动(北京)科技有限公司 | 一种基于puppeteer的网站数据收集方法 |
CN111353161A (zh) * | 2020-03-11 | 2020-06-30 | 腾讯科技(深圳)有限公司 | 一种漏洞扫描方法及装置 |
CN111400722B (zh) * | 2020-03-25 | 2023-04-07 | 深圳市腾讯网域计算机网络有限公司 | 扫描小程序的方法、装置、计算机设备和存储介质 |
CN111541686B (zh) * | 2020-04-20 | 2023-02-28 | 杭州迪普科技股份有限公司 | 一种扫描器的调用方法和装置 |
CN112199567A (zh) * | 2020-09-27 | 2021-01-08 | 深圳市伊欧乐科技有限公司 | 一种分布式数据采集方法、系统、服务器和存储介质 |
CN112637119A (zh) * | 2020-11-13 | 2021-04-09 | 北京大米科技有限公司 | 主机扫描方法、装置、存储介质及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1866817A (zh) * | 2006-06-15 | 2006-11-22 | 北京华景中天信息技术有限公司 | 网站安全风险评估方法和系统 |
CN101060444A (zh) * | 2007-05-23 | 2007-10-24 | 西安交大捷普网络科技有限公司 | 基于贝叶斯统计模型的网络异常检测方法 |
CN101242279A (zh) * | 2008-03-07 | 2008-08-13 | 北京邮电大学 | 用于web系统的自动化渗透性测试系统和方法 |
CN101656710A (zh) * | 2008-08-21 | 2010-02-24 | 中联绿盟信息技术(北京)有限公司 | 主动审计系统及方法 |
WO2012051802A1 (zh) * | 2010-10-22 | 2012-04-26 | 北京神州绿盟信息安全科技股份有限公司 | 一种网站扫描设备和方法 |
-
2012
- 2012-12-06 CN CN201210518679.4A patent/CN103856467B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1866817A (zh) * | 2006-06-15 | 2006-11-22 | 北京华景中天信息技术有限公司 | 网站安全风险评估方法和系统 |
CN101060444A (zh) * | 2007-05-23 | 2007-10-24 | 西安交大捷普网络科技有限公司 | 基于贝叶斯统计模型的网络异常检测方法 |
CN101242279A (zh) * | 2008-03-07 | 2008-08-13 | 北京邮电大学 | 用于web系统的自动化渗透性测试系统和方法 |
CN101656710A (zh) * | 2008-08-21 | 2010-02-24 | 中联绿盟信息技术(北京)有限公司 | 主动审计系统及方法 |
WO2012051802A1 (zh) * | 2010-10-22 | 2012-04-26 | 北京神州绿盟信息安全科技股份有限公司 | 一种网站扫描设备和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103856467A (zh) | 2014-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103856467B (zh) | 一种实现安全扫描的方法及分布式系统 | |
CN104348822B (zh) | 一种互联网账号身份验证的方法、装置及服务器 | |
CN103493061B (zh) | 用于应对恶意软件的方法和装置 | |
CN107948201A (zh) | Docker镜像仓库的权限认证方法和系统 | |
US7533419B2 (en) | Human interactive proof service | |
US20060090206A1 (en) | Method, system and apparatus for assessing vulnerability in Web services | |
US7962571B2 (en) | Method and system for collecting information from computer systems based on a trusted relationship | |
US20080148366A1 (en) | System and method for authentication in a social network service | |
CN102882903A (zh) | 一种多网站应用信息获取方法及系统 | |
JP2020522768A (ja) | カテゴリ指向パーサを用いたデータ損失防止 | |
CN1728039A (zh) | 用于处理数字权利管理系统中的权利对象的方法和系统 | |
WO2017193912A1 (zh) | 一种人脸识别的登录认证方法、装置、终端及服务器 | |
CN108809985B (zh) | 一种移动平台系统 | |
CN109981653A (zh) | 一种web漏洞扫描方法 | |
CN110022294A (zh) | 一种代理服务器、Docker系统及其权限管理方法、存储介质 | |
CN110138881A (zh) | 一种分布式存储系统及其存储方法 | |
CN111090864A (zh) | 渗透测试框架系统、渗透测试平台及渗透测试方法 | |
CN106780193A (zh) | 知识产权投诉处理方法及系统 | |
Arnaldy et al. | Performance analysis of reverse proxy and web application firewall with telegram bot as attack notification on web server | |
CN103902429B (zh) | 在自动化测试中进行预警的方法、服务器和系统 | |
US20140101291A1 (en) | System and method for invoking web services from command-line program | |
Bozic et al. | Planning-based security testing of web applications | |
CN106612261A (zh) | 网站数据获取方法、装置及系统 | |
CN106209746A (zh) | 一种安全业务提供方法及服务器 | |
CN113220480B (zh) | 分布式的数据任务跨云调度系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |