跨站请求伪造(CSRF)漏洞简介及靶场演示
文章目录
- 一、CSRF漏洞简介
- (一)什么是CSRF?
- (二)CSRF的原理
- (三)CSRF的危害
- 二、CSRF漏洞如何挖掘?
- 三、靶场实战
- (一)线上搭建环境测试
- (二)靶场实战
- 四、小结
一、CSRF漏洞简介
(一)什么是CSRF?
CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者"Session Riding",通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,偷取目标的cookie,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站,是利用目标的cookie,而并未获取目标的cookie。与XSS攻击相比,CSRF攻击相对没那么流行(因此对其进行防范的资源也相当稀少)但更加难以防范,所以被认为比XSS更具危险性。
(二)CSRF的原理
任何网站功能的本质就是数据包的传递。在你不知情的情况下,浏览器经常会偷偷发送数据包(通过ajax异步传输,不用刷新页面就可以用JS去发送请求并发送信息),攻击者正是基于网站的特点,通过CSRF攻击,利用目标用户的身份,以目标用户的名义执行某些非法操作。
CSRF攻击成功需要满足以下两个条件:
1、目标用户已经登陆了网站,能够执行网站的功能;
2、目标用户访问了攻击者构造的URL。(未知链接可不要乱点噢!)
(三)CSRF的危害
黑客首先会制作一个各方面看上去都非常合理的页面骗受害者来点击。设置的网页,会带有很强的指向性,它和钓鱼网站不同,钓鱼网站需要你自己输入账号密码,而CSRF只要让用户访问这个网站就可以生效,并不需要点击。
通过CSRF,攻击者可以以目标用户的名义发送邮件、发消息、盗取目标用户的账号、修改敏感信息、生成webshell文件、甚至购买商品、虚拟货币转账等,导致服务器沦陷,甚至威胁目标用户的财产安全。
二、CSRF漏洞如何挖掘?
找一个站,注册一个用户,修改自己的账号密码(或者其他信息也可以,你们知道这个意思就行了),然后点击保存,但保存之前先开启抓包,然后把数据包做成CSRF的链接或者文件。
接着换个浏览器,登录B,点击做好的CSRF,只要能修改自己的账户密码或者其他信息就表明存在CSRF漏洞了。
这里要注意,CSRF链接最好是一旦用户点开,就会立即生效,可以参考下列自动提交代码:
<html>
<body>
<form id='aaa' action="url" method="POST">
<script>
document.getElementById('aaa').submit();
</script>
</body>
</html>
注意前面的form表单里的id='aaa'
,这个值要与后面的byid里面的内容相同,这样就可以对该表单的内容进行自动提交。
三、靶场实战
(一)线上搭建环境测试
已知靶场为dedecms,首先百度搜一下该cms的通杀漏洞,发现后台有CSRF漏洞:
可以利用该漏洞对服务器进行写一句话木马文件的操作。
因此自己先搭建dedecms进行本地漏洞复现。
我直接在云服务器上搭建织梦cms,安装完毕,访问后台地址(在域名后面加个/dede可打开后台登陆页面):
http://101.43.103.25/dedecms/dede
登陆后台,找到文件式管理器,点开:
先看看能不能直接新建文件然后写入一句话木马:
如图所示,点击保存:
接着确定该文件的保存位置在:
http://101.43.103.25/dedecms/uploads/test.php
然后访问并对该文件传参:
访问成功!这说明在后台是可以直接写任意文件的。
接下来可以尝试生成POC看看能不能打CSRF。首先抓个包,看看有没有token,因为如果需要token,则CSRF就很难生效了。
继续新建文件,然后开启代理,保存以后,抓取数据包:
可以看到,上面的内容大概可以判断出来,是模块、路径、用户的传参之类的,所以没有token。如果路径后面多了类似&token=这样莫名其妙的字符串,一般是有token。
因此可以在抓取的数据包上点鼠标右键,选择enagement tools选项后面的CSRF POC:
然后把html代码复制出来,新建一个html文件,贴进去。文件截图如下:
这段代码是默认的代码,目标用户打开页面以后,还需要再点击一个按钮才能自动生效,这样就大大降低了成功率。所以我们可以对生成的html代码进行改进,给form表单一个id参数,同时在script标签中去获取这个传参并使用submit()方法就可以将数据自动提交上去了。
现在对POC进行修改,首先在form表单后面加个id='aaa'
,然后后面加script
标签,同时继续保留提交按钮,让目标用户以为只要自己不点击该按钮就不会有问题。因此最终的代码如下:
现在可以测试一下这个文件了,首先确认本地没有相应的文件(我们要上传的文件名为ceshi.php):
然后保持后台登陆的同时,打开我们刚才设置好的文件:
看到成功生成了一个文件!
现在把文件上传到服务器,然后通过链接来访问:
http://101.43.103.25/test.html
成功保存一个文件!
(二)靶场实战
这里以封神台靶场为例。
需要写入的文件会保存在uploads文件夹里,所以进入靶场后,首先测试uploads文件夹的路径是否存在,访问:
http://59.63.166.75:8010/newcsrf/uploads/
路径存在。
我们数据包是要提交给file_manage_control.php
文件,因此访问这个文件看看是否存在:
http://59.63.166.75:8010/newcsrf/dede/file_manage_control.php
发现页面一片空白。
靶场会把访问不到的文件重定向到登录页面,不过靶场不提供登录的功能,所以会见到都是空白页。一般真实的网站在访问的时候,不存在的页面会显示为not found,从而可以判断出该路径是否正确。
这里靶场的文件是存在的。
信息判断完毕,接着去修改html文档。由于靶场的路径和保存地址与我的测试环境不一样,因此除了url要改之外,保存路径也需要修改。最终文件如下:
文件设置完毕,然后去访问靶场的问题反馈页面:
http://59.63.166.75:8010/newcsrf/test/
上传设置好的文件:
然后会获得文件地址:
将该文件地址复制粘贴到反馈的页面,并点击提交:
接着访问该文件,看看是否生成成功。访问:
http://59.63.166.75:8010/newcsrf/uploads/ceshi.php?8=phpinfo();
上菜刀连接该文件:
找到flag.php:
flag为:flag-baozaoxiaohuang
提交flag:
四、小结
本文首先介绍了CSRF漏洞的概念、原理及危害,介绍了挖掘的方法,并结合线上搭建环境自测及线上靶场进行了实战演示,希望对大家学习跨站请求伪造提供一定的参考。
跨站请求伪造(CSRF)漏洞简介及靶场演示相关推荐
- Nginx配置valid_referer解决跨站请求伪造(CSRF)
Nginx配置valid_referer解决跨站请求伪造(CSRF) 文章目录 Nginx配置valid_referer解决跨站请求伪造(CSRF) 漏洞说明 漏洞描述 危害等级 修复建议 漏洞复现 ...
- 带你刷burpsuite官方网络安全学院靶场(练兵场)之客户端漏洞——跨站请求伪造(CSRF)专题
介绍 PortSwigger是信息安全从业者必备工具burpsuite的发行商,作为网络空间安全的领导者,他们为信息安全初学者提供了一个在线的网络安全学院(也称练兵场),在讲解相关漏洞的同时还配套了相 ...
- 【安全牛学习笔记】CSRF跨站请求伪造攻击漏洞的原理及解决办法
CSRF跨站请求伪造攻击漏洞的原理及解决办法 CSRF,夸张请求伪造漏洞 漏洞的原理及修复方法 1.常见的触发场景 2.漏洞原理:浏览器同源策略 3.DEMO 4.漏洞危害 5.如何避免&修复 ...
- 浅谈跨站请求伪造(CSRF)
浅谈跨站请求伪造(CSRF) 这里简单的记录一下CSRF漏洞~~ 什么是CSRF? CSRF(Cross-Site Request Forgery,跨站点伪造请求)是一种网络攻击方式,该攻击可 ...
- 跨站请求伪造(CSRF)-简述
跨站请求伪造(CSRF)-简述 跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 ...
- django16: csrf跨站请求伪造/CSRF相关装饰器
CSRF 即跨站请求攻击 跨站请求伪造csrf钓鱼网站本质搭建一个跟正常网站一模一样的页面用户在该页面上完成转账功能转账的请求确实是朝着正常网站的服务端提交唯一不同的在于收款账户人不同给用户书写for ...
- csrf防御 php,跨站请求伪造CSRF的防御实例(PHP版本)
跨站请求伪造CSRF的防御:One-Time Tokens(不同的表单包含一个不同的伪随机值) 在实现One-Time Tokens时,需要注意一点:就是"并行会话的兼容".如果用 ...
- 跨站请求伪造CSRF防护方法
CSRF(Cross-site request forgery跨站请求伪造,也被称成为"one click attack"或者session riding,通常缩写为CSRF或者X ...
- 跨站请求伪造(CSRF)+ 跨站脚本攻击(XSS)
一.CSRF 跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 X ...
- 跨站请求伪造——CSRF
目录 csrf与xss的区别 CSRF的介绍 利用过程 实战 靶场下载 过程 一.A用户登录浏览器执行动作 二.B用户抓包制作csrf请求页面 三.本地保存 四.制作钓鱼网站 csrf 防御 csrf ...
最新文章
- oracle10g删除asm组,Oracle 10G RAC 删除已有节点
- MAC 重置MySQL root 密码
- 云服务器 文件 传输,云服务器文件 传输
- GRE核心词汇助记与精练-List9切分、部分
- vue.js权威指南----代码解释实例
- concurrenthashmap_ConcurrentHashMap是如何保证线程安全的
- jsp页面中出现“String cannot be resolved to a type”
- 如何在不同开发语言中使用绑定变量_linux C/C++服务器后台开发面试题总结(编程语言篇)...
- iOS 5 Storyboard 学习之 Tabbar Controller,Navigation Controller
- 《OpenGL编程指南(原书第9版)》——1.4 OpenGL渲染管线
- 八、Java的可变参数例子
- 第一次冲刺个人计划表
- UEFI规范实现EDKII项目学习笔记绪论[0]
- aspcms标签大全
- nginx中proxy_pass的作用以及注意事项(不看后悔一生)
- mysql全文索引与停止词
- 可视化项目使用vw/vh布局进行适配
- 黑马程序员视频教程学习mybatis框架常用注释SQL语句学习笔记?
- 无法删除文件夹的解决办法
- python 三七小说爬虫小记