这篇文章最开始只是想写一个关于绕过referer的方法,写着写着发现和ssrf以及url跳转的一些手法类似,于是把这两种也加上了

对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/?http://www.domain.com

4.利用空referer

  1)利用ftp://,http://,https://,file://,javascript:,data:等伪协议进行跳转,如下

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

  2)添加<meta name="referrer" content="never">,poc如下

  <html>

  <meta name="referrer" content="never">

  <body>

    <script>history.pushState('', '', '/')</script>

    <form action="http://127.0.0.1/test.php">

    <input type="submit" value="Submit request" />

  </form>

  <script>       document.forms[0].submit();     </script>

  </body>

  </html>

  

  3)https跳到http时也没有referer

5.如果受信任的网站中可以添加链接,可以在受信任的网站上添加链接,但是不支持post的csrf

6.利用url跳转

7.结合受信任的网站的xss漏洞进行利用

顺便把ssrf绕过的几种方法在这里补充下:

1.[::]   (直接在浏览器中输出是不行的,貌似和服务器端代码实现有关)          http://0/ 攻击本地

2.利用@    http://example.com@192.168.1.1

3.特殊域名    http://192.168.1.1.xip.io/

4.DNS重绑定  利用ceye平台

5.利用Enclosed alphanumerics

6.   127。0。0。1

7.利用进制   八进制钱加0  十六进制钱加0x        需要补位1-》01 然后再进制转换

  1.可以是十六进制,八进制等。 115.239.210.26  >>>  16373751032 首先把这四段数字给分别转成16进制,结果:73 ef d2 1a 然后把 73efd21a 这十六进制一起转换成8进制 记得访问的时候加0表示使用八进制(可以是一个0也可以是多个0 跟XSS中多加几个0来绕过过滤一样),十六进制加0x

  2.http://127.0.0.1  -》  http://0177.0.0.1/

8.利用协议   dict://     sftp://   ldap://   goapher://

-----------------------------------------------------2019.3.11---------------------------------------------------------------

今天在FB上看到一种绕过ssrf控制的方法(原文在https://www.freebuf.com/vuls/196619.html)

当服务器端仅是对内网ip做正则时(这些场景是我意淫的),可以控制url让服务器请求我们自己的网站下的某个网页,在网页下进行重定向(这也是为什么ssrf的方法措施中有一个项是禁止30X跳转)

<?php header("location: http://[::]:22/"); ?>

-----------------2020.2.26-----------------
补充一个关于绕过ssrf的新姿势 https://xz.aliyun.com/t/7256
这篇文章中还可以找到ssrf中对应 dns重定向以及302跳转 的防范手段
 

URL跳转绕过:
1.利用问号?

http://www.aaa.com/acb?Url=http://evil.com?login.aaa.com

2.利用井号#

http://www.aaa.com/acb?Url=http://evil.com#login.aaa.com

3.利用@

http://www.aaa.com/acb?Url=http://aaa.com@www.evil.com

3.利用正反斜杠

http://www.aaa.com/acb?Url=http://evil.com/login.aaa.com

http://www.aaa.com/acb?Url=http://evil.com\\login.aaa.com

http://www.aaa.com/acb?Url=http://evil.com\login.aaa.com

http://www.aaa.com/acb?Url=http://evil.com\.login.aaa.com

4.百名单缺陷(白名单是aaa.com)

www.evilaaa.com       www.aaa.com.evil.com

5.多重跳转(没试过,感觉应该不行吧)

http://www.aaa.com/acb?Url=http://login.aaa.com/acb?url=http://login.test.com

6.利用http://www.aaa.com.220.181.57.217.xip.io   实际上访问的是IP地址

------------------------------------------------------------2019.5.17------------------------

再补充一个:Java中经常会通过java.net.URL.gethost()来获取url的域名,但是方法获取域名时在以往的jdk版本中是存在问题的

比如说 url 是  “https://www.rebeyond.net\@www.huawei.com/poc.htm”  通过该方法获取的host将是www.rebeyond.net\@www.huawei.com   而浏览器访问时是www.rebeyond.net

https://www.rebeyond.net\.www.huawei.com/poc.htm    将@改为 . 也可以

还有一个类似的情况

https://www。evil。com%23%5cwww.baidu.com/

http://www.evil.com#@www.baidu.com/

--------------------------------2019.12.4-----------------

再补充一个绕过domain白名单的(2019黑帽大会,利用unicode类字母符号 https://www.fuhaoku.net/block/Letterlike_Symbols

https://office.live.com/start/word.aspx?h4b=dropbox&eurl=htt ps://evil.ca/c.dropbox.com/wopi_edit/document1.docx&furl=htt ps://www.dropbox.com/wopi_download/document1.docx&c4b =1

关于绕过域名(ip)校验的一些小知识的更多相关文章

  1. https域名强弱校验的区别

    HttpsURLConnection.setDefaultHostnameVerifier( new HostnameVerifier(){ public boolean verify(String ...

  2. apache本地域名ip重定向vhosts

    apache本地域名ip重定向,使本机通过指定域名访问到指定ip路径. 1.apache配置apache/conf/httpd.conf  : 开启配置 Include conf/extra/http ...

  3. 点分十进制IP校验、转换,掩码校验

    /***************************************************************************** * 点分十进制IP校验.转换,掩码校验 * ...

  4. 请求一个域名ip的缓存用处

    前言 摘录自操作系统,这一段的内容很有启发,稍微加上自己的理解,写一篇博客记录一下. 缓存 缓存成功解决了速度不匹配设备之间的数据传输,并且在一般情况下,是整个系统的瓶颈:缓存的出现,有效减少了低速I ...

  5. 域名ip自动跳转 跳转指定页面的js

    域名ip自动跳转 跳转指定页面的js 为了应对百度审核,需要客户的网站在个别地区跳转到另一个页面,就搞到了这段代码,屡试不爽,超实用.下面把地址换成你要访问的网站url地址或者文件url地址即可.超实 ...

  6. 域名IP主动验证(一)

    功能:主动验证给定的域名.IP对是否真正的关联 思路: 1.一开始通过修改hosts文件,把待验证的域名.IP对添加到文件里,然后用wget尝试访问,再恢复hosts文件重新验证下一对 2.后来了解到 ...

  7. ip地址查询python3小工具_V0.0.1

    看到同事在一个一个IP地址的百度来确认导出表格中的ip地址所对应的现实世界的地址是否正确,决定给自己新开一个坑.做一个查询ip“地址”的python小工具,读取Excel表格,在表格中的后续列输出尽可 ...

  8. CSRF绕过后端Referer校验

    CSRF绕过后端Referer校验分正常情况和不正常的情况,我们这里主要讨论开发在写校验referer程序时,不正常的情况下怎么进行绕过. 正常情况 正常的情况指服务器端校验Referer的代码没毛病 ...

  9. 后端程序员实现一个IP归属地的小程序

    在日常开发中,后端主要提供数据以及处理业务逻辑,前端主要提供页面布局以及数据展示.后端程序员对于页面布局接触比较少,但是小程序有完善的文档说明.页面布局也相对简单,实现起来相对简单一些.而且小程序相对 ...

随机推荐

  1. 【iCore4 双核心板_FPGA】实验十九:使用JTAT UART终端打印信息

    实验指导书及源代码下载地址: 链接:https://pan.baidu.com/s/1c3mqDkW 密码:4x9h iCore4链接:

  2. PHP读取文本文件(TXT)

    <? header("content-type:text/html;charset=utf-8"); $file = "demo.txt"; ###判断该 ...

  3. nodejs在windows下的安装配置(使用NVM的方式)

    NVM的安装 1.下载安装包,https://github.com/coreybutler/nvm-windows/releases 2.下载完成后点击nvm-setup,按步骤安装,注意路径中不能带 ...

  4. mpvue 未找到入口 app.json 文件

    # 1. 先检查下 Node.js 是否安装成功 $ node -v v8.9.0 $ npm -v 5.6.0 到项目的目录 $ npm install $ npm run dev

  5. Docker-堆栈stack(6)

    堆栈(Stack)的概念: 堆栈是一组相互关联的服务,它们共享依赖关系,并且可以协调和缩放在一起.单个堆栈能够定义和协调整个应用程序的功能,但是非常复杂的应用程序可能希望使用多个堆栈. 下面我们就开始 ...

  6. 使用PHP几种写99乘法表的方式

    首先按照规矩,还是先废话一番,对于刚学PHP的新手来讲,用php写九九乘法表无疑是非常经典的一道练习题. 但不要小看这道练习题,它对于逻辑的考验还是相当到位的. 也许有人会觉得,九九乘法表有什么难的, ...

  7. 学习Vue 入门到实战——学习笔记

    闲聊: 自从进了现在的公司,小颖就再没怎么接触vue了,最近不太忙,所以想再学习下vue,就看了看vue相关视频,顺便做个笔记嘻嘻. 视频地址:Vue 入门到实战1.Vue 入门到实战2 学习内容: ...

  8. ConfuserEx壳

    前言: 这几天用Rolan的时候出现了点问题,然后发现了这个非常好用的工具居然只有几百k,打算逆向一下,然后发现了ConfuserEx壳 探索: Rolan是用C#写的,刚开始用EXEinfoPE打开 ...

  9. js中的 substr方法与substring方法 不同

    一个参数时: 二者同为  从 第参数个 开始截取,一直到str 末尾,并返回. 二个参数时: substr(a,b):  从第a个字符开始, 截取b个. substring(a,b):  从第a个字符 ...

  10. mac shell 获取ip,自动启动文件http服务

    因为工作原因,时常有文件传输需求. rz.nc.rsync都用过,各有各的好处. 但相对的,向别处推文件时总有各种麻烦,尤其是在给同事发送文件时. 然后就想到了提供http服务. 在环境变量中定义别名 ...