安全風險:Intent scheme漏洞
?URI Scheme 是統(tǒng)一資源標識符(Uniform Resource Identifier )
1.URI(Uniform Resource Identifier) 和URL(Uniform Resource Locator )兩者名稱都不一樣,所以必然有區(qū)別,前者是統(tǒng)一資源標識符,后者是統(tǒng)一資源定位符,后者是網(wǎng)絡上用于定位互聯(lián)網(wǎng)上Web資源的,如HTML文檔、圖像、視頻片段、程序等。
2.它是一個通用定義,不是“protocols”,也不是URI protocols或者URL protocols。
3.它經(jīng)常用于設計特殊的協(xié)議。如http scheme(HTTP協(xié)議), XML namespaces,文件標示等等。
從上面的一些結論來看,URI Scheme實際上一個概念性的東西,是一個規(guī)范,所以符合它的規(guī)范的都可以稱之為URI Scheme,當然,我們也可以設計我們自己的scheme,用來實現(xiàn)我們特殊的目的。它一般具有如下的形式:
?以intent作為scheme的uri:
intent:
HOST/URI-path // Optional host
#Intent;
package=[string];
action=[string];
category=[string];
component=[string];
scheme=[string];
end;
<a href="intent://scan/#Intent;scheme=zxing;package=com.google.zxing.client.android;end"> Take a QR code </a>
示例演示
演示Intent scheme如何使用和相關風險
安全風險:adb命令打開組件
adb am命令是Android Debug Bridge(ADB)中的一個重要命令,它允許開發(fā)者或測試人員通過命令行界面與Android設備進行交互,執(zhí)行各種操作,如啟動應用程序、撥打電話、打開網(wǎng)站等。am命令的全稱是Activity Manager,即活動管理器,它提供了對Android設備上活動(Activity)的精細控制。
打開網(wǎng)站:類似地,可以通過adb am命令打開網(wǎng)站。例如,打開百度網(wǎng)站的命令是adb shell am start -a android.intent.action.VIEW -d https://www.baidu.com。
啟動帶有額外數(shù)據(jù)的應用程序:如果需要在啟動應用程序時傳遞額外的數(shù)據(jù),可以使用-es選項。例如,啟動一個帶有網(wǎng)站額外數(shù)據(jù)的Activity的命令是am start -n com.android.example/.MainActivity -es website www.baidu.com。
[-a <ACTION>]
[-d <DATA_URI>]
[-t <MIME_TYPE>]
[-c <CATEGORY> [-c <CATEGORY>] ...]
[-e|--es <EXTRA_KEY> <EXTRA_STRING_VALUE> ...]
[--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE> ...]
[-e|--ei <EXTRA_KEY> <EXTRA_INT_VALUE> ...]
[-n <COMPONENT>]
[-f <FLAGS>] [<URI>]
-p packageName
安全風險:Intent scheme漏洞
示例演示
演示adb am命令使用
安全風險:activity打開的另外一種方式
startActivityForResult(intent, 1);
安全風險:隱式啟動的風險
1.越權
2.任意文件讀寫造成代碼執(zhí)行
示例演示
演示startActivityForResult隱式啟動安全風險
安全風險:顯式啟動的風險
1.信息泄露
2.任意文件讀寫造成代碼執(zhí)行
示例演示
演示startActivityForResult顯式啟動安全風險