掌桥专利:专业的专利平台
掌桥专利
首页

一种渗透测试方法、装置以及测试设备

文献发布时间:2023-06-19 19:28:50


一种渗透测试方法、装置以及测试设备

技术领域

本申请涉及测试领域,具体涉及一种渗透测试方法、装置以及测试设备。

背景技术

Webshell,对于本领域技术人员而言,其为以asp、php、jsp或者cgi等网页文件形式存在的一种代码执行环境,部分情况下作为一个途径,被用于向目标服务器进行网络攻击。在该情况下,服务器的渗透测试工作,也可以通过Webshell来实现。

然而webshell既然作为熟悉的、可用于进行网络攻击的途径,那现有技术中也开发了相应的webshell异常分析方案,以识别出试图通过webshel来进行网络攻击的情况。

从而,基于webshell进行渗透测试的工作中,由于服务器上配置的webshell异常分析策略,难以展开具体的渗透工作,从而存在着渗透测试效果较差的问题。

发明内容

本申请提供了一种渗透测试方法、装置以及测试设备,用于保障基于webshell可以正常地完成目标待测试服务器的渗透测试,保障稳定的渗透测试效果。

第一方面,本申请提供了一种渗透测试方法,方法包括:

测试设备在目标待测试服务器上配置Webshell相关的配置文件,其中,目标待测试服务器是指在未来时间段接受渗透测试的服务器对象,配置文件为反序列化特性的执行文件;

测试设备获取当前渗透测试任务相关的初始控制指令,其中,初始控制指令为渗透测试行为相关的指令;

测试设备将初始控制指令转化为可以触发配置文件执行反序列化操作的目标控制指令;

测试设备将目标控制指令发送至配置文件,使得目标待测试服务器通过Webshell对目标控制指令执行反序列化操作,以执行初始控制指令来推进渗透测试任务的执行;

测试设备根据目标待测试服务器的响应,生成渗透测试任务的渗透测试结果。

结合本申请第一方面,在本申请第一方面第一种可能的实现方式中,配置文件具体为Webshell文件,测试设备在目标待测试服务器上配置Webshell相关的配置文件,包括:

测试设备在目标待测试服务器的Web根目录中,放置Webshell文件,其中,Webshell文件基于开发语言对应的魔术函数构建得到,Webshell文件用于获取请求中的预设参数并解码,进行反序列化。

结合本申请第一方面第一种可能的实现方式,在本申请第一方面第二种可能的实现方式中,Webshell文件具体用于获取POST请求、GET请求或者PUT请求中的预设参数并解码,进行反序列化。

结合本申请第一方面,在本申请第一方面第三种可能的实现方式中,测试设备将初始控制指令转化为可以触发配置文件执行反序列化操作的目标控制指令,包括:

测试设备对初始控制指令进行语句整合得到目标控制指令。

结合本申请第一方面第三种可能的实现方式,在本申请第一方面第四种可能的实现方式中,测试设备对初始控制指令进行语句整合得到目标控制指令,包括:

测试设备对初始控制指令进行语句整合后,通过加密编码处理得到目标控制指令,其中,目标待测试服务器配置有加密编码处理对应的解码处理。

结合本申请第一方面,在本申请第一方面第五种可能的实现方式中,加密编码处理具体采用base64、HEX、AES或者DES的加密方式。

结合本申请第一方面,在本申请第一方面第六种可能的实现方式中,方法还包括:

测试设备在目标待测试服务器上配置交互式Webshell管理端。

第二方面,本申请提供了一种渗透测试装置,装置包括:

配置单元,用于在目标待测试服务器上配置Webshell相关的配置文件,其中,目标待测试服务器是指在未来时间段接受渗透测试的服务器对象,配置文件为反序列化特性的执行文件;

获取单元,用于获取当前渗透测试任务相关的初始控制指令,其中,初始控制指令为渗透测试行为相关的指令;

转化单元,用于将初始控制指令转化为可以触发配置文件执行反序列化操作的目标控制指令;

执行单元,用于将目标控制指令发送至配置文件,使得目标待测试服务器通过Webshell对目标控制指令执行反序列化操作,以执行初始控制指令来推进渗透测试任务的执行;

生成单元,用于根据目标待测试服务器的响应,生成渗透测试任务的渗透测试结果。

结合本申请第二方面,在本申请第二方面第一种可能的实现方式中,配置文件具体为Webshell文件,配置单元,具体用于:

在目标待测试服务器的Web根目录中,放置Webshell文件,其中,Webshell文件基于开发语言对应的魔术函数构建得到,Webshell文件用于获取请求中的预设参数并解码,进行反序列化。

结合本申请第二方面第一种可能的实现方式,在本申请第二方面第二种可能的实现方式中,Webshell文件具体用于获取POST请求、GET请求或者PUT请求中的预设参数并解码,进行反序列化。

结合本申请第二方面,在本申请第二方面第三种可能的实现方式中,转化单元,具体用于:

对初始控制指令进行语句整合得到目标控制指令。

结合本申请第二方面第三种可能的实现方式,在本申请第二方面第四种可能的实现方式中,转化单元,具体用于:

对初始控制指令进行语句整合后,通过加密编码处理得到目标控制指令,其中,目标待测试服务器配置有加密编码处理对应的解码处理。

结合本申请第二方面,在本申请第二方面第五种可能的实现方式中,加密编码处理具体采用base64、HEX、AES或者DES的加密方式。

结合本申请第二方面,在本申请第二方面第六种可能的实现方式中,配置单元,还用于:

在目标待测试服务器上配置交互式Webshell管理端。

第三方面,本申请提供了一种测试设备,包括处理器和存储器,存储器中存储有计算机程序,处理器调用存储器中的计算机程序时执行本申请第一方面或者本申请第一方面任一种可能的实现方式提供的方法。

第四方面,本申请提供了一种计算机可读存储介质,计算机可读存储介质存储有多条指令,指令适于处理器进行加载,以执行本申请第一方面或者本申请第一方面任一种可能的实现方式提供的方法。

从以上内容可得出,本申请具有以下的有益效果:

针对于目标待测试服务器的渗透测试需求,本申请由测试设备先在目标待测试服务器上配置Webshell相关的配置文件,该配置文件具体为反序列化特性的执行文件,在获取到当前渗透测试任务相关的初始控制指令后,将该初始控制指令转化为可以触发配置文件执行反序列化操作的目标控制指令,并发送至配置文件,使得目标待测试服务器通过Webshell对目标控制指令执行反序列化操作,以执行初始控制指令来推进渗透测试任务的执行,此时测试设备即可根据目标待测试服务器的响应,生成渗透测试任务的渗透测试结果,在该过程中,通过引入的反序列化操作的应用,使得目标待测试服务器通过主动的方式来执行初始控制指令,从而保障基于webshell可以正常地完成目标待测试服务器的渗透测试,保障稳定的渗透测试效果。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请渗透测试方法的一种流程示意图;

图2为本申请解析POST请求的一种界面示意图;

图3为本申请明文回显数据的一种界面示意图;

图4为本申请执行dir命令的一种界面示意图;

图5为本申请执行ipconfig命令的一种界面示意图;

图6为本申请渗透测试装置的一种结构示意图;

图7为本申请测试设备的一种结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块。在本申请中出现的对步骤进行的命名或者编号,并不意味着必须按照命名或者编号所指示的时间/逻辑先后顺序执行方法流程中的步骤,已经命名或者编号的流程步骤可以根据要实现的技术目的变更执行次序,只要能达到相同或者相类似的技术效果即可。

本申请中所出现的模块的划分,是一种逻辑上的划分,实际应用中实现时可以有另外的划分方式,例如多个模块可以结合成或集成在另一个系统中,或一些特征可以忽略,或不执行,另外,所显示的或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,模块之间的间接耦合或通信连接可以是电性或其他类似的形式,本申请中均不作限定。并且,作为分离部件说明的模块或子模块可以是也可以不是物理上的分离,可以是也可以不是物理模块,或者可以分布到多个电路模块中,可以根据实际的需要选择其中的部分或全部模块来实现本申请方案的目的。

在介绍本申请提供的渗透测试方法之前,首先介绍本申请所涉及的背景内容。

本申请提供的渗透测试方法、装置以及计算机可读存储介质,可应用于测试设备,用于保障基于webshell可以正常地完成目标待测试服务器的渗透测试,保障稳定的渗透测试效果。

本申请提及的渗透测试方法,其执行主体可以为渗透测试装置,或者集成了该渗透测试装置的服务器、物理主机或者用户设备(User Equipment,UE)等不同类型的测试设备。其中,渗透测试装置可以采用硬件或者软件的方式实现,UE具体可以为智能手机、平板电脑、笔记本电脑、台式电脑或者个人数字助理(Personal Digital Assistant,PDA)等终端设备,测试设备可以通过设备集群的方式设置。

具体的,对于本申请所涉及的测试设备,容易理解,为工作人员专门用于执行服务器的渗透测试工作的设备,显然,其具体设备形式是可以随不同的实际软硬件方面的条件还有不同的测试需要来进行灵活配置的,因此无需做具体限定。

下面,开始介绍本申请提供的渗透测试方法。

首先,参阅图1,图1示出了本申请渗透测试方法的一种流程示意图,本申请提供的渗透测试方法,具体可包括如下步骤S101至步骤S105:

步骤S101,测试设备在目标待测试服务器上配置Webshell相关的配置文件,其中,目标待测试服务器是指在未来时间段接受渗透测试的服务器对象,配置文件为反序列化特性的执行文件;

可以理解,Webshell是以asp、php、jsp或者cgi等网页文件形式存在的一种代码执行环境,可以用于网站管理、服务器管理、权限管理等操作,使用方法较为简单,只需上传一个代码文件,通过网址访问,便可进行很多日常操作,极大地方便了使用者对网站和服务器的管理,正因如此,也有小部分人将代码修改后当作后门程序使用,以达到控制网站服务器的目的。

相对的,Webshell也可以用来作为执行服务器渗透测试的途径之一(属于内部性质的测试,或者是在服务器运营方的合作同意下进行的测试),传统是在是留下一个命令执行的接口,可以接收渗透测试的相关控制指令,但是而很容易被检测出来。

为绕过现有技术中针对Webshell作为网络攻击途径部署的Webshell异常识别策略来实现稳定的服务器渗透测试,本申请则是在应用Webshell的情况下,引入反序列化操作,使得目标待测试服务器主动执行相应的控制指令,促进渗透测试的推进。

对此,本申请在向目标待测试服务器发送相关的控制指令之前,需要在目标待测试服务器上完成环境配置,即此处所涉及的配置文件,其为反序列化特性的执行文件,用于实现反序列化操作的动作。

其中,该目标待测试服务器,可以为任意类型的服务器,或者说,渗透测试的对象在实际应用中是随实际需要进行灵活调整的,因此不用做具体限定。

此外,对于该目标待测试服务器,其数量通常是一个,如此实现一对一的渗透测试,当然在具体应用中也是可能存在同时对两个或者两个以上的服务器执行渗透测试的情况的。

步骤S102,测试设备获取当前渗透测试任务相关的初始控制指令,其中,初始控制指令为渗透测试行为相关的指令;

在目标待测试服务器侧完成了环境配置后,测试设备这边则可以获取本次渗透测试任务相关的初始控制指令,可以理解,该初始控制指令主要是描述了本次渗透测试任务所涉及的相关渗透测试行为,此时若直接发送至目标待测试服务器,其会通过Webshell异常识别策略等网络攻击行为识别策略进行响应,从而造成渗透测试失败的情况,因此还需通过下面的指令转化处理,使其适配预先在目标待测试服务器侧完成的环境配置,使其想要实现的相关渗透测试行为可以得到顺利的执行。

步骤S103,测试设备将初始控制指令转化为可以触发配置文件执行反序列化操作的目标控制指令;

可以理解,此处涉及的是指令在形式(也可以理解为格式)上的转换,使得控制指令的形式适配预先在目标待测试服务器侧完成的环境配置,让配置文件可以识别转化后的目标控制指令。

步骤S104,测试设备将目标控制指令发送至配置文件,使得目标待测试服务器通过Webshell对目标控制指令执行反序列化操作,以执行初始控制指令来推进渗透测试任务的执行;

需要理解的是,作为具有类似于网络攻击性质的控制指令,是服务器上常规配置的异常识别策略期望识别出来的,从而可以保障对于网络攻击或者近似网络攻击的异常行为,而在Webshell的环境下,其也部署有Webshell异常识别策略来识别针对Webshell进行的网络攻击或者近似网络攻击的异常行为。

在该情况下,由于初始控制指令转化为了与Webshell预先搭建的环境配置相适配的目标控制指令,此时该目标控制指令并不具有网络攻击性质,也不会对服务器造成任何的影响,因此可以正常地发送至目标待测试服务器上。

而由于该目标控制指令与Webshell预先搭建的环境配置相适配,其配置文件则可以对其进行有效识别,并触发目标待测试服务器对其进行反序列化操作,从而可以将原来的初始控制指令还原出来,并加以执行。

此时,则可以有效地促使目标待测试服务器执行初始控制指令,并且是以主动的方式来进行执行,显然有效地绕过了服务器上原有的异常识别策略的识别机制,从而可以有效地推进渗透测试的进程。

而对于本方案的核心,反序列化和反序列化之前的序列化,两者可以通过以下内容来理解:

对于序列化,序列化(Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程,在序列化期间,对象将其当前状态写入到临时或持久性存储区,以后可以通过从存储区中读取或反序列化对象的状态,重新创建该对象;

对于反序列化,其可以理解为把字节序列恢复为对象的处理。

更简要点来说,序列化就是指开发语言中的对象经过一定的算法,转换为二进制串的过程,而反序列化则是反向过程,将二进制串还原成开发语言中的对象。

步骤S105,测试设备根据目标待测试服务器的响应,生成渗透测试任务的渗透测试结果。

如此,由于目标待测试服务器正常自行了初始控制指令的相关渗透测试行为,因此可以正常获取目标待测试服务器对于这些渗透测试行为相关的响应,并根据响应结果来生成本次渗透测试任务的渗透测试结果。

其中,对于响应结果的获取,既可以是由目标待测试服务器主动上报,也可以是在目标待测试服务器的外部进行观测得到,也可以是通过目标待测试服务器内部配置的监听程序监听得到,具体可以随实际情况调整,不影响目标待测试服务器对于渗透测试行为等操作的正常执行即可。

渗透测试结果的生成过程中,可以涉及到数据的预处理、格式转换等不同类型的数据加工,最终以文档、表格、图片或者视频等不同类型的数据格式进行呈现。

从图1所示实施例可看出,针对于目标待测试服务器的渗透测试需求,本申请由测试设备先在目标待测试服务器上配置Webshell相关的配置文件,该配置文件具体为反序列化特性的执行文件,在获取到当前渗透测试任务相关的初始控制指令后,将该初始控制指令转化为可以触发配置文件执行反序列化操作的目标控制指令,并发送至配置文件,使得目标待测试服务器通过Webshell对目标控制指令执行反序列化操作,以执行初始控制指令来推进渗透测试任务的执行,此时测试设备即可根据目标待测试服务器的响应,生成渗透测试任务的渗透测试结果,在该过程中,通过引入的反序列化操作的应用,使得目标待测试服务器通过主动的方式来执行初始控制指令,从而保障基于webshell可以正常地完成目标待测试服务器的渗透测试,保障稳定的渗透测试效果。

继续对上述图1所示实施例的各个步骤及其在实际应用中可能的实现方式进行详细阐述。

可以理解,本申请所执行的渗透测试,是为了测试目标待测试服务器的相关性能的目的而部署的,而本申请为了保障有效的、正常的执行渗透测试相关的控制指令,在上面内容中已经提及了,是采用了绕过目标待测试服务器其部署的异常识别策略的方式来完成的。

在该情况下,本申请预先在目标待测试服务器上搭建所需的环境配置时,还可以涉及到目标待测试服务器侧相关工作人员的合作或者沟通,如此既可以保障环境配置的正常搭建,也可以避免实际应用中可能出现的人工排查异常而导致环境配置失败的情况。

进一步的,对于配置文件还有控制指令的具体内容,本申请也结合具体应用给出了具体的示例性实现方案。

作为又一种适于实用的实现方式,对于环境配置对应的配置文件,其具体可以为Webshell文件,对应的,测试设备在目标待测试服务器上配置Webshell相关的配置文件,具体可以包括以下内容:

测试设备在目标待测试服务器的Web根目录中,放置Webshell文件,其中,Webshell文件基于开发语言对应的魔术函数构建得到,Webshell文件用于获取请求中的预设参数并解码,进行反序列化。

可以理解,如php中unserialize()函数等魔术函数,会检查是否有魔术名称__wakeup的函数的存在,如果存在,函数在重建对象的时候就会被执行。

具体的,此处所涉及的开发语言对应的魔术函数,既可以是PHP的__destruct函数、__wakeup函数或者__construct函数等函数,也可以是基于java或者python等不同开发语言的魔术函数,可执行反序列化操作即可。

而本申请在具体应用中,则可以通过应用基于PHP(PHP语言)的魔术函数__destruct来进行示例性说明,其配置文件的具体内容可以如下设置:

当在目标待测试服务器的Web根目录放入上述c.php文件时,完成Webshell的部署,此时就可以通过http://target_ip/c.php访问到这个文件,以示例性的预设参数test919为定位,提交一个POST请求,就可以把序列化编码(控制指令)有效传入目标待测试服务器,推进渗透测试的执行。

此外,除了POST请求,也可以针对GET请求或者PUT请求等其他类型的请求。

类似的,Webshell文件,除了为c.php文件,在实际应用中也可以为a.php文件、b.asp文件或者d.jsp文件等其他类型的用来形成服务器上Webshell的文件。

作为又一种具体的实现方式,测试设备将初始控制指令转化为可以触发配置文件执行反序列化操作的目标控制指令的过程中,则具体可以包括以下内容:

测试设备对初始控制指令进行语句整合得到目标控制指令。

可以理解,对应于目标待测试服务器侧的配置文件,以上述示出的魔术函数__destruct示例性内容为基础,其需要反序列化出PEOPLE对象,然后这个对象被销毁时,就会执行魔术函数__destruct,那么需要整合编辑语句,得到其可以识别的目标控制指令。

具体的,其控制指令的具体处理可以如下设置:

初始控制指令为:

test919=O:6:"PEOPLE":2:{s:4:"name";s:4:"exec";s:4:"male";s:3:"dir";}

其中,第一个0是指反序列化为一个对象,6是PEOPLE的长度,2是指对象中有两组键值(也可以为3、4、5…组)。

s:4:"name";s:4:"exec",是指变量名为name,长度为4,变量值为exec,长度为4;

s:4:"male";s:3:"dir",是指变量名为male,长度为4,变量值为dir,长度为3。

看webshell语句unserialize(base64_decode($_POST["test919"])),有base64解码函数,所以上述data字段值需要进行base64编码,执行如下:

base64_encode("O:6:"PEOPLE":2:{s:4:"name";s:4:"exec";s:4:"male";s:3:"dir";}")=>Tzo2OiJQRU9QTEUiOjI6e3M6NDoibmFtZSI7czo0OiJleGVjIjtzOjQ6Im1hbGUiO3M6MzoiZGlyIjt9,这串base64编码的内容,就是POST请求的data字段。

而将这个POST请求的data字段整合成的一个完整的请求,则如下所示:POST/c.php HTTP/1.1

Host:127.0.0.1

Origin:http://127.0.0.1

User-Agent:Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,like Gecko)Chrome/107.0.0.0Safari/537.36

sec-ch-ua-platform:"Windows"

test919=Tzo2OiJQRU9QTEUiOjI6e3M6NDoibmFtZSI7czo0OiJleGVjIjtzOjQ6Im1hbGUiO3M6Mzo iZGlyIjt9

将这个POST请求发送至目标待测试服务器的c.php文件,就可以触发Webshell用exec执行投递的dir指令。

其中,可以理解,上述内容是以初始控制指令为dir指令为例进行介绍的,在具体应用中,可以为任意类型的指令,是以用来起到渗透测试指令、攻击指令的作用即可,因此,初始控制指令也可以称为渗透测试指令或者攻击指令。

此外,从上面内容中还可以看出,涉及到了base64编码的加密应用,可以理解,因为代码在反序列化之后,程序就结束了,触发PEOPLE对象的销毁,__destruct函数会执行name参数带入的命令,并把male作为第一个参数,把$b作为执行回显,而本申请所配置的请求中,name是exec函数,这个是php中的执行系统命令的函数,male是dir命令,这个是用来查看目录的命令,也就是说这个请求会让Webshell执行exec(dir,$b)命令,$b变量存储回显内容,而为了防止传输过程中被检测到,所以可以将$b中的所有元素进行解码后整体加密编码传输,该编码不仅可以基于base64,也可以基于HEX、AES或者DES等不同类型的加密方式,从而具有高度的数据安全性,编码后回显到页面上,这样就实现了执行结果的可靠性回传。

对应的,作为又一种适于实用的实现方式,上述测试设备对初始控制指令进行语句整合得到目标控制指令的过程中,具体还可以包括:

测试设备对初始控制指令进行语句整合后,通过加密编码处理得到目标控制指令,其中,目标待测试服务器配置有加密编码处理对应的解码处理。

而在目标待测试服务器侧,其则可通过反序列化来执行初始控制指令。

作为又一个实例,目标待测试服务器可以执行以下语句:

unserialize(base64_decode($_POST["test919"]))

具体的,目标待测试服务器会先获取POST请求中的test919参数,然后进行base64解码,解完后的字符串进行反序列化,,数据变化依次为:

POST请求中的test919参数:

Tzo2OiJQRU9QTEUiOjI6e3M6NDoibmFtZSI7czo0OiJleGVjIjtzOjQ6Im1hbGUiO3M6MzoiZ GlyIjt9

具体的,还可以参考图2示出的本申请解析POST请求的一种界面示意图。

经过base64解码后有:

O:6:"PEOPLE":2:{s:4:"name";s:4:"exec";s:4:"male";s:3:"dir";}

进行反序列化有:

O:6:"PEOPLE":2:{s:4:"name";s:4:"exec";s:4:"male";s:3:"dir";}=>php中PEOPLE对象

具体的,还可以参考图3示出的本申请明文回显数据的一种界面示意图。

此外,在目标待测试服务器侧,本申请涉及到了反序列化的应用,因为反序列化数据结构的原因,修改命令长度需要修改多个位置的值,因此还可以通过开发一反序列化Webshell管理端(适配的、专门的应用程序),实现高度的交互性,来辅助本申请的渗透测试工作。

对应的,本申请方法还可以包括:

测试设备在目标待测试服务器上配置交互式Webshell管理端(反序列化Webshell管理端)。

以基于python的编程为例,其相关代码可以包括以下内容:

/>

通过上述代码,可以实现交互式webshell应用,具体的,还可以参考图4示出的本申请执行dir命令的一种界面示意图,此外,也可以参考图5示出的本申请执行ipconfig命令的一种界面示意图。

整体来说,对于本申请的上述内容,可以整理得到下面几个方面的特点:

(1)免杀,由于配置文件(如c.php文件)本身不存在攻击性,没有任何攻击代码,真正的攻击代码是在后面的渗透过程中序列化处理后传递到服务器中的,因此不会被机器感知到;

(2)欺骗性,配置文件(如c.php文件)文件本身可以类似正常的业务代码,对于服务器侧工作人员的感知而言,也是看不出来的;

(3)安全性,通信过程可以实现各类型加密传输,如base64、HEX、AES或者DES等加密方式;

(4)交互性,可以实现交互式Webshell管理端,更便于管理。

以上是本申请提供的渗透测试方法的介绍,为便于更好的实施本申请提供的渗透测试方法,本申请还从功能模块角度提供了一种渗透测试装置。

参阅图6,图6为本申请渗透测试装置的一种结构示意图,在本申请中,渗透测试装置600具体可包括如下结构:

配置单元601,用于在目标待测试服务器上配置Webshell相关的配置文件,其中,目标待测试服务器是指在未来时间段接受渗透测试的服务器对象,配置文件为反序列化特性的执行文件;

获取单元602,用于获取当前渗透测试任务相关的初始控制指令,其中,初始控制指令为渗透测试行为相关的指令;

转化单元603,用于将初始控制指令转化为可以触发配置文件执行反序列化操作的目标控制指令;

执行单元604,用于将目标控制指令发送至配置文件,使得目标待测试服务器通过Webshell对目标控制指令执行反序列化操作,以执行初始控制指令来推进渗透测试任务的执行;

生成单元605,用于根据目标待测试服务器的响应,生成渗透测试任务的渗透测试结果。

在一种示例性的实现方式中,配置文件具体为Webshell文件,配置单元601具体用于:

在目标待测试服务器的Web根目录中,放置Webshell文件,其中,Webshell文件基于开发语言对应的魔术函数构建得到,Webshell文件用于获取请求中的预设参数并解码,进行反序列化。

在又一种示例性的实现方式中,Webshell文件具体用于获取POST请求、GET请求或者PUT请求中的预设参数并解码,进行反序列化。

在又一种示例性的实现方式中,转化单元603,具体用于:

对初始控制指令进行语句整合得到目标控制指令。

在又一种示例性的实现方式中,转化单元603,具体用于:

测试设备对初始控制指令进行语句整合后,通过加密编码处理得到目标控制指令,其中,目标待测试服务器配置有加密编码处理对应的解码处理。

在又一种示例性的实现方式中,加密编码处理具体采用base64、HEX、AES或者DES的加密方式。

在又一种示例性的实现方式中,配置单元601,还用于:

在目标待测试服务器上配置交互式Webshell管理端。

本申请还从硬件结构角度提供了一种测试设备,参阅图7,图7示出了本申请测试设备的一种结构示意图,具体的,本申请测试设备可包括处理器701、存储器702以及输入输出设备703,处理器701用于执行存储器702中存储的计算机程序时实现如图1对应实施例中渗透测试方法的各步骤;或者,处理器701用于执行存储器702中存储的计算机程序时实现如图6对应实施例中各单元的功能,存储器702用于存储处理器701执行上述图1对应实施例中渗透测试方法所需的计算机程序。

示例性的,计算机程序可以被分割成一个或多个模块/单元,一个或者多个模块/单元被存储在存储器702中,并由处理器701执行,以完成本申请。一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序在计算机装置中的执行过程。

测试设备可包括,但不仅限于处理器701、存储器702、输入输出设备703。本领域技术人员可以理解,示意仅仅是测试设备的示例,并不构成对测试设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如测试设备还可以包括网络接入设备、总线等,处理器701、存储器702、输入输出设备703等通过总线相连。

处理器701可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,处理器是测试设备的控制中心,利用各种接口和线路连接整个设备的各个部分。

存储器702可用于存储计算机程序和/或模块,处理器701通过运行或执行存储在存储器702内的计算机程序和/或模块,以及调用存储在存储器702内的数据,实现计算机装置的各种功能。存储器702可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据处测试设备的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(SecureDigital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

处理器701用于执行存储器702中存储的计算机程序时,具体可实现以下功能:

在目标待测试服务器上配置Webshell相关的配置文件,其中,目标待测试服务器是指在未来时间段接受渗透测试的服务器对象,配置文件为反序列化特性的执行文件;

获取当前渗透测试任务相关的初始控制指令,其中,初始控制指令为渗透测试行为相关的指令;

将初始控制指令转化为可以触发配置文件执行反序列化操作的目标控制指令;

将目标控制指令发送至配置文件,使得目标待测试服务器通过Webshell对目标控制指令执行反序列化操作,以执行初始控制指令来推进渗透测试任务的执行;

根据目标待测试服务器的响应,生成渗透测试任务的渗透测试结果。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的渗透测试装置、测试设备及其相应单元的具体工作过程,可以参考如图1对应实施例中渗透测试方法的说明,具体在此不再赘述。

本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。

为此,本申请提供一种计算机可读存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本申请如图1对应实施例中渗透测试方法的步骤,具体操作可参考如图1对应实施例中渗透测试方法的说明,在此不再赘述。

其中,该计算机可读存储介质可以包括:只读存储器(Read Only Memory,ROM)、随机存取记忆体(Random Access Memory,RAM)、磁盘或光盘等。

由于该计算机可读存储介质中所存储的指令,可以执行本申请如图1对应实施例中渗透测试方法的步骤,因此,可以实现本申请如图1对应实施例中渗透测试方法所能实现的有益效果,详见前面的说明,在此不再赘述。

以上对本申请提供的渗透测试方法、装置、测试设备以及计算机可读存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

相关技术
  • 一种岩石材料气体渗透率测试装置及其测试方法
  • 一种阵列基板的测试设备和测试方法
  • 一种火工品测试设备及其测试方法
  • 一种终端用电磁兼容测试设备、测试方法及系统
  • 一种正渗透膜性能测试设备及其测试方法
  • 一种水氧渗透率的测试方法及其测试设备
技术分类

06120115928688