发明名称 一种跨站点伪造请求的动态检测方法
摘要 本发明公开了一种跨站点伪造请求的动态检测方法,其步骤为:收集HTTP请求信息;根据收集到的信息,分析一个请求是否为CSRF嫌疑请求;针对嫌疑请求生成测试用例,找出嫌疑请求所包含的全部嫌疑参数。利用嫌疑参数生成若干伪造请求,每一个伪造请求形成一个测试用例;在生成嫌疑请求的环境重现时,执行每一个测试用例所对应的伪造请求;检测CSRF漏洞。根据嫌疑请求、嫌疑请求的执行信息、伪造请求和伪造请求的执行信息,分析伪造请求是否发现了Web应用中的CSRF漏洞,并形成报告,帮助Web应用开发者修复漏洞。本发明采用动态测试的方法检测CSRF漏洞,可以用较少的代价,快速而准确的发现Web应用中存在的CSRF漏洞。
申请公布号 CN101883024B 申请公布日期 2012.02.01
申请号 CN201010206355.8 申请日期 2010.06.23
申请人 南京大学 发明人 彭树深;顾庆;陈道蓄
分类号 H04L12/26(2006.01)I;H04L29/06(2006.01)I 主分类号 H04L12/26(2006.01)I
代理机构 江苏圣典律师事务所 32237 代理人 黄振华
主权项 一种跨站点伪造请求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漏洞。
地址 210093 江苏省南京市汉口路22号蒙民伟楼512A