前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Pikachu】CSRF(跨站请求伪造)

【Pikachu】CSRF(跨站请求伪造)

作者头像
菜菜有点菜
发布2022-03-17 17:28:34
5180
发布2022-03-17 17:28:34
举报
文章被收录于专栏:白菜博客白菜博客

概述

Cross-site request forgery简称为“CSRF”,

在CSRF的攻击场景中攻击者会伪造一个请求(这个请求一般是一个链接),

然后欺骗目标用户进行点击,用户一旦点击了这个请求,整个攻击就完成了。

所以CSRF攻击也成为"one click"攻击。

场景拓朴图

此时黑客想要修改lucy的信息 怎么做?

-lucy的登录权限

黑客将修改个人信息的请求伪造一下,发送给Lucy诱使其在登录的情况下访问url。

漏洞原理

为什么黑客的操作可以实现?

1.www.xxx.com这个网站在用户修改个人的信息时没有过多的校验,导致这个请求容易被伪造; --因此,我们判断一个网站是否存在CSRF漏洞,其实就是判断其对关键信息(比如密码等敏感信息)的操作(增删改)是否容易被伪造。 2.小白点击了小黑发给的链接,并且这个时候小白刚好登录在购物网上; --如果小白安全意识高,不点击不明链接,则攻击不会成功,又或者即使小白点击了链接,但小白此时并没有登录购物网站,也不会成功。 --因此,要成功实施一次CSRF攻击,需要“天时,地利,人和”的条件。

CSRF && XSS的区别??

如果小黑事先在xxx网的首页如果发现了一个XSS漏洞,则小黑可能会这样做: 欺骗小白访问埋伏了XSS脚本(盗取cookie的脚本)的页面,小白中招, 小黑拿到小白的cookie,然后小黑顺利登录到小白的后台,小黑自己修改小白的相关信息。 所以跟上面比一下,就可以看出CSRF与XSS的区别: CSRF是借用户的权限完成攻击,攻击者并没有拿到用户的权限,而XSS是直接盗取到了用户的权限,然后实施破坏。 因此,网站如果要防止CSRF攻击,则需要对敏感信息的操作实施对应的安全措施,防止这些操作出现被伪造的情况,从而导致CSRF。

漏洞复现&&利用方法

CSRF(GET)

  1. 修改信息提交的时候抓包

2.右键数据包Copy URL

代码语言:javascript
复制
http://192.168.0.108/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=younger_sister&phonenum=13888888888&add=%E5%9C%B0%E7%90%83%E6%9D%91%E5%87%BA%E9%97%A8%E5%B7%A6%E6%8B%90&email=hack%40thecat.top&submit=submit
  1. 模拟用户登录状态下访问黑客的url,成功修改lucy信息。

CSRF(POST)

1.修改信息提交的时候抓包

2.PoC

右键数据包——Engagement tools——Generate CSRF PoC;

Copy HTML——在服公网创建一个CSRF_PoC.html将代码粘贴进行(能够访问即可)——将URL发送给用户点击

3.模拟用户登录状态下访问黑客构造的POST表单地址,成功修改lucy信息。

代码语言:javascript
复制
192.168.0.108/POC/CSRF_PoC.html

CSRF Token

Token是如何防止CSRF/XSRF漏洞的? CSRF的主要问题是敏感操作的连接容易被伪造,如何让这个链接不被伪造? 每次请求增加一个随机码,后台每次对这个随机码进行验证。

靶场实验,抓包分析。发现每次传输,参数都有携带一个Token(这就就是用于校验身份的)

token=593295f2b3cd0bebc3433489026

代码语言:javascript
复制
GET /pikachu/vul/csrf/csrftoken/token_get_edit.php?sex=fw&phonenum=13145201111&add=%E5%9C%B0%E7%90%83%E6%9D%91%E5%87%BA%E9%97%A8%E5%8F%B3%E6%8B%90&email=feiwu%40thecat.top&token=593295f2b3cd0bebc3433489026&submit=submit HTTP/1.1GET /pikachu/vul/csrf/csrftoken/token_get_edit.php?sex=fw&phonenum=13145201111&add=%E5%9C%B0%E7%90%83%E6%9D%91%E5%87%BA%E9%97%A8%E5%8F%B3%E6%8B%90&email=feiwu%40thecat.top&token=593295f2b3cd0bebc3433489026&submit=submit HTTP/1.1

代码分析

代码语言:javascript
复制
if(isset($_GET['submit'])){
 if($_GET['sex']!=null && $_GET['phonenum']!=null && $_GET['add']!=null && $_GET['email']!=null && $_GET['token']==$_SESSION['token']){
 //转义
 $getdata=escape($link, $_GET);
 $query="update member set sex='{$getdata['sex']}',phonenum='{$getdata['phonenum']}',address='{$getdata['add']}',email='{$getdata['email']}' where username='{$_SESSION['csrf']['username']}'";
 $result=execute($link, $query);
 //没有修改,点击提交,也算修改成功
 if(mysqli_affected_rows($link)==1 || mysqli_affected_rows($link)==0){
 header("location:token_get.php");
 }else {
 $html1.="<p>修改失败,请重新登录</p>";
 }
 }
}
//生成token
set_token();


//校验Token
<input type="hidden" name="token" value="{$_SESSION['token']}" />

防范措施

--对敏感信息的操作增加安全的token; --对敏感信息的操作增加安全的验证码; --对敏感信息的操作实施安全的逻辑流程,比如修改密码时,需要先校验旧密码等。 --访问控制安全管理:二次验证,尽量用POST传参;referer进行判断来源。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020 年 08 月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • 漏洞原理
  • 漏洞复现&&利用方法
    • CSRF(GET)
      • CSRF(POST)
        • CSRF Token
        • 防范措施
        相关产品与服务
        验证码
        腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档