任意URL跳转绕过
常规绕过方式
1 | <!--以下绕过方法均跳转到admintony.com--> |
HPP参数污染绕过
1 | http://sso.jd.com/?redir=http://jd.com&redir=a@admintony.com |
跳转至目录的绕过
先看这么一个案例:
这是跳转到子目录的一个URL跳转,如果令redir=http://admintony.com
,则会报错;如果令redir=admintony.com
,则会跳转到目标IP/admintony.com/groupon/detail?aid=1234
。
想到前两天看到p神写的python web的任意URL跳转,想到了//
,在chrome、firefox等主流浏览器中,如果url以//domain
开头,浏览器将会默认认为这个url是当前数据包的协议。比如,我们访问http://目标IP.com/?redir=//baidu.com/
,则浏览器会默认认为跳转到http://baidu.com
,而不是跳转到.//baidu.com/
目录。
畸形绕过
昨晚遇到一个情况,当redir的参数为:http://localhost?.dianping.com
时,正常跳转到localhost,当参数为:http://localhost.?.dianping.com
时依然正常跳转,但是在localhost
的.
后面加上任意数字或字母,马上就跳转到m.dianping.com
了,因此使用数字地址进行任意URL跳转。
数字地址计算方式1
可以是十六进制,八进制等。
115.239.210.26 >>> 16373751032
首先把这四段数字给分别转成16进制,结果:73 ef d2 1a
然后把 73efd21a 这十六进制一起转换成8进制
记得访问的时候加0表示使用八进制(可以是一个0也可以是多个0 跟XSS中多加几个0来绕过过滤一样),十六进制加0x。
访问:http://016373751032 ,即可访问到百度。
数字地址计算方式2
111.13.100.92 转成数字地址的方式为:111256256256 + 13256256+100256+92*1
这样得到:1863148636
这种数字地址不需要在前面加0,即访问:http://1863148636 即可访问到百度。
跨域资源访问绕过
由于Origin中不存在带path情况,所以跨域资源访问绕过方式只有以下几点:
1 | http://www.jd.com.admintony.com |
CSRF的refer绕过
从域名下手
1 | http://admintony.com/?jd.com |
其他方式
- refer为空
利用ftp://
,file://
,javascript:
,data:
协议,当浏览器地址栏是这些协议开头的,如果这个HTML页面向任何http站点提交请求的话,这些请求的Referer都是空的。
- img标签的src属性
如果该站点的子域名内,存在发帖,img的src属性可控的情况,也可以使用<img src='CSRF地址'>
来绕过。
- 站内URL跳转
有很多时候,URL跳转可以跳转到其任意子域名,可以利用URL跳转的方式来绕过refer。
SSRF绕过方式
我觉得这个已经有总结的很详细的了,传送门SSRF绕过方法总结