万芳芳
摘 要:随着社会的发展和科技的进步,互联网已成为人类获取信息的重要工具。在Internet给信息社会带来的极大便利的同时,也带来了许多安全隐患,跨站脚本攻击(XSS)在众多的Web漏洞中位居榜首。为此,提出了一种基于网络爬虫的XSS漏洞挖掘技术,包括网络爬虫模块、代码自动注入模块和漏洞检测模块。通过实验证明,本文对XXS漏洞检测效果较好。
关键词:XSS;网络爬虫;漏洞挖掘
1 引言
Web技术是Internet上最具活力和发展潜力的技术,它广泛应用于商业、教育、娱乐等领域,但是它存在许多的漏洞。由于Internet的不安全性,许多恶意攻击者意图进行Web攻击。而在众多的Web攻击中,跨站脚本攻击(XSS)所占的比例非常大。XSS指的是恶意攻击者利用Web服务器中的漏洞将恶意代码插入远程Web页面,当用户访问此页面时,嵌入其中的代码便会执行,从而盗取用户的信息。跨站脚本攻击代码的种类非常多,对所有的用户输入进行检测是一件十分困难的事情。因而,本文提出了一种基于网络爬虫的XSS漏洞挖掘技术。
2 基于网络爬虫的XSS漏洞挖掘技术
基于网络爬虫的XSS 漏洞挖掘技术可以分为3个模块:网络爬虫模块、代码自动注入模块和漏洞检测模块。
2.1 网络爬虫模块
网络爬虫是搜索引擎的重要构件之一,它是一个自动下载程序。网络爬虫模块的具体过程是:网络爬虫从一个初始的URL出发,从该网页中不断地提取新的URL,然后将该URL按照FIFO顺序放入爬虫队列,从该爬虫队列中顺序取出新的URL,下载对应的页面,并从该新的页面中提取新的URL,不断地重复该过程,直到爬虫队列中不含有URL或达到页面最大深度。在网络爬虫过程中,需要不断向服务器发送Web请求,那么在数据传输过程中通过将编码进行压缩可以有效减少网络中传送的数据。Gzip是一种压缩效果十分好的压缩算法,通过该算法压缩的数据可以使压缩后的文件是原先文件的30%,在客户端对数据进行压缩后,该功能在服务器端也必须设置,这样服务器才能接受此请求,服务器端可以使用过滤器对其进行解压。网络爬虫在爬取链接时,需要管理很多的套接字,使用完成端口模型方式可以使系统达到最佳的性能。在Windows系统下,利用它不但可以接受套接字句柄,而且还可以接受其它服务。提供服务完成端口模型要求创建一个Windows完成端口对象,用它管理多个I/O请求。在对页面进行解析时采用正则表达式进行匹配,从而提取出所需的数据。利用正则表达式提取出URL后,还需要将它转换成绝对路径。Uri url=new Uri(src_uri,new_uri);//转绝对路径方式的URL。在爬虫的过程中可能存在许多重复的URL,如果将每个URL进行匹配来判断是否重复需要消耗大量的时间。前面我们已经阐述过在提取URL时需要将其压缩编码传输,我们可以对其压缩后的编码建立Hash表,这样便可以判定URL是否重复。我们访问的URL大多数是以http://或https://开始而以.html、.asp、.com、.cn等常见的字符终止的,因此,当我们对字符进行hash时,应当去除开始和结尾的常见字符,这样可以减少碰撞发生的概率。本文提出了一种新的算法----M-Interval-Hash,可以计算URL的hash值:令M=去掉常见字符后的字符长度/N,代表在URL中选取字符时间隔的字符数。N是一个按照经验来设置的参数,例如,N=3,字符长度为36,则M=12,表示选取字符的间隔是12个字符。
2.2 代码自动注入模块
在对XSS漏洞进行挖掘时,需要注入代码来测试漏洞是否存在,而在XSS中,恶意代码的注入可以是在GET请求中,也可以是POST请求。所以,在代码自动注入时,应该考虑上述两种情形。在代码注入时,测试每一个注入点,测试时按照数据库中测试代码顺序依次从数据库中取出一条记录,直到数据库中的记录为空。
2.3 漏洞检测模块
代码注入完成之后,还需要对注入的结果进行检测,以确定是否存在该漏洞。本文通过匹配漏洞特征库来判断XSS漏洞是否执行成功。从漏洞特征库读取XSS注入漏洞的测试脚本,对每个GET变量和POST变量依次进行XSS攻击。然后分析从Web服务器端返回的响应消息,看其是否满足漏洞库中该漏洞的特征。若满足,则说明存在XSS漏洞,否则不存在。
XSS的测试效果很大程度上由测试脚本的质量决定,本方案选择的脚本为OWASP所推荐的测试脚本。
3 实验结果及比较
3.1 网络爬虫模块中URL去重算法测试
为了验证本文技术方案的可行性,首先对URL去重算法进行了验证,将M-Interval-Hash算法与MD5算法进行比较。实验环境采用一台计算机,CPU为Pentium E5300,内存为2GB。软件环境为Windows XP Professional版本 2002 Service Pack2和JDK 1.6,数据库为MySQL 5.5.20。在M-Interval-Hash算法中,为了测试方便,我们取与M相关的经验参数N=8,将该算法和MD5算法比较。
4.2 XSS漏洞检测测试
为测试本文技术的可行性,对一些网站进行了扫描,并和另外两种基于爬虫的检测工具Acunetix WVS Free Edition 6.5和XSSer 1.5进行比较。第一个网站测试环境为Apache 2.2.14+PHP;第二个网站测试环境为IIS 6.0+ASP。
表1为上述两种工具和本文技术扫描结果比较。
在表1中的第二个网站中存在Form表单,所以XSSer无法检测出XSS漏洞。
本文技术、Acunetix WVS 8和XSSer 1.5对XSS漏洞扫描的时间比较见表2。
通过表1和表2的数据可看出本文XSS漏洞挖掘技术相对Acunetix WVS和XSSer两种工具来说性能更佳。
4 结束语
对于Web攻击中的大量XSS攻击,本文提出了一种基于网络爬虫的XSS漏洞挖掘技术,为了提高网络爬虫的性能,在网络爬虫模块使用了M-Interval-Hash新算法,以实现URL去重,同时为了提高网页抓取速度,采用了异步I/O完成端口模型,漏洞检测模块则使用特征库匹配技术。通过实验证明,XXS漏洞检测效果较好,在邮箱XSS漏洞的挖掘、Web网站XSS漏洞的检测等方面均有成功的应用.
[参考文献]
[1]许思远,郑滔.服务器-客户端协作的跨站脚本攻击防御方法[J].计算机工程,2011,37(18):154-156.
[2]赵艳.基于网络爬虫的跨站脚本漏洞动态检测技术研究.西南交通大学硕士论文,2011.5.
摘 要:随着社会的发展和科技的进步,互联网已成为人类获取信息的重要工具。在Internet给信息社会带来的极大便利的同时,也带来了许多安全隐患,跨站脚本攻击(XSS)在众多的Web漏洞中位居榜首。为此,提出了一种基于网络爬虫的XSS漏洞挖掘技术,包括网络爬虫模块、代码自动注入模块和漏洞检测模块。通过实验证明,本文对XXS漏洞检测效果较好。
关键词:XSS;网络爬虫;漏洞挖掘
1 引言
Web技术是Internet上最具活力和发展潜力的技术,它广泛应用于商业、教育、娱乐等领域,但是它存在许多的漏洞。由于Internet的不安全性,许多恶意攻击者意图进行Web攻击。而在众多的Web攻击中,跨站脚本攻击(XSS)所占的比例非常大。XSS指的是恶意攻击者利用Web服务器中的漏洞将恶意代码插入远程Web页面,当用户访问此页面时,嵌入其中的代码便会执行,从而盗取用户的信息。跨站脚本攻击代码的种类非常多,对所有的用户输入进行检测是一件十分困难的事情。因而,本文提出了一种基于网络爬虫的XSS漏洞挖掘技术。
2 基于网络爬虫的XSS漏洞挖掘技术
基于网络爬虫的XSS 漏洞挖掘技术可以分为3个模块:网络爬虫模块、代码自动注入模块和漏洞检测模块。
2.1 网络爬虫模块
网络爬虫是搜索引擎的重要构件之一,它是一个自动下载程序。网络爬虫模块的具体过程是:网络爬虫从一个初始的URL出发,从该网页中不断地提取新的URL,然后将该URL按照FIFO顺序放入爬虫队列,从该爬虫队列中顺序取出新的URL,下载对应的页面,并从该新的页面中提取新的URL,不断地重复该过程,直到爬虫队列中不含有URL或达到页面最大深度。在网络爬虫过程中,需要不断向服务器发送Web请求,那么在数据传输过程中通过将编码进行压缩可以有效减少网络中传送的数据。Gzip是一种压缩效果十分好的压缩算法,通过该算法压缩的数据可以使压缩后的文件是原先文件的30%,在客户端对数据进行压缩后,该功能在服务器端也必须设置,这样服务器才能接受此请求,服务器端可以使用过滤器对其进行解压。网络爬虫在爬取链接时,需要管理很多的套接字,使用完成端口模型方式可以使系统达到最佳的性能。在Windows系统下,利用它不但可以接受套接字句柄,而且还可以接受其它服务。提供服务完成端口模型要求创建一个Windows完成端口对象,用它管理多个I/O请求。在对页面进行解析时采用正则表达式进行匹配,从而提取出所需的数据。利用正则表达式提取出URL后,还需要将它转换成绝对路径。Uri url=new Uri(src_uri,new_uri);//转绝对路径方式的URL。在爬虫的过程中可能存在许多重复的URL,如果将每个URL进行匹配来判断是否重复需要消耗大量的时间。前面我们已经阐述过在提取URL时需要将其压缩编码传输,我们可以对其压缩后的编码建立Hash表,这样便可以判定URL是否重复。我们访问的URL大多数是以http://或https://开始而以.html、.asp、.com、.cn等常见的字符终止的,因此,当我们对字符进行hash时,应当去除开始和结尾的常见字符,这样可以减少碰撞发生的概率。本文提出了一种新的算法----M-Interval-Hash,可以计算URL的hash值:令M=去掉常见字符后的字符长度/N,代表在URL中选取字符时间隔的字符数。N是一个按照经验来设置的参数,例如,N=3,字符长度为36,则M=12,表示选取字符的间隔是12个字符。
2.2 代码自动注入模块
在对XSS漏洞进行挖掘时,需要注入代码来测试漏洞是否存在,而在XSS中,恶意代码的注入可以是在GET请求中,也可以是POST请求。所以,在代码自动注入时,应该考虑上述两种情形。在代码注入时,测试每一个注入点,测试时按照数据库中测试代码顺序依次从数据库中取出一条记录,直到数据库中的记录为空。
2.3 漏洞检测模块
代码注入完成之后,还需要对注入的结果进行检测,以确定是否存在该漏洞。本文通过匹配漏洞特征库来判断XSS漏洞是否执行成功。从漏洞特征库读取XSS注入漏洞的测试脚本,对每个GET变量和POST变量依次进行XSS攻击。然后分析从Web服务器端返回的响应消息,看其是否满足漏洞库中该漏洞的特征。若满足,则说明存在XSS漏洞,否则不存在。
XSS的测试效果很大程度上由测试脚本的质量决定,本方案选择的脚本为OWASP所推荐的测试脚本。
3 实验结果及比较
3.1 网络爬虫模块中URL去重算法测试
为了验证本文技术方案的可行性,首先对URL去重算法进行了验证,将M-Interval-Hash算法与MD5算法进行比较。实验环境采用一台计算机,CPU为Pentium E5300,内存为2GB。软件环境为Windows XP Professional版本 2002 Service Pack2和JDK 1.6,数据库为MySQL 5.5.20。在M-Interval-Hash算法中,为了测试方便,我们取与M相关的经验参数N=8,将该算法和MD5算法比较。
4.2 XSS漏洞检测测试
为测试本文技术的可行性,对一些网站进行了扫描,并和另外两种基于爬虫的检测工具Acunetix WVS Free Edition 6.5和XSSer 1.5进行比较。第一个网站测试环境为Apache 2.2.14+PHP;第二个网站测试环境为IIS 6.0+ASP。
表1为上述两种工具和本文技术扫描结果比较。
在表1中的第二个网站中存在Form表单,所以XSSer无法检测出XSS漏洞。
本文技术、Acunetix WVS 8和XSSer 1.5对XSS漏洞扫描的时间比较见表2。
通过表1和表2的数据可看出本文XSS漏洞挖掘技术相对Acunetix WVS和XSSer两种工具来说性能更佳。
4 结束语
对于Web攻击中的大量XSS攻击,本文提出了一种基于网络爬虫的XSS漏洞挖掘技术,为了提高网络爬虫的性能,在网络爬虫模块使用了M-Interval-Hash新算法,以实现URL去重,同时为了提高网页抓取速度,采用了异步I/O完成端口模型,漏洞检测模块则使用特征库匹配技术。通过实验证明,XXS漏洞检测效果较好,在邮箱XSS漏洞的挖掘、Web网站XSS漏洞的检测等方面均有成功的应用.
[参考文献]
[1]许思远,郑滔.服务器-客户端协作的跨站脚本攻击防御方法[J].计算机工程,2011,37(18):154-156.
[2]赵艳.基于网络爬虫的跨站脚本漏洞动态检测技术研究.西南交通大学硕士论文,2011.5.
摘 要:随着社会的发展和科技的进步,互联网已成为人类获取信息的重要工具。在Internet给信息社会带来的极大便利的同时,也带来了许多安全隐患,跨站脚本攻击(XSS)在众多的Web漏洞中位居榜首。为此,提出了一种基于网络爬虫的XSS漏洞挖掘技术,包括网络爬虫模块、代码自动注入模块和漏洞检测模块。通过实验证明,本文对XXS漏洞检测效果较好。
关键词:XSS;网络爬虫;漏洞挖掘
1 引言
Web技术是Internet上最具活力和发展潜力的技术,它广泛应用于商业、教育、娱乐等领域,但是它存在许多的漏洞。由于Internet的不安全性,许多恶意攻击者意图进行Web攻击。而在众多的Web攻击中,跨站脚本攻击(XSS)所占的比例非常大。XSS指的是恶意攻击者利用Web服务器中的漏洞将恶意代码插入远程Web页面,当用户访问此页面时,嵌入其中的代码便会执行,从而盗取用户的信息。跨站脚本攻击代码的种类非常多,对所有的用户输入进行检测是一件十分困难的事情。因而,本文提出了一种基于网络爬虫的XSS漏洞挖掘技术。
2 基于网络爬虫的XSS漏洞挖掘技术
基于网络爬虫的XSS 漏洞挖掘技术可以分为3个模块:网络爬虫模块、代码自动注入模块和漏洞检测模块。
2.1 网络爬虫模块
网络爬虫是搜索引擎的重要构件之一,它是一个自动下载程序。网络爬虫模块的具体过程是:网络爬虫从一个初始的URL出发,从该网页中不断地提取新的URL,然后将该URL按照FIFO顺序放入爬虫队列,从该爬虫队列中顺序取出新的URL,下载对应的页面,并从该新的页面中提取新的URL,不断地重复该过程,直到爬虫队列中不含有URL或达到页面最大深度。在网络爬虫过程中,需要不断向服务器发送Web请求,那么在数据传输过程中通过将编码进行压缩可以有效减少网络中传送的数据。Gzip是一种压缩效果十分好的压缩算法,通过该算法压缩的数据可以使压缩后的文件是原先文件的30%,在客户端对数据进行压缩后,该功能在服务器端也必须设置,这样服务器才能接受此请求,服务器端可以使用过滤器对其进行解压。网络爬虫在爬取链接时,需要管理很多的套接字,使用完成端口模型方式可以使系统达到最佳的性能。在Windows系统下,利用它不但可以接受套接字句柄,而且还可以接受其它服务。提供服务完成端口模型要求创建一个Windows完成端口对象,用它管理多个I/O请求。在对页面进行解析时采用正则表达式进行匹配,从而提取出所需的数据。利用正则表达式提取出URL后,还需要将它转换成绝对路径。Uri url=new Uri(src_uri,new_uri);//转绝对路径方式的URL。在爬虫的过程中可能存在许多重复的URL,如果将每个URL进行匹配来判断是否重复需要消耗大量的时间。前面我们已经阐述过在提取URL时需要将其压缩编码传输,我们可以对其压缩后的编码建立Hash表,这样便可以判定URL是否重复。我们访问的URL大多数是以http://或https://开始而以.html、.asp、.com、.cn等常见的字符终止的,因此,当我们对字符进行hash时,应当去除开始和结尾的常见字符,这样可以减少碰撞发生的概率。本文提出了一种新的算法----M-Interval-Hash,可以计算URL的hash值:令M=去掉常见字符后的字符长度/N,代表在URL中选取字符时间隔的字符数。N是一个按照经验来设置的参数,例如,N=3,字符长度为36,则M=12,表示选取字符的间隔是12个字符。
2.2 代码自动注入模块
在对XSS漏洞进行挖掘时,需要注入代码来测试漏洞是否存在,而在XSS中,恶意代码的注入可以是在GET请求中,也可以是POST请求。所以,在代码自动注入时,应该考虑上述两种情形。在代码注入时,测试每一个注入点,测试时按照数据库中测试代码顺序依次从数据库中取出一条记录,直到数据库中的记录为空。
2.3 漏洞检测模块
代码注入完成之后,还需要对注入的结果进行检测,以确定是否存在该漏洞。本文通过匹配漏洞特征库来判断XSS漏洞是否执行成功。从漏洞特征库读取XSS注入漏洞的测试脚本,对每个GET变量和POST变量依次进行XSS攻击。然后分析从Web服务器端返回的响应消息,看其是否满足漏洞库中该漏洞的特征。若满足,则说明存在XSS漏洞,否则不存在。
XSS的测试效果很大程度上由测试脚本的质量决定,本方案选择的脚本为OWASP所推荐的测试脚本。
3 实验结果及比较
3.1 网络爬虫模块中URL去重算法测试
为了验证本文技术方案的可行性,首先对URL去重算法进行了验证,将M-Interval-Hash算法与MD5算法进行比较。实验环境采用一台计算机,CPU为Pentium E5300,内存为2GB。软件环境为Windows XP Professional版本 2002 Service Pack2和JDK 1.6,数据库为MySQL 5.5.20。在M-Interval-Hash算法中,为了测试方便,我们取与M相关的经验参数N=8,将该算法和MD5算法比较。
4.2 XSS漏洞检测测试
为测试本文技术的可行性,对一些网站进行了扫描,并和另外两种基于爬虫的检测工具Acunetix WVS Free Edition 6.5和XSSer 1.5进行比较。第一个网站测试环境为Apache 2.2.14+PHP;第二个网站测试环境为IIS 6.0+ASP。
表1为上述两种工具和本文技术扫描结果比较。
在表1中的第二个网站中存在Form表单,所以XSSer无法检测出XSS漏洞。
本文技术、Acunetix WVS 8和XSSer 1.5对XSS漏洞扫描的时间比较见表2。
通过表1和表2的数据可看出本文XSS漏洞挖掘技术相对Acunetix WVS和XSSer两种工具来说性能更佳。
4 结束语
对于Web攻击中的大量XSS攻击,本文提出了一种基于网络爬虫的XSS漏洞挖掘技术,为了提高网络爬虫的性能,在网络爬虫模块使用了M-Interval-Hash新算法,以实现URL去重,同时为了提高网页抓取速度,采用了异步I/O完成端口模型,漏洞检测模块则使用特征库匹配技术。通过实验证明,XXS漏洞检测效果较好,在邮箱XSS漏洞的挖掘、Web网站XSS漏洞的检测等方面均有成功的应用.
[参考文献]
[1]许思远,郑滔.服务器-客户端协作的跨站脚本攻击防御方法[J].计算机工程,2011,37(18):154-156.
[2]赵艳.基于网络爬虫的跨站脚本漏洞动态检测技术研究.西南交通大学硕士论文,2011.5.