CN101883024B - 一种跨站点伪造请求的动态检测方法 - Google Patents
一种跨站点伪造请求的动态检测方法 Download PDFInfo
- Publication number
- CN101883024B CN101883024B CN2010102063558A CN201010206355A CN101883024B CN 101883024 B CN101883024 B CN 101883024B CN 2010102063558 A CN2010102063558 A CN 2010102063558A CN 201010206355 A CN201010206355 A CN 201010206355A CN 101883024 B CN101883024 B CN 101883024B
- Authority
- CN
- China
- Prior art keywords
- request
- suspect
- value
- parameter
- forged
- 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.)
- Expired - Fee Related
Links
- 238000001514 detection method Methods 0.000 title abstract description 14
- 238000012360 testing method Methods 0.000 claims abstract description 64
- 238000000034 method Methods 0.000 claims description 33
- 230000003068 static effect Effects 0.000 claims description 14
- 238000005242 forging Methods 0.000 claims description 12
- 230000008569 process Effects 0.000 claims description 11
- 230000009471 action Effects 0.000 claims description 7
- 230000008859 change Effects 0.000 claims description 5
- 238000012545 processing Methods 0.000 claims description 4
- 230000017105 transposition Effects 0.000 claims description 3
- 238000013461 design Methods 0.000 claims description 2
- 230000007613 environmental effect Effects 0.000 claims description 2
- 230000008929 regeneration Effects 0.000 claims description 2
- 238000011069 regeneration method Methods 0.000 claims description 2
- 230000008439 repair process Effects 0.000 abstract description 2
- 235000014510 cooky Nutrition 0.000 description 3
- 230000008676 import Effects 0.000 description 2
- 238000013475 authorization Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种跨站点伪造请求的动态检测方法,其步骤为:收集HTTP请求信息;根据收集到的信息,分析一个请求是否为CSRF嫌疑请求;针对嫌疑请求生成测试用例,找出嫌疑请求所包含的全部嫌疑参数。利用嫌疑参数生成若干伪造请求,每一个伪造请求形成一个测试用例;在生成嫌疑请求的环境重现时,执行每一个测试用例所对应的伪造请求;检测CSRF漏洞。根据嫌疑请求、嫌疑请求的执行信息、伪造请求和伪造请求的执行信息,分析伪造请求是否发现了Web应用中的CSRF漏洞,并形成报告,帮助Web应用开发者修复漏洞。本发明采用动态测试的方法检测CSRF漏洞,可以用较少的代价,快速而准确的发现Web应用中存在的CSRF漏洞。
Description
技术领域
本发明涉及Web应用安全性测试中的跨站点伪造请求(Cross-Site Request Forgery,CSRF)的动态检测,特别涉及通过分析HTTP参数和SQL语句操作数之间的对应关系来伪造HTTP请求,动态检测Web应用中存在的CSRF漏洞。
背景技术
Web应用中的某些操作需要一定的权限,这种权限一般和用户的账号关联。用户执行这些操作时,Web应用验证用户账户是否拥有相应的权限。显然不能要求用户每执行一次操作都输入账户来进行验证。现通用的做法是:用户登录之后,由用户的浏览器保存其账户信息,用户继续执行操作时,用保存的信息验证用户的权限。
Web应用是基于HTTP协议的,然而HTTP协议是一种无状态协议,协议本身无法保存用户的账户信息,故通常用浏览器以COOKIE的形式保存用户的账户信息。在COOKIE失效之前,所有从该浏览器发出的请求都将把这些COOKIE发送给对应的Web应用,即使该请求不是用户自主发送的。
要获取他人的账户信息比较困难,但是要了解Web应用的特性相对容易,特别是开源的和公用的Web应用,如论坛、网上银行等。攻击者很容易了解Web应用收到何种请求会执行何种操作,如网上银行收到何种请求将试图执行转账操作。故攻击者可根据Web应用的特性,事先伪造一个请求;估计受害者已经登录获得相应权限时,通过某种方式让受害者的浏览器执行该请求达到攻击目的,这就是跨站点伪造请求(CSRF)攻击。
跨站点伪造请求是当今Web应用面临的十大安全威胁之一。现在研究者们关注的大都是如何防范CSRF攻击,常用的防范方法有:(1)所有重要的HTTP请求都附加难以猜测的token,收到请求时验证token;(2)通过HTTP Refer验证发出请求的前一页面是不是期望的页面;(3)通过Ajax来发送请求,在请求中添加验证信息。这些方法或者严重影响Web应用的性能,或者难于实现,给使用者带来较大不变。
发明内容
本发明所要解决的技术问题是针对如何动态检测Web应用中的CSRF漏洞,而提供一种跨站点伪造请求的动态检测方法,该方法实现以较少的代价、快速、准确的发现Web应用中的CSRF漏洞。
为实现发明上述目的,本发明采用以下步骤:
1)收集HTTP请求信息;
2)根据收集到的信息,检测每个请求是否为CSRF嫌疑请求,具体过程为:
首先根据收集到的HTTP请求获取GET参数和POST参数集合;然后获取HTTP请求对应的修改型SQL语句操作数集合;最后分析HTTP参数和SQL语句操作数之间的关联;如果至少存在一个HTTP参数的值和某个操作数的值相等,那么该请求即为嫌疑请求,和操作数值相等的HTTP参数为嫌疑参数;
3)针对每个CSRF嫌疑请求,找出其所包含的全部嫌疑参数,为每个嫌疑参数生成一个伪造参数,再利用每个伪造参数生成一个对应的伪造请求,而每一个伪造请求再生成一个测试用例;其中生成伪造参数的过程是:针对嫌疑请求Rs,首先找出Rs的嫌疑参数集合,为每个嫌疑参数生成一个伪造参数,伪造参数的name和嫌疑参数的name相同,伪造参数的value按三种情况处理:整型数,浮点型数和字符串型;构造伪造参数value的对应规则如下:
规则1.如果value为一个整型数,分两种情况处理:
a)如果value为一个大于1的整数,则value减1;
b)如果value为一个小于或者等于1的整数,则value加1;
规则2.如果value为浮点型数;则将value最后一位加1再对10取余;
规则3.如果value为字符串型,分三种情况处理:
a)如果value最后两个字符不相同,则把这两个字符互换位置;
b)如果value最后两个字符相同,则比较倒数第一个和倒数第三个,如果也相同,则继续往前找,直到找到一个和最后一个字符不相同的字符为止;再把它们交换位置;
c)如果value只包含一个字符或者所有字符都相同,且最后一个字符不是‘a’,则直接把最后一个字符用‘a’替换;
如果value只包含一个字符或者所有字符都相同,且最后一个字符是‘a’,则直接把最后一个字符用‘b’替换;
根据伪造请求生成测试用例分两种情况:
情况1.如果请求方法为GET,此时用一个图像IMG标签来表示该请求;请求的GET参数附加在原URL之后形成新的URL;该URL设置为IMG标签的源SRC属性;在该IMG标签之外添加HTML文档声明之后,保存为一个静态文件,这个静态文件即测试用例;
情况2.如果请求方法为POST,此时用一个表单FORM标签来表示该请求;请求的GET参数附加在原URL之后形成新的URL;该URL设置为FORM标签的动作ACTION属性;请求的POST参数作为隐藏域放在FORM标签中;在该FORM标签之外添加HTML文档声明之后,保存为一个静态文件,这个静态文件即测试用例;
4)在生成嫌疑请求的环境重现时,执行每一个步骤3)生成的测试用例所对应的伪造请求,执行过程中,收集伪造请求的执行信息;
5)根据嫌疑请求、嫌疑请求的执行信息、伪造请求和伪造请求的执行信息,检测伪造请求是否发现了Web应用中的CSRF漏洞,并形成报告,帮助Web应用开发者修复漏洞。
上述步骤1)的具体过程是:设计一个HTTP信息收集模块,并部署在待测试的Web应用中;该HTTP信息收集模块分成两个部分,其一是请求信息收集模块,收集HTTP请求中的信息为:(1)请求的URL、时间和请求方法,(2)GET数据和POST数据;其二是SQL语句收集函数,收集HTTP请求中的信息为(3)动态生成的SQL语句。
上述步骤4)的测试用例执行过程为:首先用浏览器打开嫌疑请求所在的Web应用,重现生成嫌疑请求的环境条件;然后用同一浏览器逐个执行嫌疑请求的测试用例,即打开对应的静态HTML文件;最后运用HTTP信息收集模块收集测试用例的执行信息。
上述步骤5)中CSRF漏洞的检测过程为:首先提取每一个测试用例的执行信息,该信息对应一个伪造请求Rf,找出伪造请求Rf所对应的嫌疑请求Rs、Rf所有的嫌疑参数、Rf对应的伪造参数、以及伪造参数对应的嫌疑参数;如果Rf伪造参数的值成为了Rf某个修改型SQL语句的操作数,且其伪造参数的值所在的SQL语句和嫌疑参数的值所在SQL语句相似,即这两个SQL语句除嫌疑参数值和自动变更的参数值不同外,其它都是相同的;且这两个值在各自SQL语句中的位置相同,那么通过这个请求就发现了Web应用中的CSRF漏洞。
跨站点伪造请求CSRF已经成为Web应用安全的重要威胁之一。目前尚缺乏行之有效的CSRF漏洞防范和检测方法。文发明方法通过记录特权操作的HTTP请求信息和对应的修改型SQL语句,基于操作数比对查找HTTP请求的CSRF嫌疑参数,再根据嫌疑参数逐一生成测试用例。采用动态测试的方法检测CSRF漏洞,可以用较少的代价,快速而准确的发现Web应用中存在的CSRF漏洞。其中唯一可能影响Web应用性能的数据记录和采集操作同Web应用的日志操作类似,实验表明其影响可以忽略。采用本发明方法对多个实际应用的Web网站实施测试,测试结果表明本发明方法具有较高的测试效率和准确性。特别对一些在防范CSRF方面做了很多工作的网站,本发明方法仍能够以较高的效率发现其中的CSRF漏洞。
下面结合附图进行详细说明。
附图说明
图1是跨站点伪造请求的动态检测方法框架图,
图2是HTTP请求信息收集模块的流程图,
图3是CSRF嫌疑请求检测模块的流程图,
图4是获取一个SQL语句的操作数集合的流程图,
图5是测试用例生成模块的流程图,
图6是测试用例执行模块的流程图,
图7是CSRF漏洞检测模块的流程图。
具体实施方式
如图1所示,本发明由HTTP请求信息收集模块,CSRF嫌疑请求检测模块,测试用例生成模块,测试用例执行模块和CSRF漏洞检测模块五个模块按照“流”的体系构成。首先收集的HTTP请求信息为下一步分析所用;根据收集到的信息,可以分析一个请求是否为CSRF嫌疑请求,以及请求中哪些参数可能成为攻击时的利用对象,这些参数被称为嫌疑参数;利用嫌疑参数可为每个嫌疑请求生成若干伪造请求,进而生成测试用例;待生成嫌疑请求的条件满足时(用户浏览器获得了必要的认证信息),执行测试用例;根据嫌疑请求、嫌疑请求的执行信息以及伪造请求和伪造请求的执行信息,可分析出是否发现了Web应用中的CSRF漏洞,最后给出详细的报告信息以便开发者修复漏洞。
1、HTTP请求信息收集
如图2所示,为动态收集HTTP请求信息,本发明中设计了一个信息收集模块部署在待测试的Web应用中。对每个HTTP请求,依次收集以下信息:(1)请求的基本信息,包括请求的URL、时间、以及请求方法(GET或者POST);(2)GET数据和POST数据;(3)动态生成的SQL语句。
Web应用普遍拥有以下两个特点:其一Web应用中存在一个全局模块,用来完成Web应用的基本配置,如数据库连接。所有HTTP请求处理模块都先加载该模块,然后执行其它操作。其二Web应用中存在一个数据库操作模块,所有的数据库操作都由该模块来完成。为收集信息(1)和(2),只需在全局文件中加入信息收集模块,并调用其中的信息收集函数;为收集信息(3),只需在数据库操作模块中加入SQL语句收集函数(包含在信息收集模块中),让SQL语句在执行之前被收集起来,这样就可以完成对所有HTTP请求的信息的收集。
如果Web应用不具备上述两个特点,为收集信息(1)和(2),必须在所有HTTP请求处理模块的开始出加载信息收集模块,并调用信息收集函数;为收集信息(3),必须在所有SQL语句执行之前,调用SQL语句收集函数。
GET数据和POST数据都是以<name,value>的形式存在,如果name不变但是value是可变的,则称其为GET参数和POST参数,本发明统称它们为HTTP参数。
2、CSRF嫌疑请求检测
如果一个请求可以被攻击者所利用,使Web应用遭受CSRF攻击,那么该请求是CSRF请求。
该模块是本发明独创点之一,主要功能有:(1)判断一个HTTP请求R是否为CSRF嫌疑请求;(2)如果R为嫌疑请求则找出R的所有嫌疑参数。
如图3所示,R默认为非嫌疑请求,根据HTTP请求信息收集模块收集到的信息,取出R的GET参数和(或)POST参数构成集合gp_set;取出R中所有的修改型SQL语句。运用图4所示方法,可得到这些SQL语句的操作数集合operand_set。
遍历gp_set中的参数p,如果p的值和operand_set中的任意一个操作数op的值相等,那么HTTP参数p就是一个嫌疑参数。只要请求R中至少存在一个嫌疑参数,那么R就是一个CSRF嫌疑请求。因为在该请求中,攻击者可能通过伪造参数的值修改后端数据库。该阶段处理后的输出为:(1)R是否为一个嫌疑请求;(2)如果是,R中嫌疑参数的集合。
本发明把SQL语句分为两类:(1)修改型SQL语句,如插入(insert)、修改(update)、和删除(delete)语句,(2)查询型语句,即查询语句(select)。因为查询型语句不会修改后端数据库状态,故不会被CSRF攻击所利用。如图4所示,在2.1.1步,输入一个修改型SQL语句,逐个读取语句中的单词,如果一个单词为运算符的运算对象,则该单词为操作数,故把其加入到SQL语句的操作数集合中。成批输入修改型SQL语句时,只需对这些语句逐个扫描即可找出它们的所有操作数以构成operand_set。
3、测试用例生成
一个CSRF嫌疑请求,需要进一步证实才能确定其是否为真正的CSRF请求。利用CSRF嫌疑请求可生成若干伪造请求,进而形成测试用例。通过执行测试用例可证实一个CSRF嫌疑请求是否为真正的CSRF请求。
本模块是本发明的另一个独创点,如图5所示,输入为一个CSRF嫌疑请求Rs,输出为Rs对应的测试用例集。输入Rs可取到其所有嫌疑参数(由CSRF嫌疑请求检测模块输出)构成一个集合sp_set。对每一个嫌疑参数ps生成一个与之对应的伪造参数pf,pf的name和ps的name一致;pf的value生成遵循一个原则:对ps的value做改变(伪造),且只做尽可能小的改变。数据库中的数据大致可分为两类:字符串型和数值型;其中数值型又主要包括整型和浮点型。鉴于整型数和浮点型数的区别较大,故本发明分三种情况来生成伪造value,具体生成规则如下:
规则1.如果ps的value只包含数字且符合整数书写规则,则其value为一个整型数,分两种情况处理:
a)如果ps的value为一个大于1的整数,则pf的value为ps的value减1;
b)如果ps的value为一个小于或者等于1整数,则pf的value为ps的value加1;
规则2.如果ps的value只包含数字和小数点且符合浮点数书写规则,则其value为浮点型数。此时将ps的value最后一位加1再对10取余,并把新的浮点型value作为pf的value。
规则3.如果不是以上两种情况,本发明把ps的value视为字符串型。在伪造新字符串时,采用以下方法:
a)如果value最后两个字符不相同,则把这两个字符互换位置,生成新的字符串;
b)如果value最后两个字符相同,则比较倒数第一个和倒数第三个,如果也相同,
则继续往前找,直到找到一个和最后一个字符不相同的字符为止;再把它们交换位置生成新的字符串;
c)如果value只包含一个字符或者所有字符都相同,则直接把最后一个字符用‘a’(若最后一个字符不是‘a’)或者‘b’(若最后一个字符是‘a’)替换。
把伪造的新字符串作为pf的value。
遍历sp_set后,可得到Rs的伪造参数集合fp_set。对fp_set中的每一个伪造参数pf,本发明生成一个伪造请求Rf,Rf的URL(不包含后面的GET参数)、请求方法和Rs保持一致。本发明首先按照选定伪造参数pf生成一个GET参数赋给Rf,再把Rs中除伪造参数以外其它的GET参数和POST参数拷贝给Rf。
接下来根据Rf生成测试用例,分两种情况:
情况1.如果Rf对应的请求方法为GET,则Rf只有GET参数。此时本发明用一个图像(IMG)标签来表示该请求。Rf的参数以GET参数的形式附加在Rf的URL之后,形成新的URL,并把该URL设置为IMG标签的源(SRC)属性。在该IMG标签之外添加HTML文档声明之后,保存为一个静态文件,这个静态文件即测试用例。
情况2.如果Rf对应的请求方法为POST,则Rf会同时拥有GET参数和POST参数。此时本发明用一个表单(FORM)标签表示该请求。Rf的GET参数附加在Rf的URL之后,形成的新URL,并把该URL设置为FORM标签的动作(ACTION)属性;Rf的POST参数形成为隐藏域(<INPUT TYPE=“HIDDEN”/>),放在FORM标签之中。在FORM标签之外添加HTML文档声明之后,保存为一个静态文件,这个静态文件即测试用例。
遍历fp_set中的所有参数,分别生成对应的伪造请求Rf后,就可得到针对嫌疑请求Rs的测试用例集tc_set。
4、测试用例执行
得到嫌疑请求Rs的测试用例集tc_set后,就可以展开测试了。如图6所示,测试时先用浏览器打开Rs所在的Web应用,并重现产生Rs的环境(用户用浏览器登录Web应用,获得权限信息)。对tc_set中的每个测试用例t(用HTML文件表示),用浏览器打开它。打开HTML文件的过程即执行测试用例的过程。
测试用例执行时,在Web应用服务器端将收到伪造请求Rf的执行要求,此时第1阶段部署的HTTP信息收集模块将记录Rf的执行信息。tc_set中的所有测试用例执行结束后,就得到嫌疑请求Rs的测试结果集rs_set。
为提高执行效率,可以用同一浏览器一次打开多个测试用例。
5、CSRF漏洞检测
本模块也是本发明的独创点。如图7所示,得到Rs的测试结果集rs_set后,就可分析通过上述测试是否发现了Web应用中的CSRF漏洞。对rs_set中每条记录对应的伪造请求Rf,找出以下内容:(1)Rf对应的原始请求Rs;(2)Rf自身的所有嫌疑参数;(3)伪造请求Rf所用的伪造参数pf,以及pf对应的嫌疑参数ps。检测分两种情况:
情况1.如果pf的值没有成为Rf某个修改型SQL语句的操作数,则通过Rf没有发现Web应用中的CSRF漏洞。
情况2.如果pf的值成为了Rf某个修改型SQL语句的操作数,且该值所在的修改型SQL语句和ps值所在的SQL语句相似(这两个SQL语句除嫌疑参数值和自动变更的参数值不同外,其它都是相同的);且这两个值在两个SQL语句的位置也相同,那么通过该Rf就发现了Web应用中的CSRF漏洞。这是因为Rf用伪造参数pf,通过修改型SQL语句更改了后端数据库。
针对嫌疑请求Rs,若rs_set中至少有一条记录对应的Rf发现Web应用的CSRF漏洞,则通过Rs可构造CSRF攻击,同时分析Rs可帮助修复或避免Web应用的CSRF漏洞。
本发明被实现为一个Web应用测试工具。从中国站长站下载的五个被广泛使用的PHP Web应用作为测试对象。这五个Web应用的基本信息如表1所示。五个测试对象具有一定代表性,体现在以下三个方面:
(1)规模,既有大型的Web应用,如:Discuz!、织梦内容管理系统;也有小型的Web应用,如:BZCMS;
(2)类别,五个Web应用来自四个不同应用类别,包括博客和论坛等;
(3)成熟度,既有推出数百个版本的Discuz!和织梦内容管理系统,也有只推出1.1版本的BZCMS系统。其中Discuz!被数十万用户所使用。
表1
Web应用名称 | 版本 | 大小 | PHP文件个数 | 代码行数 | 类别 |
DYHB-blog | 1.3 | 1.84M | 182个 | 12633行 | 博客 |
闻名weenCompany企业网站系统 | 4.0 | 2.86M | 105个 | 28660行 | 整站 |
Discuz! | 7.2 | 10.9M | 517个 | 124323行 | 论坛 |
BZCMS | 1.1 | 12.6M | 80个 | 9406行 | 内容管理 |
织梦内容管理系统 | 5.1 | 21M | 524个 | 74165行 | 内容管理 |
从表2的测试结果数据可知,本发明提出的方法能够有效发现CSRF嫌疑请求和漏洞。大多数识别出的嫌疑请求经动态检测发现了CSRF漏洞,识别准确率最高达100%,总平均可达45%。另外生成的测试用例发现CSRF漏洞的成功率也很高,最高达63.2%,总平均有31.1%,具有较高的测试效率。特别值得一提的是Discuz!和织梦内容系统,它们经过多年的更新,在防范CSRF方面做了很多工作,但本发明方法还是能够在这些Web应用中检测出CSRF漏洞。
表2
Claims (3)
1.一种跨站点伪造请求CSRF的动态检测方法,其特征在于以下步骤:
1)收集HTTP请求信息;
2)根据收集到的信息,检测每个请求是否为CSRF嫌疑请求,具体过程为:
首先根据收集到的HTTP请求获取GET参数和POST参数集合;然后获取HTTP请求对应的修改型SQL语句操作数集合;最后分析HTTP参数和SQL语句操作数之间的关联;如果至少存在一个HTTP参数的值和某个操作数的值相等,那么该请求即为嫌疑请求,和操作数值相等的HTTP参数为嫌疑参数;
3)针对每个CSRF嫌疑请求,找出其所包含的全部嫌疑参数,为每个嫌疑参数生成一个伪造参数,再利用每个伪造参数生成一个对应的伪造请求,而每一个伪造请求再生成一个测试用例;其中生成伪造参数的过程是:针对嫌疑请求Rs,首先找出Rs的嫌疑参数集合,为每个嫌疑参数生成一个伪造参数,伪造参数的name和嫌疑参数的name相同,伪造参数的value按三种情况处理:整型数,浮点型数和字符串型;构造伪造参数value的对应规则如下:
规则1.如果value为一个整型数,分两种情况处理:
a)如果value为一个大于1的整数,则value减1;
b)如果value为一个小于或者等于1的整数,则value加1;
规则2.如果value为浮点型数;则将value最后一位加1再对10取余;
规则3.如果value为字符串型,分三种情况处理:
a)如果value最后两个字符不相同,则把这两个字符互换位置;
b)如果value最后两个字符相同,则比较倒数第一个和倒数第三个,如果也相同,则继续往前找,直到找到一个和最后一个字符不相同的字符为止;再把它们交换位置;
c)如果value只包含一个字符或者所有字符都相同,且最后一个字符不是‘a’,则直接把最后一个字符用‘a’替换;
如果value只包含一个字符或者所有字符都相同,且最后一个字符是‘a’,则直接把最后一个字符用‘b’替换;
根据伪造请求生成测试用例分两种情况:
情况1.如果请求方法为GET,此时用一个图像IMG标签来表示该请求;请求的GET参数附加在原URL之后形成新的URL;该URL设置为IMG标签的源SRC属性;在该IMG标签之外添加HTML文档声明之后,保存为一个静态文件,这个静态文件即测试用例;
情况2.如果请求方法为POST,此时用一个表单FORM标签来表示该请求;请求的GET参数附加在原URL之后形成新的URL;该URL设置为FORM标签的动作ACTION属性;请求的POST参数作为隐藏域放在FORM标签中;在该FORM标签之外添加HTML文档声明之后,保存为一个静态文件,这个静态文件即测试用例;
4)在生成嫌疑请求的环境重现时,执行每一个步骤3)生成的测试用例所对应的伪造请求,执行过程中,收集伪造请求的执行信息;
5)根据嫌疑请求、嫌疑请求的执行信息、伪造请求和伪造请求的执行信息,检测伪造请求是否发现了Web应用中的CSRF漏洞,并形成报告,帮助Web应用开发者修复漏洞;其中CSRF漏洞的检测过程具体为:首先提取每一个测试用例的执行信息,该信息对应一个伪造请求Rf,找出伪造请求Rf所对应的嫌疑请求Rs、Rf所有的嫌疑参数、Rf对应的伪造参数、以及伪造参数对应的嫌疑参数;如果Rf伪造参数的值成为了Rf某个修改型SQL语句的操作数,且其伪造参数的值所在的SQL语句和嫌疑参数的值所在SQL语句相似,即这两个SQL语句除嫌疑参数值和自动变更的参数值不同外,其它都是相同的;且这两个值在各自SQL语句中的位置相同,那么通过这个请求就发现了Web应用中的CSRF漏洞。
2.根据权利要求1所述的跨站点伪造请求CSRF的动态检测方法,其特征在于步骤1)的具体过程是:设计一个HTTP信息收集模块,并部署在待测试的Web应用中;该HTTP信息收集模块分成两个部分,其一是请求信息收集模块,收集HTTP请求中的信息为:(1)请求的URL、时间和请求方法,(2)GET数据和POST数据;其二是SQL语句收集函数,收集HTTP请求中的信息为(3)动态生成的SQL语句。
3.根据权利要求1或2所述的跨站点伪造请求CSRF的动态检测方法,其特征在于步骤4)的测试用例执行过程为:首先用浏览器打开嫌疑请求所在的Web应用,重现生成嫌疑请求的环境条件;然后用同一浏览器逐个执行嫌疑请求的测试用例,即打开对应的静态HTML文件;最后运用HTTP信息收集模块收集测试用例的执行信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010102063558A CN101883024B (zh) | 2010-06-23 | 2010-06-23 | 一种跨站点伪造请求的动态检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010102063558A CN101883024B (zh) | 2010-06-23 | 2010-06-23 | 一种跨站点伪造请求的动态检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101883024A CN101883024A (zh) | 2010-11-10 |
CN101883024B true CN101883024B (zh) | 2012-02-01 |
Family
ID=43054922
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010102063558A Expired - Fee Related CN101883024B (zh) | 2010-06-23 | 2010-06-23 | 一种跨站点伪造请求的动态检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101883024B (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103023710B (zh) * | 2011-09-21 | 2016-06-08 | 阿里巴巴集团控股有限公司 | 一种安全测试系统和方法 |
CN103312666B (zh) * | 2012-03-09 | 2016-03-16 | 腾讯科技(深圳)有限公司 | 一种防御跨站请求伪造csrf攻击的方法、系统和装置 |
CN103428249B (zh) * | 2012-05-23 | 2016-02-03 | 深圳市腾讯计算机系统有限公司 | 一种http请求包的收集及处理方法、系统和服务器 |
CN102752405B (zh) * | 2012-07-27 | 2016-05-11 | 杭州瑟达智能科技有限公司 | 一种互联网对电话的通话系统及通话方法 |
CN103679018B (zh) * | 2012-09-06 | 2018-06-12 | 百度在线网络技术(北京)有限公司 | 一种检测csrf漏洞的方法和装置 |
CN104636664B (zh) * | 2013-11-08 | 2018-04-27 | 腾讯科技(深圳)有限公司 | 基于文档对象模型的跨站脚本攻击漏洞检测方法及装置 |
CN104660556B (zh) * | 2013-11-20 | 2018-06-01 | 深圳市腾讯计算机系统有限公司 | 跨站伪造请求漏洞检测的方法及装置 |
CN105635064B (zh) * | 2014-10-31 | 2019-12-06 | 新华三技术有限公司 | Csrf攻击检测方法及装置 |
CN105991615B (zh) * | 2015-03-04 | 2019-06-07 | 杭州迪普科技股份有限公司 | 基于csrf攻击的防护方法及装置 |
KR101885615B1 (ko) * | 2016-07-19 | 2018-08-06 | 주식회사 스패로우 | 공격 문자열 생성 방법 및 장치 |
CN106302481A (zh) * | 2016-08-19 | 2017-01-04 | 中国银联股份有限公司 | 检测WebSocket跨站请求伪造漏洞的方法和装置 |
CN108809890B (zh) * | 2017-04-26 | 2021-05-25 | 腾讯科技(深圳)有限公司 | 漏洞检测方法、测试服务器及客户端 |
CN107294994B (zh) * | 2017-07-06 | 2020-06-05 | 网宿科技股份有限公司 | 一种基于云平台的csrf防护方法和系统 |
CN107609401A (zh) * | 2017-08-03 | 2018-01-19 | 百度在线网络技术(北京)有限公司 | 自动测试方法及装置 |
CN107861969B (zh) * | 2017-09-14 | 2020-10-02 | 平安普惠企业管理有限公司 | 语句修改方法、扫描平台和计算机可读存储介质 |
CN107682346B (zh) * | 2017-10-19 | 2021-06-25 | 南京大学 | 一种csrf攻击的快速定位与识别系统和方法 |
CN109067769A (zh) * | 2018-09-03 | 2018-12-21 | 浙江农林大学暨阳学院 | 一种利用身份认证机制来进行csrf防护方法 |
CN111212016B (zh) * | 2018-11-21 | 2022-09-23 | 阿里巴巴集团控股有限公司 | 跨站请求处理方法、装置及电子设备 |
CN111083007B (zh) * | 2019-11-21 | 2022-07-29 | 京信网络系统股份有限公司 | 测试方法、装置、计算机设备和存储介质 |
CN115967551B (zh) * | 2022-12-12 | 2024-05-17 | 中国人民解放军国防科技大学 | 基于漏洞信息引导的服务端请求伪造漏洞检测方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101231614B (zh) * | 2008-02-02 | 2010-06-02 | 南京大学 | 一种基于执行轨迹块相似度的软件缺陷定位方法 |
CN101594343B (zh) * | 2008-05-29 | 2013-01-23 | 国际商业机器公司 | 安全提交请求的装置和方法、安全处理请求的装置和方法 |
-
2010
- 2010-06-23 CN CN2010102063558A patent/CN101883024B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN101883024A (zh) | 2010-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101883024B (zh) | 一种跨站点伪造请求的动态检测方法 | |
Gupta et al. | PHP-sensor: a prototype method to discover workflow violation and XSS vulnerabilities in PHP web applications | |
CN107426181B (zh) | 恶意Web访问请求的拦截方法及装置 | |
CN103559235B (zh) | 一种在线社交网络恶意网页检测识别方法 | |
US8225402B1 (en) | Anomaly-based detection of SQL injection attacks | |
US10187412B2 (en) | Robust representation of network traffic for detecting malware variations | |
CN102790762A (zh) | 基于url分类的钓鱼网站检测方法 | |
CN103238308B (zh) | 传播源标识信息的方法和系统 | |
CN102739679A (zh) | 一种基于url分类的钓鱼网站检测方法 | |
CN107392016A (zh) | 一种基于代理的Web数据库攻击行为检测系统 | |
Singh et al. | A network based vulnerability scanner for detecting SQLI attacks in web applications | |
Kar et al. | SQLiDDS: SQL injection detection using query transformation and document similarity | |
CN102999723A (zh) | 主动防御xss攻击的数据防御组件生成方法及其装置 | |
CN105138907A (zh) | 一种主动探测被攻击网站的方法和系统 | |
CN107871080A (zh) | 大数据混合式Android恶意代码检测方法及装置 | |
CN103366120A (zh) | 基于脚本的漏洞攻击图生成方法 | |
Sanglerdsinlapachai et al. | Web phishing detection using classifier ensemble | |
McGahagan et al. | A comprehensive evaluation of webpage content features for detecting malicious websites | |
Priyaa et al. | Fragmented query parse tree based SQL injection detection system for web applications | |
US11539730B2 (en) | Method, device, and computer program product for abnormality detection | |
Bai et al. | Dynamic k-gram based software birthmark | |
CN104657504A (zh) | 一种文件快速识别方法 | |
Graupner et al. | Automated parsing and interpretation of identity leaks | |
Gadgikar | Preventing SQL injection attacks using negative tainting approach | |
KR101893029B1 (ko) | 머신 러닝 기반의 취약점 정보를 분류하는 방법 및 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120201 Termination date: 20140623 |
|
EXPY | Termination of patent right or utility model |