CSRF(跨站请求伪造)

发布于 2022-03-16  305 次阅读


对于CSRF的认识

任何的网站功能,本质都是数据包的传递

CSRF的本质就是在不知情的情况下偷偷发送了数据包。 (信任)

(ajax 异步传输)XMLHttpRequest 通过JS去发送请求,然后获取信息

条件:

  1. 存在CSRF漏洞
  2. 黑客要制作一个看似正常的页面欺骗受害者来点击(黑客设置的网页有指向性 )
  3. 目标登录过网站,权限还在

CSRF和XSS的区别:CSRF只能够借用cookie,并不能获取cookie

CMS:源码是固定的,数据包可以构建(管理员后台添加管理员)

​ 用户改用户:

 1. A的用户
 2. 任何用户的数据包构成都是相同的

防御:

  • 对于用户而言,使用浏览器无痕浏览、隐私模式
  • 对于网站而言,设置Token(唯一解)即Cookie中存在一段随机值,没有Token的网站就有可能存在CSRF
  • 在现在的浏览器存在CORS的问题,不同的网站发送JS请求他会主动拦截并删除Cookie

靶场实操

先在本地对该CMS进行搭建,测试这个CMS是否存在漏洞

image-20220305153920582
image-20220305151835207

创建成功,登录后台

image-20220305154327693

额。。。这个版本是从官方下载的,和课程中的有些不一样呀,课件中的dedeCMS安装不了,加载不出来

image-20220305155108631

然后,之后的步骤就是后台有一个写入文件的模块,然后写入一句话木马,并将数据包进行抓包,使用Burp生成CSRF攻击页面,并提交诱导客服访问

image-20220305160644009

这里用的是课件中的1.html文件,稍作修改

image-20220305155946936
image-20220305160617246

ok,一句话成功上传,菜刀连接

image-20220305160744317

找到flag,提交

image-20220305160828987

如何防御

  • 添加referer头(绕过方式,修改referer证据链)

Referer是HTTP请求Header的一部分,当浏览器向Web服务器发送请求的时候,请求头信息一般需要包含Referer。该Referer会告诉服务器我是从哪个页面链接过来的,服务器基此可以获得一些信息用于处理。

  • 使用Token验证(绕过方式,XSS获取Token,再次进行CSRF)
  • 实施安全的逻辑流程(比如修改密码时需要提供旧密码)
届ける言葉を今は育ててる
最后更新于 2022-10-24