Pikachu-CSRF(跨站请求伪造)

栏目: IT技术 · 发布时间: 4年前

内容简介:----

Cross-site request forgery 简称为 “CSRF” ,在 CSRF 的攻击场景中攻击者会伪造一个请求(这个请求一般是一个链接),然后欺骗目标用户进行点击,用户一旦点击了这个请求,整个攻击就完成了。所以 CSRF 攻击也成为 "one click" 攻击。 很多人搞不清楚 CSRF 的概念,甚至有时候会将其和 XSS 混淆 , 更有甚者会将其和越权问题混为一谈 , 这都是对原理没搞清楚导致的。

这里列举一个场景解释一下,希望能够帮助你理解。

场景需求:

小黑想要修改大白在购物网站 tianxiewww.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

-- 对敏感信息的操作增加安全的验证码;

--

对敏感信息的操作实施安全的逻辑流程,比如修改密码时,需要先校验旧密码等。

CSRF get

1. 首先使用 vince的账号登陆进去

Pikachu-CSRF(跨站请求伪造)

2. 点击修改信息,把住址修改成 chain123,并抓包下来

Pikachu-CSRF(跨站请求伪造)

3.退出vince 的账号,使用 kobe账号登录,可以看到kobe的住址是nba lakes

Pikachu-CSRF(跨站请求伪造)

4. 在登录上 kobe 账号的情况下,点击抓包下来的链接,使其可以修改 kobe 住址

Pikachu-CSRF(跨站请求伪造)

5. 刷新过后发现个人信息已改变

Pikachu-CSRF(跨站请求伪造)

CSRF post

1. 如果是 POST 型的,所有参数在请求体中提交,我们不能通过伪造 URL 的方式进行攻击

Pikachu-CSRF(跨站请求伪造)

2. 这里的攻击方式跟 XSS POST 类型是一样的,攻击者可以搭建一个站点,在站点上做一个表单,诱导 lucy 点击这个链接,当用户点击时,就会自动向存在 CSRF 的服务器提交 POST 请求修改个人信息

编写一个 post.html 页面,代码如下所示,本文把此页面放到 Kali /var/www/html/pikachu/doge_csrf 下,然后启动 apache 服务

<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>

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

CSRF token

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

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

Pikachu-CSRF(跨站请求伪造)

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


以上所述就是小编给大家介绍的《Pikachu-CSRF(跨站请求伪造)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

素数之恋

素数之恋

(美)约翰·德比希尔 / 陈为蓬 / 上海科技教育出版社 / 2008-12-01 / 34.00元

1859年8月,没什么名气的32岁数学家黎曼向柏林科学院提交了一篇论文,题为“论小于一个给定值的素数的个数”。在这篇论文的中间部分,黎曼作了一个附带的备注——一个猜测,一个假设。他向那天被召集来审查论文的数学家们抛出的这个问题,结果在随后的年代里给无数的学者产生了近乎残酷的压力。时至今日,在经历了150年的认真研究和极力探索后,这个问题仍然悬而未决。这个假设成立还是不成立? 已经越来越清楚,......一起来看看 《素数之恋》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具