服务器软件漏洞测试程序的设计与实现(1)(2)
2013-12-09 01:08
导读:脚本中依次列出各个样本包,每个样本包分成几个数据域,每个数据域用一个数据项来表示。 GET /pub/index.htm HTTP/1.1的脚本描述为:SAMPS ITEM COMM GET ITEM PAT
脚本中依次列出各个样本包,每个样本包分成几个数据域,每个数据域用一个数据项来表示。
GET /pub/index.htm HTTP/1.1的脚本描述为:SAMPS
ITEM COMM GET
ITEM PATH /pub/
ITEM FILE index.htm
ITEM VER HTTP/1.1
RESULT …
SAMPE每个数据项由三部分组成,以第一个数据项ITEMS COMMI GET 为例: ITEMS,关键字,标识数据项开始(每个数据项占一行,因此无须关键字标识数据项结束);COMM:数据项类型名,数据项类型名决定了它的变换处理函数;GET: 数据项的内容。2.2测试数据包生成模块
测试数据包生成模块是整个测试工具的关键所在,只有生成最可能导致服务器出问题的请求数据包,才能发现服务器软件的漏洞所在。但又不能产生过多的数据包,使得测试效率太低。从统计测试的角度来说,就是要生成最可能导致服务器出错的数据包的样本集。
测试数据包生成模块对脚本的处理过程为:从脚本中读出一个样本包,脚本处理函数构造描述样本包的链表,链表的结构为:
typedef struct RULELIST
{
rulenode* rulelisthead;
rulenode* rulelistend;
}RULELIST;
样本包中的每一项为链表中的一个节点rulenode;
结点rulenode的定义为
typedef struct _rulenod
{
char type[8]; //数据项类型名
char item[128]; //数据项内容
_rulenode *nextnode; //指向下一个结点的指针
}rulenode;构造好链表后,对该样本包里一个数据项的内容进行变换,而保持其它数据项不变,生成测试数据包,发送给服务器,分析返回信息,将测试结果写入记录文件,处理完该样本包的所有数据项后,释放链表,读出下一样本包,重复上面的处理过程,直至脚本结束。
模块中对数据项内容进行变换的处理函数做成DLL动态链接库,调用时根据数据项类型名进行调用。这样使得该测试程序易于扩展,如果被测试软件的数据包中有原测试程序未定义的数据项类型,只需在脚本中加入新的数据项类型, 同时将对应的处理函数做成DLL动态链接库的形式,拷贝至测试程序目录下即可,而原有的程序一点也不必改动。2.3响应信息分析模块
(科教作文网http://zw.ΝsΕAc.Com编辑整理) 响应信息分析模块主要对返回信息进行特征串搜索,记录下服务器软件出现异常时的情况。特征串定义在脚本中,特征串搜索采用Boyer-Moore字符串匹配算法.如果返回信息中有匹配的字符串,就意味着服务器可能出错.例如,IIS 返回 “The remote procedure call failed ” ,就是RPC 服务出现错误。由于很多情况下返回信息很难预料,即便采用人工智能的方法也难判断服务器到底出了什么问题。所以响应信息分析模块只是检测异常,将异常记录下来,进一步的分析判断还需要人工介入。
共2页: 1 [2] 下一页 论文出处(作者):
PowerBuilder中实现数据窗口列不可编辑的一种方法
遥感信息在城市规划中的应用与展望