pikachu--CSRF

web安全

实验报告

 

实验二

CSRF

 

 

 

学生姓名

倪文锴

年级

2017级

区队

 实验班

指导教师

 高见

 

 

一、概述

CSRF 是 Cross Site Request Forgery 的 简称,中文名为跨域请求伪造

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

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

所以CSRF攻击也被称为“one click”攻击

(1)CSRF--(get)

 首先先进入登录界面

pikachu--CSRF_第1张图片

 

 

 

pikachu--CSRF_第2张图片

 

 

 

点击修改个人信息,抓包得到链接

pikachu--CSRF_第3张图片

 

 

从提交的请求来看,后台没做CSRF token,同时也是通过GET请求来提交修改信息,我们拿到这个,修改一下,然后让kevin点击就好,我们构造的URL中把地址add改为cn。kevin一点击就修改了地址。

192.168.141.1:88/pikachu-master/vul/csrf/csrfget/csrf_get_edit.php?sex=%E7%94%B7&phonenum=123456789&add=cn&email=7955526516%40qq.com&submit=submit

    GET请求修改个人信息,所有的参数都在URL中体现,这种方式使比较好利用的,我们只要能够伪造出来这个链接,把对应的参数内容修改成为我们需要的值,让带有登录态的用户去点击就完成了我们的攻击。

 

修改网址,完成修改

pikachu--CSRF_第4张图片

 

 

 

(2)CSRF(post)

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

pikachu--CSRF_第5张图片

 

 

 

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

攻击者:192.168.141.1:88

漏洞服务器:192.168.141.1:88

编写一个post.html页面,代码如下所示,本文把此页面放到 的pikachu-master\vul\csrf\csrfpost下,然后启动 apache 服务pikachu--CSRF_第6张图片

 

 

 

代码如下:














诱导用户点击网址,完成修改

http://192.168.141.1:88/pikachu-master/vul/csrf/csrfpost/post.html

 

pikachu--CSRF_第7张图片

 

 

CSRF(token)

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

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

    我们进入Pikachu平台的CSRF(token)页面并登录,我们可以看一下这个GET请求

pikachu--CSRF_第8张图片

 

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

观察生成token的代码

pikachu--CSRF_第9张图片

 

 对于token,暂时还没有什么办法通过

 

防护措施总结:

  • 增加Token验证(常用做法)
    • 对关键操作增加Token参数,token必须随机,每次都不一样
  • 关于安全的会话管理(避免会话被利用)
    • 不要在客户端保存敏感信息(比如身份验证信息)
    • 退出、关闭浏览器时的会话过期机制
    • 设置会话过机制,比如15分钟无操作,则自动登录超时
  • 访问控制安全管理
    • 敏感信息的修改时需要身份进行二次认证,比如修改账号密码,需要判断旧密码
    • 敏感信息的修改使用POST,而不是GET
    • 通过HTTP头部中的REFERER来限制原页面
  • 增加验证码
    • 一般在登录(防暴力破解),也可以用在其他重要信息操作的表单中(需要考虑可用性)

你可能感兴趣的:(pikachu--CSRF)