1. 威客安全首页
  2. 安全资讯

原创干货 | 挖掘src之url跳转以及延伸

点击关注了解更多精彩内容!!




前段时间待在家一直没事,挖了挖src练练手,初挖src,没有什么厉害的洞,捡了一些url跳转。

url跳转,一些常用的绕过方式在百度可以看到,比如一些符号:?、#、.等,这里不再说明。

下面我来说说遇到过的src的url跳转类型。



0x01跳转类型


1.无任何措施

原创干货 | 挖掘src之url跳转以及延伸

直接通过jumpurl参数,来进行url跳转,可以直接跳转到百度(Location:http://www.baidu.com)

原因可能在于该点未对jumpurl参数校验,所以会对jumpurl传入的参数直接进行Location跳转


2.对参数进行部分校验

原创干货 | 挖掘src之url跳转以及延伸

蓝色框:原来跳转域名,举例:example.test.com

红色框:原跳转域名的主域名,举例:test.com

这里为什么说部分校验,如果参数与1.情况一样的话,是跳转不了的,直接报错。可以进行以下绕过,在原域名前面加上668btest.com#@(#为锚链接)据我推测,可能校验的代码是如下代码:(以Python举例)

if ‘test.com’ in url:

print(“允许跳转”)

所以如果跳转参数为668btest.com是符合逻辑的


3.对双斜杠进行过滤

原创干货 | 挖掘src之url跳转以及延伸

原创干货 | 挖掘src之url跳转以及延伸

可以看到双斜杠直接跳到原来的域名,下面这张单斜杠其实已经可以进行跳转了(firefox、chrome、safari测试成功),然而后面我看了《白帽子讲web安全》以后,对浏览器解析的字符有了一点了解,这里举一个简单例子,如果参数是http:/www.baidu.com

原创干货 | 挖掘src之url跳转以及延伸

谷歌测试能正常跳转baidu

原创干货 | 挖掘src之url跳转以及延伸

firefox测试能正常跳转baidu

原创干货 | 挖掘src之url跳转以及延伸

但是safari却不行

原创干货 | 挖掘src之url跳转以及延伸

这里我猜测可能是safari识别不了参数里含有/的url跳转,导致Location失败,致使无法打开页面(直接让safari打开http:/www.baidu.com是可以的)如果不对还请指教,更多的浏览器识别畸形字符还请看《白帽子讲web安全》

这里还要讲一点,这个Location为服务端的redirect

原创干货 | 挖掘src之url跳转以及延伸

本地测试meta的跳转,没有Location属性:

原创干货 | 挖掘src之url跳转以及延伸

所以我推测,服务端另外设置了Location跳转(即服务端redirect),并不仅仅只有meta的跳转;如果没有Location跳转,可能还可以延伸出xss


4.某个特定参数取值决定跳转

该类型为补充,只有service_type的值为1015的时候才会跳转,值为1、2、3则不跳转

原创干货 | 挖掘src之url跳转以及延伸


5.url跳转可能引发的凭证劫取

该例洞发现建立在2.类型基础上:

原创干货 | 挖掘src之url跳转以及延伸

原创干货 | 挖掘src之url跳转以及延伸

红色框:原跳转域名的主域名,举例:test.com

%23%40为#@的url编码,111test.com即为跳转域名,可以看到这个页面还有个referer头

截图页面为B,之前一个页面为A,即Referer的页面,后面跳转到m.111test.com为页面C。所以整个跳转顺序为:A→B→C。

如果按照一般来说,下个页面进行跳转的话,referer头是不会带入的,但是,这里跳转为Location,即为服务端的redirect,上一个页面的referer参数将自动带入下一个页面

Followredirection后可以看到页面C:

原创干货 | 挖掘src之url跳转以及延伸

可以搭建一个web服务器,来记录Referer头带入的东西。

下面为Referer头获取与否的几种情况:(这里只是说大部分情况,比如上例虽然是服务端的redirect,但是A页面跳转到B页面是能获取到Referer的,B页面跳转到C页面,将B页面的Referer[A页面url]带入了,同样也可以说明,服务端的redirect无法将Referer获取为B页面url)

能获取到Referer的情况:

①.使用标签来访问页面

②.submit提交的表单post和get

③.使用js提交的post和get表单


不能获取的Referer的情况:

①.使用js重定向location.href和location.replace()

②.服务器端的redirect,PHP中的header(“location:”)

③.使用http重定向


6.超链接带入url的跳转

原创干货 | 挖掘src之url跳转以及延伸

该处为src下载apk的地址,红色框为我构造的一个服务器的apk安装包,蓝色框为点击事件请求红框的url,所以url跳转带入了恶意apk,对apk进行伪装,可以达到钓鱼效果,控制受害者的手机

原创干货 | 挖掘src之url跳转以及延伸


0x02防护


1.白名单校验是最好的方式,信任域之间可以跳转

2.代码控制跳转,不在参数中显示

3.添加恶意链接检测



     云 众 可 信     
关注后续有惊喜噢!
长按二维码关注>>>
原创干货 | 挖掘src之url跳转以及延伸

原创干货 | 挖掘src之url跳转以及延伸

原文始发于微信公众号(云众可信):原创干货 | 挖掘src之url跳转以及延伸

本文转为转载文章,本文观点不代表威客安全立场。

发表评论

登录后才能评论

联系我们

15110186328

在线咨询:点击这里给我发消息

邮件:zhanglei@jinlongsec.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code
X