CSRF漏洞+附pikachu靶场详解


前言

此文章只用于学习和反思巩固csrf攻击知识,禁止用于做非法攻击。注意靶场是可以练习的平台,不能随意去尚未授权的网站做渗透测试!!!


一、CSRF漏洞是什么

CSRF又称跨站请求伪造,是指攻击者在用户登录的状态下(浏览器保存了用户的cookie)通过伪造恶意url诱导用户点击,借助用户的cookie网站权限(冒充用户身份来进行非法操作,对于服务器来说是合法的)达到篡改数据、购买商品等非法操作。

在这里插入图片描述

这张图就详细展示了csrf攻击过程。

二、CSRF漏洞形成的条件

通过上面的讲解我们知道CSRF形成的必要条件是

1、用户要在登录状态(即浏览器保存了该用户的cookie)

2、用户要访问攻击者发的恶意url链接才行

三、CSRF漏洞复现(pikachu靶场)

1、CSRF(get)

点击提示发现有vince/alien/kobe/grady/kevin/lucy/lili几个用户,密码均为123456,这里我们用vince(攻击者测试账号)和lili(受害者)来测试。
攻击者测试,登录vince测试账号,修改个人信息抓包发现。数据包可控参数是拼接在url上,是get请求。发现数据包并没有识别用户的标识,比如token。(如图所示)
在这里插入图片描述
在这里插入图片描述
所以攻击者可以模仿url让用户去点击,实施修改个人信息。
受害者测试。
在这里插入图片描述

假设用户点击了攻击者模仿的url,就会把个人息修改为攻击者想要的内容。(如图所示)
在这里插入图片描述

http://192.168.254.128/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=hacker&phonenum=hacker&add=hacker&email=hacker&submit=submit

在这里插入图片描述

2、CSRF(post)

上一关是get请求,也就是可控参数是拼接在url后面的,若没有严格设置识别用户身份的安全措施,攻击者就可以轻易的构造url让用户去访问从而修改其信息。这一关是post请求,无法简单的构造url进行欺骗,得通过数据包构造一个html界面,诱导用户点击。这里用grady(攻击者测试账号)kevin(受害者账号)
攻击者测试,发现是post请求,数据包没有验证用户的身份。
在这里插入图片描述
在这里插入图片描述
这里我们修改好我们要修改的用户信息,使用burpsuite专业版工具CSRF PoC构造html文件诱导用户访问。(如图所示)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
勾选include auto-submit script,单击Regenerate按钮,然后copy html。
这里我把恶意html文件放在了攻击者服务器,当受害者在登录状态访问192.168.254.131/change.html的恶意url就会触发修改个人信息。
在这里插入图片描述
受害者登录
在这里插入图片描述

受害者访问
在这里插入图片描述
点击了此按钮就会修改个人信息
在这里插入图片描述

3、CSRF(token)

这一关抓数据包发现有个token验证是每修改一次个人信息都会有随机的token值,导致攻击者不好伪造用户的数据包。
在这里插入图片描述

四、CSRF漏洞防御措施

1、验证请求的referer值

看看referer是不是自己的域名,而不是其他域名。

2、设置token随机值

不让攻击者伪造出用户正确的token值。

总结

CSRF漏洞如果要寻找此漏洞可以在有表单的地方抓包修改referer值看看能不能成功,找没有token值的地方测试。CSRF漏洞利用也有很大的缺陷,得在用户登录状态下,浏览器有用户的cookie然后访问攻击者恶意url。这些条件缺一不可。有人会把xss与csrf搞混淆,xss漏洞是攻击者把js代码插入web界面诱导用户点击,从而获取用户的cookie,然后进行登录用户篡改信息。xss是能直接知道用户cookie信息的。而csrf是利用用户的cookie帮助攻击者去篡改用户信息,并不能获取用户的cookie值。此文章是小白自己为了巩固csrf攻击而写的,大佬路过请多指教!

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-01-16 21:06:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-16 21:06:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-16 21:06:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-16 21:06:01       20 阅读

热门阅读

  1. Go语言中的Pool

    2024-01-16 21:06:01       32 阅读
  2. Redis面试题14

    2024-01-16 21:06:01       30 阅读
  3. Nginx Ingress轻松上手 | Kubernetes服务管理指南

    2024-01-16 21:06:01       33 阅读
  4. C++面试之线程池、智能指针、设计模式

    2024-01-16 21:06:01       32 阅读
  5. Redis面试题13

    2024-01-16 21:06:01       26 阅读
  6. 二叉树遍历C++

    2024-01-16 21:06:01       38 阅读
  7. Vue2:利用watch和localStorage存储数据案例

    2024-01-16 21:06:01       36 阅读