一种基于域内页面关联关系检测webshell页面的方法及装置与流程

文档序号:14720484发布日期:2018-06-17 13:24阅读:219来源:国知局
本发明涉及通信
技术领域
,特别涉及一种基于域内页面关联关系检测webshell页面的方法及装置。
背景技术
:随着WEB应用技术的不断进步与发展,WEB应用程序承载了越来越多的业务,而随之而来的也是WEB应用所面临的越来越复杂的安全问题。根据公共漏洞和暴露CVE等权威机构的统计,WEB应用类的安全攻击已经超过了其他层面安全攻击的总和,黑客攻击逐渐由传统的网络层转向应用层。黑客在入侵一个网站后,往往通过在网站中植入webshell后门的方式,达到对网站进行长期控制的目的。webshell是一种网页形态的脚本后门程序,和普通asp、php、jsp以及aspx页面一样,webshell以文件形式存在,攻击者通过远程访问webshell的方式,通过webshell的函数功能实现对服务器的控制,如首页篡改、网站挂马以及操作系统命令执行,甚至进行提权和内网渗透等。由于webshell以文件的形式存在,无任何进程,给webshell的检测大大增加了难度,目前现有技术包括:方法一,基于webshell特征的检测,即webshell通过某些关键函数实现对系统文件的修改,以及调用操作系统命令,可以以这些关键函数为特征进行webshell检测,如eval()等能够执行命令的函数进行匹配。但某些合法网页动态文件也可能使用这些函数,导致存在误报的情况;另外,对于编码和JS加密型的webshell,使用特征检测的方式基本无能为力。方法二,基于页面关联关系的检测,由于webshell为攻击者植入的网页后门,在网站目录下其他页面的关联关系中,可能不存在包含该webshell的页面,也不存在webshell包含本网站内其他页面链接的情况,即可视为该webshell为孤立页面。基于这一特点,通过梳理页面关联关系的方式找出网站中存在的孤立页面,该孤立页面即为webshell,但网站后台登录页面,或后台部分功能页面,其主要功能通过post传参实现,其本身及有可能为孤立页面而不包含其他页面或者不被其他页面包含,易被误判为webshell;而部分webshell可能存在链接形如指向作者微博的链接或后门中的后门链接,从判断是否为无关联关系页面的方法进行检测,则可能造成webshell的误报。技术实现要素:本发明的目的在于提供一种基于域内页面关联关系检测webshell页面的方法及装置,能准确、快速的检测出网站中是否存在webshell页面。为了达到上述目的,本发明的实施例提供了一种基于域内页面关联关系检测webshell页面的方法,该方法包括:根据待测网站的文件目录,获取待检测网站的动态页面的脚本文件和/或标签语言文件;提取动态页面的脚本文件和/或标签语言文件中的URL链接,生成域内页面关联关系的URL链接标签树,URL链接标签树包括URL对应的页面以及各页面的包含关系;遍历URL链接标签树,提取第一类节点和第二类节点,第一类节点为不存在上下级节点的孤立节点,第二类节点为不存在上级节点,但存在下级节点的节点,且该下级节点对应的页面为域外页面;根据所提取的第一类节点和第二类节点对应的页面,得到疑似webshell页面。其中,方法还包括:根据预先设定的webshell特征,检测疑似webshell页面中是否存在webshell,确定出最终的webshell页面。其中,提取动态页面的脚本文件和/或标签语言文件中的URL链接,生成域内页面关联关系的URL链接标签树的步骤包括:通过正则表达式将动态页面的脚本文件和/或标签语言文件对应的网页的HTML源码转换成一系列标签;在一系列标签中查找第一URL链接标签;获取所有包含第一URL链接标签对应的页面之间的第一包含关系;根据第一包含关系,生成域内页面关联关系的第一URL链接标签树。其中,提取动态页面的脚本文件和/或标签语言文件中的URL链接,生成域内页面关联关系的URL链接标签树的步骤还包括:通过Javascript引擎执行动态页面的脚本文件和/或标签语言文件对应的网页的HTML源码中的Javascript代码片段,获取第二URL链接标签;获取所有包含第二URL链接标签对应的页面之间的第二包含关系;根据第二包含关系,生成域内页面关联关系的第二URL链接标签树。其中,根据预先设定的webshell特征,检测疑似webshell页面中是否存在webshell,确定出最终的webshell页面的步骤之后,方法还包括:发送是否有webshell页面的提示信息。本发明的实施例还提供了一种基于域内页面关联关系检测webshell页面的装置,该装置包括:第一获取模块,用于根据待测网站的文件目录,获取待检测网站的动态页面的脚本文件和/或标签语言文件;提取模块,用于提取动态页面的脚本文件和/或标签语言文件中的URL链接,生成域内页面关联关系的URL链接标签树,URL链接标签树包括URL对应的页面以及各页面的包含关系;遍历模块,用于遍历URL链接标签树,提取第一类节点和第二类节点,第一类节点为不存在上下级节点的孤立节点,第二类节点为不存在上级节点,但存在下级节点的节点,且该下级节点对应的页面为域外页面;第二获取模块,用于根据所提取的第一类节点和第二类节点对应的页面,得到疑似webshell页面。其中,装置还包括:检测模块,用于根据预先设定的webshell特征,检测疑似webshell页面中是否存在webshell,确定出最终的webshell页面。其中,提取模块包括:第一单元,用于通过正则表达式将动态页面的脚本文件和/或标签语言文件对应的网页的HTML源码转换成一系列标签;第二单元,用于在一系列标签中查找第一URL链接标签;第三单元,用于获取所有包含第一URL链接标签对应的页面之间的第一包含关系;第四单元,用于根据第一包含关系,生成域内页面关联关系的第一URL链接标签树。其中,提取模块还包括:第五单元,用于通过Javascript引擎执行动态页面的脚本文件和/或标签语言文件对应的网页的HTML源码中的Javascript代码片段,获取第二URL链接标签;第六单元,用于获取所有包含第二URL链接标签对应的页面之间的第二包含关系;第七单元,用于根据第二包含关系,生成域内页面关联关系的第二URL链接标签树。其中,装置还包括:发送模块,用于发送是否有webshell页面的提示信息。本发明的上述方案至少包括以下有益效果:在本发明的实施例提供的基于域内页面关联关系检测webshell页面的方法中,通过提取动态页面的脚本文件和/或标签语言文件中的URL链接,生成URL链接标签树,并从URL链接标签树中筛选出不存在上下级节点的孤立节点和不存在上级节点,但存在下级节点的节点,且该下级节点对应的页面为域外页面的节点,再通过预先设定的webshell特征对筛选出的节点对应的页面进行检测,以确定最终的webshell页面,从而准确、快速的检测出网站中是否存在webshell页面。附图说明图1为本发明实施例中基于域内页面关联关系检测webshell页面的方法的步骤流程图;图2为本发明实施例中图1的步骤12的具体步骤的流程图之一;图3为本发明实施例中图1的步骤12的具体步骤的流程图之二;图4为本发明实施例中多种树状图的示意图;图5为本发明实施例中基于域内页面关联关系检测webshell页面的装置的结构示意图。具体实施方式为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。本发明针对现有中检测网站中webshell页面的方法很容易出现误报或检测不出来的问题,提供了一种基于域内页面关联关系检测webshell页面的方法及装置,能准确、快速的检测出网站中是否存在webshell页面。如图1所示,本发明的实施例提供了一种基于域内页面关联关系检测webshell页面的方法,该方法包括:步骤11,根据待测网站的文件目录,获取待检测网站的动态页面的脚本文件和/或标签语言文件,即获取动态页面的脚本文件和/或动态页面的标签语言文件;在本发明的具体实施例中,会根据预先配置的待检测网站的IP地址、用户名、口令以及发布文件目录,通过smb协议或安全文件传送协议(sftp,SecureFileTransferProtocol)自动抓取web服务器上网站发布目录中的文件名称和后缀,建立文件目录结构。当然Web发布目录中可能包含各种资源文件,如jsp、asp、php、html、htm、js、css、rar、ico、jgp和png等类型资源,而包含有动态页面信息的文件仅为asp、jsp和htm脚本文件或标签语言文件,不可能为js、css或图片文件。步骤12,提取动态页面的脚本文件和/或标签语言文件中的URL链接,生成域内页面关联关系的URL链接标签树,URL链接标签树包括URL对应的页面以及各页面的包含关系,其中,上述域是指待检测网站的地址空间;在本发明的具体实施例中,在获取到动态页面的脚本文件和/或标签语言文件之后,会提取动态页面的脚本文件和/或标签语言文件里面的统一资源定位符(URL,UniformResourceLocator)链接,其中,提取方式包括静态解析和动态解析两种方式,这两种具体的解析方式会在后面作详细说明。步骤13,遍历URL链接标签树,提取第一类节点和第二类节点,第一类节点为不存在上下级节点的孤立节点,第二类节点为不存在上级节点,但存在下级节点的节点,且该下级节点对应的页面为域外页面;步骤14,根据所提取的第一类节点和第二类节点对应的页面,得到疑似webshell页面。在本发明的具体实施例中,根据域内页面的关联关系,对于上下均无包含页面的页面,可以判断为疑似webshell页面,同样,对于上层无包含页面,下层存在包含页面,且下层的包含页面为域外页面(例如指向webshell作者微博或者后门中的后门)的页面,也可以判断为疑似webshell页面。可选地,在执行完步骤14之后,上述方法还包括:根据预先设定的webshell特征,检测疑似webshell页面中是否存在webshell,确定出最终的webshell页面。在本发明的具体实施例中,根据预先设定的webshell特征,检测疑似webshell页面中是否存在webshell,并认为存在webshell的页面为webshell页面。其中,webshell特征包括:第一类,基于webshell文件名和特征,如类似shell.jsp、muma.jsp、jshell.jsp、xiaoma.jsp和cmd.jsp等文件名,可初步判定为webshell;另外具有webshell动作和行为的uri,如xx.aspAction=CmdShell等行为,则可判断为webshell;第二类,基于title,本部分title为webshell类型,如title为jfolder、jshell和一句话等则可判断为webshell;第三类,基于页面关键字,部分webshell作者会webshell页面留下版本和归属信息,如菜刀、暗组以及jshell等,也可作为webshell的判断依据。可选地,在确定出最终的webshell页面之后,上述方法还包括:发送是否有webshell页面的提示信息。在本发明的具体实施例中,在检测完整个网站中是否有webshell页面之后,不管有没有webshell页面,都会将最终结果告诉用户,当然,如果有webshell页面的话,会告诉webshell页面的具体路径,以便用户处理该webshell页面。如图2所示,在本发明的上述实施例中,用静态解析的方式,实现上述步骤12中,提取动态页面的脚本文件和/或标签语言文件中的URL链接的具体步骤为:步骤21,通过正则表达式将动态页面的脚本文件和/或标签语言文件对应的网页的HTML源码转换成一系列标签;步骤22,在一系列标签中查找第一URL链接标签;步骤23,获取所有包含第一URL链接标签对应的页面之间的第一包含关系;步骤24,根据第一包含关系,生成域内页面关联关系的第一URL链接标签树。在本发明的具体实施例中,通过正则表达式将动态页面的脚本文件和/或标签语言文件对应的网页的HTML源码转换成一系列标签,接着遍历所有标签,找出第一URL链接标签,同时,也能得到所有包含第一URL链接标签对应的页面之间的第一包含关系,最后根据第一包含关系,生成第一URL链接标签树。如图3所示,在本发明的上述实施例中,用动态解析的方式,实现上述步骤12中,提取动态页面的脚本文件和/或标签语言文件中的URL链接的具体步骤为:步骤31,通过Javascript引擎执行动态页面的脚本文件和/或标签语言文件对应的网页的HTML源码中的Javascript代码片段,获取第二URL链接标签;步骤32,获取所有包含第二URL链接标签对应的页面之间的第二包含关系;步骤33,根据第二包含关系,生成域内页面关联关系的第二URL链接标签树。在本发明的具体实施例中,由于静态解析无法发现Javascript代码片段中的URL链接标签,因此可以通过Javascript引擎执行动态页面的脚本文件和/或标签语言文件对应的网页的HTML源码中的Javascript代码片段,得到第二URL链接标签,接着与静态解析类似地,得到所有包含第二URL链接标签对应的页面之间的第二包含关系,最后根据第二包含关系,生成第二URL链接标签树。其中,静态解析与动态解析的顺序不分先后。在本发明的具体实施例中,通过静态解析和动态解析提取动态页面的脚本文件和/或标签语言文件的URL链接之后,生成的URL链接标签树(包括第一URL链接标签树和第二URL链接标签树)可能以如图4所示的多种树状图表示、记录,也可能以如表1所示的字段表示、记录,其中,表1是以图4中的第三个树状图为例说明的。名称链接页面上层/下层链接是否为域内bottom.jsp4.jsp下层是bottom.jsp5.jsp下层是表1为了更好地实现上述目的,如图5所示,本发明实施例还提供了一种基于域内页面关联关系检测webshell页面的装置50,该装置50包括:第一获取模块51,用于根据待测网站的文件目录,获取待检测网站的动态页面的脚本文件和/或标签语言文件;提取模块52,用于提取动态页面的脚本文件和/或标签语言文件中的URL链接,生成域内页面关联关系的URL链接标签树,URL链接标签树包括URL对应的页面以及各页面的包含关系;遍历模块53,用于遍历URL链接标签树,提取第一类节点和第二类节点,第一类节点为不存在上下级节点的孤立节点,第二类节点为不存在上级节点,但存在下级节点的节点,且该下级节点对应的页面为域外页面;第二获取模块54,用于根据所提取的第一类节点和第二类节点对应的页面,得到疑似webshell页面。其中,装置50还包括:检测模块,用于根据预先设定的webshell特征,检测疑似webshell页面中是否存在webshell,确定出最终的webshell页面。其中,装置50还包括:发送模块,用于发送是否有webshell页面的提示信息。其中,提取模块52包括:第一单元,用于通过正则表达式将动态页面的脚本文件和/或标签语言文件对应的网页的HTML源码转换成一系列标签;第二单元,用于在一系列标签中查找第一URL链接标签;第三单元,用于获取所有包含第一URL链接标签对应的页面之间的第一包含关系;第四单元,用于根据第一包含关系,生成域内页面关联关系的第一URL链接标签树。其中,提取模块52还包括:第五单元,用于通过Javascript引擎执行动态页面的脚本文件和/或标签语言文件对应的网页的HTML源码中的Javascript代码片段,获取第二URL链接标签;第六单元,用于获取所有包含第二URL链接标签对应的页面之间的第二包含关系;第七单元,用于根据第二包含关系,生成域内页面关联关系的第二URL链接标签树。以上所述是本发明的优选实施方式,应当指出,对于本
技术领域
的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1