渗透日常之 花式实战助你理解CSRF
最近比较忙,很久没发文章了,Onls本就只是一个安全爱好者,工作也不是安全相关。以往的文章也更像是利用简单漏洞的“即兴把玩”,更多的是偏向趣味性,给大家增加点学习的乐趣,看完文章即使仅有一个人觉得“哦?原来还能这样玩!”那我认为也是有价值的。话不多说,咱们开始。
写本文是看到@MAX丶 表哥的这篇[原创] 各大SRC中的CSRF技巧 ,我觉得对于CSRF,表哥这篇文章讲得很明白了,包括原理和防御,还有一个自己验证苏宁易购订单处CSRF漏洞的例子,但是对于"真·小白" 来说或许不是特别友好。在感同身受这一点上,Onls作为一个技术渣或许更懂你们(白:好,我已经明白什么是CSRF了,但是到底实际渗透中我该怎么用呢?),所以我顺手找了个网站当素材来完成这篇文章。(关于原理我就不复述了,建议白白们先去看看表哥那篇文章,再把我的当作一次详细的实战过程分享)
这是个P2P投资借贷网站,我们注册帐号登录观察一下:
对于CSRF的实际利用我还是得先做个简单的说明,从它的名字“跨站请求伪造”不难理解,在大多数情况下的利用无外乎两点:“跨站”和“伪造”,其实“站”你们可以简单理解为“域”或“域名”的意思,通俗来说就是“访问某一域名(网站)却被该域名下的恶意代码利用你的身份cookie,让另一个域名的服务器执行操作”,正常情况下,让目标用户访问一个陌生站点就必不可少的要涉及到一点“社工”。所以实际利用中要成功必不可少的两个点我总结为:
———————————————————————————-
1.被伪造身份的目标曾在该浏览器上访问过存在CSRF站点,且Cookie尚未过期
2.目标被诱使在该浏览器上访问了我们放置了恶意代码的域名(网站)
——————-分割线——-以上两点为下面实战的基础———————–
我们发现新帐号默认会关注一个叫“XX二郎的帐号”,圈子里能看到这个名为“XX二郎”的用户的公告动态,并且在网站答疑区能发现他的回答,ID后面还加了V,发布的信息也都是员工角度。看来身份不“普通”。我们就以他为实战“受害”对象,开始制定我们在该站点测试CSRF所要达成的目标:在“XX二郎”不知情的情况下,利用CSRF漏洞伪造他的请求发送一条公告动态。
那么经过观察网站后,我的思路是:在网站咨询答疑区发布一条咨询问题,将我构造了恶意代码的域名贴上去,附上“我在你们网站注册的隐私信息,为什么被公布在了这个网站上?http://xxxx.xx,你们这样对待用户隐私?”(回顾我之前说的实战要成功的两个基本点,1.对方工作人员在看到,并准备回答我这条“疑问”的时候,必定是已经登录了这个网站了(满足基础1),2.看到我这具有欺骗性的文字时,很容易会点进去一探究竟(满足2))
说干就干,我们在发布动态的地方用burp suite进行抓包:
对于CSRF,burp suite有个小功能:我们对这个包“右键”->"Engagement tools"->"Generate CSRF PoC" :
这里会直接构造一个PoC,但是在实际渗透中肯定是不能直接使用这个的,我们得稍加改造,由于这里是POST传输,我们构造的代码为:
当然这只是CSRF利用代码,实际前端页面你可以自己按需要写,或者直接在body里写一句“系统升级中,暂无法访问..”来不引起怀疑。
然后为了能在目标访问我们的恶意链接之后第一时间得到消息,我将CSRF中的JS代码放进XSS平台中建成一个项目,为了简便直接将代码加到打Cookie的代码后面(这里只是为了利用XSS平台的邮件、短信提醒功能,顺带还能获得目标的IP、定位):
这样就只需要把js外链加到前端源码里就行了,测试一波,成功收件:
好了,别忘了正题,准备战斗:
卧槽,18点了..下班下班..,本来想把包括抓包在内的整个过程和一些工具、插件做个详细介绍的,来不及拉..直接看结果吧..表哥要赶去召唤师峡谷过周五了,要详细的可留言下次有时间再给你们更新文章..这次的前端文件在:http://0bug.cf/CSRF/onls.html,对了,顺便提一句,最近很多XSS平台都访问不了了,原因可能很复杂吧,最烦这种情况了,很多以前的项目都没做保存,坑爹…所以今天也顺便自己搭了个XSS平台,地址http://0bug.cf,本来是想自用的,我比较懒对自己的平台没做邮件提醒功能,但是能保证稳定可靠,放几个邀请码出去吧,有表弟想要的可以在下面留言,我私发给你,Onls给你担保3年内平台都是稳定存在,出于这个考虑所以不会放出多少邀请码,请理解。
虎头蛇尾了哈哈哈…不好意思哈大家将就看
渗透日常之 花式实战助你理解CSRF的更多相关文章
- 一篇文章助你理解Python3中字符串编码问题
前几天给大家介绍了unicode编码和utf-8编码的理论知识,以及Python2中字符串编码问题,没来得及上车的小伙伴们可以戳这篇文章:浅谈unicode编码和utf-8编码的关系和一篇文章助你理解 ...
- d3可视化实战02:理解d3数据驱动的真正含义
前文中已经提到,SVG从诞生之初起就可以非常方便地使用javascript脚本语言来进行其DOM对象的控制.当然,控制的方法有很多,有直接控制SVG对象的方法,例如使用原生js:有帮你封装一下图形接口 ...
- 什么?又是404!趣图助你理解HTTP状态码~
HTTP状态码(一): 注释: 301—永久移动.被请求的资源已被永久移动位置: 302—请求的资源现在临时从不同的 URI 响应请求: 305—使用代理.被请求的资源必须通过指定的代理才能被访问 ...
- 一篇文章助你理解Python2中字符串编码问题
前几天给大家介绍了unicode编码和utf-8编码的理论知识,没来得及上车的小伙伴们可以戳这篇文章:浅谈unicode编码和utf-8编码的关系.下面在Python2环境中进行代码演示,分别Wind ...
- Spring Security 实战干货:理解AuthenticationManager
1. 前言 我们上一篇介绍了UsernamePasswordAuthenticationFilter的工作流程,留下了一个小小的伏笔,作为一个Servlet Filter应该存在一个doFilter实 ...
- ajax获取数据的形象比喻,助于理解记忆
过程 创建对象(打开浏览器) 连接服务器(输入网址) 发送请求(按下回车) 服务器接收并返回数据(显示对应的网址网站内容) 原理
- d3可视化实战01:理解SVG元素特性
一. SVG简介 ————————————————————————————————————————————————————————————————— SVG是一种和图像分辨率无关的矢量图形格式,它使用 ...
- memcached实战系列(七)理解Memcached的数据过期方式、新建过程、查找过程
1.1.1. 新建Item分配内存过程 1:快速定位slab classid,先计算Item长度 key键长+flag+suffix(16字节)+value值长+结构大小(32字节),如90byte ...
- memcached实战系列(六)理解Memcached的数据存储方式
Memcached的数据存储方式被称为Slab Allocator,其基本方式是: 1:先把内存分成很多个Slab,这个大小是预先规定好的,以解决内存碎片的问题.启动参数的时候配置进去的不懂得可以参考 ...
随机推荐
- MyBatis 延迟加载 加载时机
- Linux centos下php安装cphalcon扩展的方法
说明: 操作系统:CentOS php安装目录:/usr/local/php php.ini配置文件路径:/usr/local/php/etc/php.ini 1.安装cphalcon cd /usr ...
- react-navigation 3.x版本的安装以及react-native-gesture-handler配置
一.安装依赖,使用npm或yarn命令,3.x版本必须安装react-native-gesture-handler react-navigation react-native-gesture-hand ...
- $_SERVER['PHP_AUTH_USER']
PHP 的 HTTP 认证机制仅在 PHP 以 Apache 模块方式运行时才有效,因此该功能不适用于 CGI 版本.在 Apache 模块的 PHP 脚本中,可以用 header() 函数来向客户端 ...
- Efficient algorithms for polyploid haplotype phasing 多倍体单体型分型的有效算法
背景:单倍型的推断,或沿着相同染色体的等位基因序列,是遗传学中的基本问题,并且是许多分析的关键组分,包括混合物图谱,通过下降和插补识别身份区域. 基于测序读数的单倍型定相引起了很多关注. 已经广泛研究 ...
- Interceptor for {http://cxf.liuyang.com/}IHiServiceService has thrown exception, unwinding now org.apache.cxf.binding.soap.SoapFault: Error reading XMLStreamReader.
Jquery同域访问:客户端连接服务器访问跨域访问:通过本地html文档,浏览器点击开访问(jquery不支持此访问) 用域名的方式访问http://localhost:8080/CXF_09_jqu ...
- CentOS 6.6 MySQL 8.0详细安装步骤
1.备份服务器上MySQL数据库 [root@localhost ] # mysqldump -h localhost -u root -proot --databases Surpass --rou ...
- 桥接模式及C++实现
桥接模式 先说说桥接模式的定义:将抽象化(Abstraction)与实现化(Implementation)分离,使得二者可以独立地变化. 桥接模式号称设计模式中最难理解的模式之一,关键就是这个抽象和实 ...
- (轉)Equal height boxes with CSS
原文:http://www.456bereastreet.com/archive/200405/equal_height_boxes_with_css/ 下面是我翻译的内容,是根据我对文章的理解意译的 ...
- 好用的开关按钮——switchbutton
1.简介 GitHub地址:https://github.com/zcweng/SwitchButton gradle: repositories { mavenCentral() jcenter( ...