当前位置: 首页 > news >正文

Pikachu漏洞练习平台之CSRF(跨站请求伪造)

本质:挟制用户在当前已登录的Web应用程序上执行非本意的操作(由客户端发起)

耐心看完皮卡丘靶场的这个例子你就明白什么是CSRF了

CSRF(get) 

使用提示里给的用户和密码进行登录(这里以lili为例)

登录成功后显示用户个人信息,并且提供修改个人信息的链接

点击修改个人信息,这里我们可以修改:性别、手机、住址、邮箱

尝试对用户信息进行修改

点击submit提交后,发现用户信息已经被修改

看到这里你肯定还是没明白CSRF到底是啥,攻击体现在哪儿

我们使用burpsuite来对请求进行抓包

提取url

/vul/csrf/csrfget/csrf_get_edit.php?sex=sex&phonenum=phone&add=address&email=email&submit=submit

拼接好完整的URL(我这里是在自己服务器上搭建的靶场)

http://snert.vip:10005/vul/csrf/csrfget/csrf_get_edit.php?sex=sex&phonenum=phone&add=address&email=email&submit=submit

访问这个url,即可实现对用户信息的修改

注意:实际加载出来的URL里面是看不到这些信息的(姓名、手机、地址等)

我们对payload进行修改

http://snert.vip:10005/vul/csrf/csrfget/csrf_get_edit.php?sex=SSS&phonenum=NNN&add=AAA&email=EEE&submit=submit

访问该url

 

可以看到用户信息被再次修改 

 

回到csrf的本质上:挟制用户在当前已登录的Web应用程序上执行非本意的操作

换句话说,这个修改的操作只能是用户本生自己去进行的(客户端发起的请求),只是说用户他自己并不知情,他不知道自己只是点了一个链接竟然就修改了自己的信息或者密码。

比如我们换一个浏览器(没有进行过登录没有cookie信息缓存),并尝试访问上一个URL

http://snert.vip:10005/vul/csrf/csrfget/csrf_get_edit.php?sex=sex&phonenum=phone&add=address&email=email&submit=submit

回显的是要求我们登录的页面

假如我不知道lili的密码,我只有vince的密码 

使用vince的账号登录后,再次访问上述url看看会怎样

这是vince原始的信息:

访问

http://snert.vip:10005/vul/csrf/csrfget/csrf_get_edit.php?sex=sex&phonenum=phone&add=address&email=email&submit=submit

发现被修改掉的是vince自己的信息

也就是说:登录的用户是谁,产生的效果(payload)就作用于谁

至于怎样构造这样的URL,如果我们在某个平台有自己的账户,我们是不是就可以通过抓包来知道了呢,从而构造出恶意的URL,让其他用户点击,就可以实现对其他用户信息的修改。

当然,上面的这种URL看着太明显了,我们需要对恶意的URL进行一定处理,不被受害者察觉,

最简单的方法就是进行短链接处理(有很多的在线网站),比如对

http://snert.vip:10005/vul/csrf/csrfget/csrf_get_edit.php?sex=SSS&phonenum=NNN&add=AAA&email=EEE&submit=submit

处理之后就变成了

http://mrw.so/6vyWU4
http://i7q.cn/5xoQ1t
http://mtw.so/6vMlGu

这还能看出来是进行密码或者信息修改的操作吗?

当用户随便访问了其中的一个链接,就会对用户信息的进行修改。

有些平台的短链接需要进行跳转,不建议使用这种

https://dlj.li/2vq1G

目前来说,对抗CSRF攻击最简洁而有效的方法就是使用验证码。CSRF攻击是在用户不知情的情况下构造了网络请求,而验证码则是强制要求用户与应用程序进行交互,才能完成最终请求。

关于CSRF的基本介绍就到这里,希望这篇博客能让你了解到什么是CSRF。

http://www.lryc.cn/news/230668.html

相关文章:

  • Python 如何实现 Strategy 策略设计模式?什么是 Strategy 策略设计模式?
  • hadoop 大数据集群环境配置 配置hadoop配置文件 hadoop(七)
  • 解决 requests 库中 Post 请求路由无法正常工作的问题
  • Jenkins入门——安装docker版的Jenkins 配置mvn,jdk等 使用案例初步 遇到的问题及解决
  • 一文搞定以太网PHY、MAC及其通信接口
  • 【JavaEE】Servlet API 详解(HttpServletResponse类方法演示、实现自动刷新、实现自动重定向)
  • QML19、QML 和 C++ 之间的数据类型转换
  • 力扣学习笔记——128.最长连续序列
  • 【git】远程远程仓库命令操作详解
  • 算法:穷举,暴搜,深搜,回溯,剪枝
  • 蓝桥杯 选择排序
  • 20. 深度学习 - 多层神经网络
  • 短剧小程序:让故事更贴近生活
  • 前端下载文件重命名
  • 【23真题】厉害,这套竟有150分满分!
  • 44. Adb调试QT开发的Android程序实用小技巧汇总
  • nacos集群配置(超完整)
  • 无线WiFi安全渗透与攻防(三) 无线信号探测(目前仅kismet)
  • Flutter的Widget, Element, RenderObject的关系
  • 测试员练就什么本领可以让自己狂揽10个offer
  • vue中实现图片懒加载的几种方法
  • Axure9基本操作
  • Docker - 网络
  • vue、react中虚拟的dom
  • Elasticsearch:ES|QL 快速入门
  • 7-1 进步排行榜
  • 解决删除QT后Qt VS Tools中Qt Options中未删除的错误
  • Django(五、视图层)
  • Git 工作流程、工作区、暂存区和版本库
  • PLSQL使用技巧