使用 Intent URL 启动 Android 浏览器的私人活动
Starting Android Browsers' Private Activities using Intent URLs
首先我不得不承认我是 Android 中的新手,但我们知道在 android 中我们无法通过另一个应用程序启动应用程序的私人活动。除非它们在 intent-filter
中设置为 android:exported=true 或者它们是为 implicit
调用而设计的。
但我们应该能够从应用程序中启动私人活动。对于浏览器(特别是 android),我们可以使用 Intent URLs
启动浏览器的私有 Activity。
我在 Opera Mobile 中找到了一些 Activity,问题是我无法 运行 使用 Intent URL,而且我不知道我在这方面做错了什么。
例如,歌剧中有一个 Activity 叫做 OperaMainActivity
(或另一个叫做 OperaStartActivity
),我试图像这样启动它们:
intent:#Intent;component=com.opera.browser/com.opera.android.OperaMainActivity;end
或
intent:#Intent;component=com.opera.browser/com.opera.android.OperaStartActivity;end
但其中 none 个将启动 Activity 调用。
虽然我仍然可以开始 AdMarvelActivity
这也是私人的 :
"intent:#Intent;S.url=https://google.com;component=com.opera.browser/com.admarvel.android.ads.AdMarvelActivity;end";
OperaMain Activity 在 AndroidManifest
中的定义如下:
<activity ns0:label="@string/app_name_title" ns0:name="com.opera.android.OperaMainActivity" ns0:launchMode="singleTask" ns0:configChanges="keyboard|keyboardHidden|orientation|screenSize" ns0:windowSoftInputMode="10" />
没有 intent-filter
。
这就是 AdMarvelActivity
在 AndroidManifest
中的定义:
<activity ns0:theme="@*ns0:style/Theme.NoTitleBar.Fullscreen" ns0:name="com.admarvel.android.ads.AdMarvelActivity" ns0:process=":helper" ns0:configChanges="keyboard|keyboardHidden|orientation" />
我看不出这两者之间有什么大的区别。我做错了什么?!
Vulnerable Handling of Intent URL Scheme 早已为人所知,大多数流行的浏览器(如 chrome、opera)都修复了这个错误。但是替代 android 浏览器仍然存在此漏洞。
我尝试了对当前版本的 Opera Mobile (v37) 的攻击,幸运的是它不起作用。您必须 运行 在较旧的 apk 上使用它。
如果您有兴趣在其他浏览器上测试这种攻击,可以关注此演讲:All Your Browsers Belong To Us;这演示了对 Dolphin 浏览器和 Mercury 浏览器的攻击。
首先我不得不承认我是 Android 中的新手,但我们知道在 android 中我们无法通过另一个应用程序启动应用程序的私人活动。除非它们在 intent-filter
中设置为 android:exported=true 或者它们是为 implicit
调用而设计的。
但我们应该能够从应用程序中启动私人活动。对于浏览器(特别是 android),我们可以使用 Intent URLs
启动浏览器的私有 Activity。
我在 Opera Mobile 中找到了一些 Activity,问题是我无法 运行 使用 Intent URL,而且我不知道我在这方面做错了什么。
例如,歌剧中有一个 Activity 叫做 OperaMainActivity
(或另一个叫做 OperaStartActivity
),我试图像这样启动它们:
intent:#Intent;component=com.opera.browser/com.opera.android.OperaMainActivity;end
或
intent:#Intent;component=com.opera.browser/com.opera.android.OperaStartActivity;end
但其中 none 个将启动 Activity 调用。
虽然我仍然可以开始 AdMarvelActivity
这也是私人的 :
"intent:#Intent;S.url=https://google.com;component=com.opera.browser/com.admarvel.android.ads.AdMarvelActivity;end";
OperaMain Activity 在 AndroidManifest
中的定义如下:
<activity ns0:label="@string/app_name_title" ns0:name="com.opera.android.OperaMainActivity" ns0:launchMode="singleTask" ns0:configChanges="keyboard|keyboardHidden|orientation|screenSize" ns0:windowSoftInputMode="10" />
没有 intent-filter
。
这就是 AdMarvelActivity
在 AndroidManifest
中的定义:
<activity ns0:theme="@*ns0:style/Theme.NoTitleBar.Fullscreen" ns0:name="com.admarvel.android.ads.AdMarvelActivity" ns0:process=":helper" ns0:configChanges="keyboard|keyboardHidden|orientation" />
我看不出这两者之间有什么大的区别。我做错了什么?!
Vulnerable Handling of Intent URL Scheme 早已为人所知,大多数流行的浏览器(如 chrome、opera)都修复了这个错误。但是替代 android 浏览器仍然存在此漏洞。
我尝试了对当前版本的 Opera Mobile (v37) 的攻击,幸运的是它不起作用。您必须 运行 在较旧的 apk 上使用它。
如果您有兴趣在其他浏览器上测试这种攻击,可以关注此演讲:All Your Browsers Belong To Us;这演示了对 Dolphin 浏览器和 Mercury 浏览器的攻击。