P9 PikaChu_CSRF(跨站请求伪造)

大家好!
我是小黄,很高兴又跟大家见面啦 !
拒绝水文,从我做起 !!!!
今天更新的是:


创建时间:2021年3月24日
软件: MindMaster Pro 、Burp Suite Pro 、火狐浏览器


前言:

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

场景模拟:

  • 小黑想要修改大白在购物网站tianxiewww.xx.com上填写的会员地址。
  • 先看下大白是如何修改自己的密码的:
  1. 登录—修改会员信息,他需要拥有:1,登录权限 2,修改个人信息的请求。
  2. 但是大白又不会把自己xxx网站的账号密码告诉小黑,那小黑怎么办?
  3. 于是他自己跑到www.xx.com上注册了一个自己的账号,然后修改了一下自己的个人信息(比如:E-mail地址),他发现修改的请求是:
  4. 【http://www.xxx.com/edit.php?email=xiaohei@88.com&Change=Change】
    于是,他实施了这样一个操作:把这个链接伪装一下,在小白登录xxx网站后,欺骗他进行点击,小白点击这个链接后,个人信息就被修改了,小黑就完成了攻击目的。
  • 为啥小黑的操作能够实现呢。有如下几个关键点:

1.www.xxx.com这个网站在用户修改个人的信息时没有过多的校验,导致这个请求容易被伪造;
  因此,我们判断一个网站是否存在CSRF漏洞,则小黑可能会这样做:
   欺骗小白访问埋伏了XSS脚本(盗取cookie的脚本)的页面,小白中招,小黑拿到小白的cookie,然后小黑顺利登录到小白的后台,小黑自己修改小白的相关信息。
4. 所以跟上面比一下,就可以看出CSRF与XSS的区别:CSRF是借用户的权限完成攻击,攻击者并没有拿到用户的权限,而XSS是直接盗取到了用户的权限,然后实施破坏。
5. 因此,网站如果要防止CSRF攻击,则需要对敏感信息的操作实施对应的安全措施,防止这些操作出现被伪造的情况,从而导致CSRF。比如:
  对敏感信息的操作增加安全的token;
  对敏感信息的操作增加安全的验证码;
  对敏感信息的操作实施安全的逻辑流程,比如修改密码时,需要先校验旧密码等。

一、CSRF(get)

P9 PikaChu_CSRF(跨站请求伪造)
P9 PikaChu_CSRF(跨站请求伪造)

漏洞分析

  • 根据提示 vince/allen/kobe/grady/kevin/lucy/lili,密码全部是123456
  • 正所谓遇事不决先抓包、我们打开 Burp Suite 抓个包看一下
  • 我试了几个账户发现好像只有这kobe能登录
P9 PikaChu_CSRF(跨站请求伪造) P9 PikaChu_CSRF(跨站请求伪造)
  • 尝试修改信息之后进行抓包,并记录一下URL
  • URL:IP地址/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=123231&phonenum=456456&add=4564564&email=4564564&submit=submit
P9 PikaChu_CSRF(跨站请求伪造)
P9 PikaChu_CSRF(跨站请求伪造) P9 PikaChu_CSRF(跨站请求伪造)
  • 根据记录的URL,我们来伪造一个URL来尝试一下进行修改个人信息:
  • 伪造的URL:IP地址/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=xiaohuang1&phonenum=xiaohuang2&add=xiaohuang3&email=xiaohuang4&submit=submit
  • 可以发现伪造的URL已经成功修改个人信息
P9 PikaChu_CSRF(跨站请求伪造)
  • 我们查看控制台的网络,当访问了我们构造的url后首先请求了用户基本信息页面响应码200,既登录成功(因为在浏览器另外一个窗口里还开着基本信息那个页面,所以当请求我们构造的url后浏览器会默认认为这是用户的正常请求操作,所以把那个我们已经登录了的页面的cookie发送到了我们新开的页面),然后重定向执行了我们构造的代码
P9 PikaChu_CSRF(跨站请求伪造) P9 PikaChu_CSRF(跨站请求伪造)

二、CSRF(post)

P9 PikaChu_CSRF(跨站请求伪造)
P9 PikaChu_CSRF(跨站请求伪造)

漏洞分析

  • 根据提示 vince/allen/kobe/grady/kevin/lucy/lili,密码全部是123456
  • 正所谓遇事不决先抓包、我们打开 Burp Suite 抓个包看一下
P9 PikaChu_CSRF(跨站请求伪造)
  • 尝试修改信息之后进行抓包,并记录一下URL
  • URL:IP地址/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=1231&phonenum=1234124&add=1241241&email=123124&submit=submit
  • 可以发现这道题的请求头为:POST /pikachu/vul/csrf/csrfpost/csrf_post_edit.php HTTP/1.1
P9 PikaChu_CSRF(跨站请求伪造)
P9 PikaChu_CSRF(跨站请求伪造)
  • 根据记录的URL,我们来伪造一个URL来尝试一下进行修改个人信息:
  • 伪造的URL:IP地址/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=xiaohuang1&phonenum=xiaohuang2&add=xiaohuang3&email=xiaohuang4&submit=submit
  • 可以发现伪造的URL已经成功修改个人信息
  • 来我们记录一下当前信息
P9 PikaChu_CSRF(跨站请求伪造)
  • 知道是post提交请求后,我们自己写一个post请求的表单,然后将这个html页面放在攻击者的服务器里,诱惑被攻击者去点击。
  • 当欺骗用户点击我的URL:http://127.0.0.1/pikachu/vul/csrf/csrfpost/csrf_post.php
  • 跳转页面之后点击 submit 信息已经成功修改
<!DOCTYPE html> <html> <head> <script> window.onload = function() {   document.getElementById("submit").click(); } </script> </head> 		<meta charset="utf-8"> <body> 	<h1>大爷来玩呀   !   让妲己看看你的心 !</h1> <form method="post" action="http://127.0.0.1/pikachu/vul/csrf/csrfpost/csrf_post_edit.php">     <input type="hidden" name="sex" value="girl" />     <input type="hidden" name="phonenum" value="12345678922" />     <input type="hidden" name="add" value="hacker" />     <input type="hidden" name="email" value="lucy@pikachu.com" />     <input type="submit" name="submit" value="submit" /> </form> </body> </html>  
P9 PikaChu_CSRF(跨站请求伪造)
P9 PikaChu_CSRF(跨站请求伪造)

三、CSRF Token

P9 PikaChu_CSRF(跨站请求伪造)
P9 PikaChu_CSRF(跨站请求伪造)

漏洞利用

  • 根据提示 vince/allen/kobe/grady/kevin/lucy/lili,密码全部是123456
  • 正所谓遇事不决先抓包、我们打开 Burp Suite 抓个包看一下
P9 PikaChu_CSRF(跨站请求伪造)
  • 打开 token_get_edit.php 查看Token 产生原因
P9 PikaChu_CSRF(跨站请求伪造)
P9 PikaChu_CSRF(跨站请求伪造)
  • 服务器端生成的token值会直接输出到前端,以隐藏表单的方式储存,在提交表单时会一同提交给服务器,服务器会将提交的token值与自身存储的token值比较,若一致才会进行下一步操作。
  • token在前端存储的位置:
P9 PikaChu_CSRF(跨站请求伪造)
P9 PikaChu_CSRF(跨站请求伪造)

四、CSRF 防范措施

  • 增加token验证(常用的做法)
    对关键操作增加token参数,token值必须随机,每次都不一样;
  • 关于安全的会话管理(避免会话被利用)

1、不要在客户端保存敏感信息(比如身份认证信息);

2、测试直接关闭,退出时的会话过期机制;

3、设置会话过期机制,比如15分钟内无操作,则自动登录超时;

  • 访问控制安全管理

1、敏感信息的修改时需要对身份进行二次认证,比如修改账号时,需要判断旧密码;

2、敏感信息的修改使用post,而不是get;

3、通过http头部中的referer来限制原页面。

  • 增加验证码(用户体验差)
    一般用于登录(防暴力破解),也可以用在其他重要信息操作的表单中(需要考虑可用性)

各位路过的朋友,如果觉得可以学到些什么的话,点个赞 再走吧,欢迎各位路过的大佬评论,指正错误,也欢迎有问题的小伙伴评论留言,私信。

每个小伙伴的关注都是本人更新博客的动力!!!
请微信搜索【 在下小黄 】文章更新将在第一时间阅读 !
P9 PikaChu_CSRF(跨站请求伪造)

把握现在 ,展望未来 ,加油 !


由于水平有限 ,写的难免会有些不足之处 ,恳请各位大佬不吝赐教 !

版权声明:玥玥 发表于 2021-03-25 7:23:55。
转载请注明:P9 PikaChu_CSRF(跨站请求伪造) | 女黑客导航