安全风险:Intent scheme漏洞
•URI Scheme 是统一资源标识符(Uniform Resource Identifier )
1.URI(Uniform Resource Identifier) 和URL(Uniform Resource Locator )两者名称都不一样,所以必然有区别,前者是统一资源标识符,后者是统一资源定位符,后者是网络上用于定位互联网上Web资源的,如HTML文档、图像、视频片段、程序等。
2.它是一个通用定义,不是“protocols”,也不是URI protocols或者URL protocols。
3.它经常用于设计特殊的协议。如http scheme(HTTP协议), XML namespaces,文件标示等等。
从上面的一些结论来看,URI Scheme实际上一个概念性的东西,是一个规范,所以符合它的规范的都可以称之为URI Scheme,当然,我们也可以设计我们自己的scheme,用来实现我们特殊的目的。它一般具有如下的形式:
•以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)中的一个重要命令,它允许开发者或测试人员通过命令行界面与Android设备进行交互,执行各种操作,如启动应用程序、拨打电话、打开网站等。am命令的全称是Activity Manager,即活动管理器,它提供了对Android设备上活动(Activity)的精细控制。
打开网站:类似地,可以通过adb am命令打开网站。例如,打开百度网站的命令是adb shell am start -a android.intent.action.VIEW -d https://www.baidu.com。
启动带有额外数据的应用程序:如果需要在启动应用程序时传递额外的数据,可以使用-es选项。例如,启动一个带有网站额外数据的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.任意文件读写造成代码执行
示例演示
演示startActivityForResult隐式启动安全风险
安全风险:显式启动的风险
1.信息泄露
2.任意文件读写造成代码执行
示例演示
演示startActivityForResult显式启动安全风险