转载

美团网APP存在远程命令执行漏洞

一,com.meituan.android.base.hybrid.HybridWebViewActivity对外导出:

<activity
android:name="com.meituan.android.base.hybrid.HybridWebViewActivity"
android:launchMode="0"
android:screenOrientation="1"
android:configChanges="0x000000A0"
>
<intent-filter
>
<action
android:name="android.intent.action.VIEW"
>
</action>
<category
android:name="android.intent.category.DEFAULT"
>
</category>
<category
android:name="android.intent.category.BROWSABLE"
>
</category>
<data
android:scheme="imeituan"
android:host="www.meituan.com"
android:path="/hybrid/web"
>
</data>
</intent-filter>
</activity>

导出MeituanHotelWebviewBridge这个js接口:

protected void onCreate(Bundle arg6) {
super.onCreate(arg6);
this.webView.addJavascriptInterface(new com.meituan.android.base.hybrid.h(this), "MeituanHotelWebviewBridge");
this.webView.getSettings().setUserAgentString(this.webView.getSettings().getUserAgentString()
+ String.format(" %s/%s", "iHotel", BaseConfig.versionName));
}

进入super.onCreate查看之前的操作:

public void onCreate(Bundle arg3) {
super.onCreate(arg3);
if(this.getIntent().getData() != null) {
String v0 = this.buildQueryUrl(this.getIntent().getData());
if(!TextUtils.isEmpty(((CharSequence)v0))) {
this.url = v0;
}
}

if(TextUtils.isEmpty(this.url)) {
this.finish();
}
else {
if(!TextUtils.isEmpty(this.title)) {
this.getSupportActionBar().setTitle(this.title);
}

if(this.getIntent().hasExtra("share")) {
this.topic = this.getIntent().getSerializableExtra("share");
}

this.loadUrl(this.url);
this.bus.a(this);
}
}

获取数据并构造相应的url进行加载,进入buildQueryUrl函数查看细节:

private String buildQueryUrl(Uri arg4) {

String v0_1;

if(arg4 == null || (TextUtils.isEmpty(arg4.getQueryParameter("url")))) {

v0_1 = "";

}

else {

Uri$Builder v0 = Uri.parse(arg4.getQueryParameter("url")).buildUpon();

if(!TextUtils.isEmpty(arg4.getQueryParameter("ieic"))) {

v0.appendQueryParameter("ieic", arg4.getQueryParameter("ieic"));

}

if(!TextUtils.isEmpty(arg4.getQueryParameter("ct_poi"))) {

v0.appendQueryParameter("ct_poi", arg4.getQueryParameter("ct_poi"));

}

if(!TextUtils.isEmpty(arg4.getQueryParameter("msid"))) {

v0.appendQueryParameter("msid", arg4.getQueryParameter("msid"));

}

v0_1 = v0.toString();

}

return v0_1;

}

获取url参数,并再根据url中的参数构造url,因此我们构造下面的html即可进行远程代码执行漏洞攻击:

美团网APP存在远程命令执行漏洞

由于HybridWebViewActivity在menifest定义了android.intent.category.BROWSABLE属性,因此可以通过浏览器唤起HybridWebViewActivity组件,达到远程命令执行漏洞攻击。

浏览恶意网页即可受到远程命令执行漏洞攻击:

美团网APP存在远程命令执行漏洞

二,com.meituan.android.base.ui.CommonWebViewActivity对外导出:

<activity
android:name="com.meituan.android.base.ui.CommonWebViewActivity"
android:launchMode="0"
android:screenOrientation="1"
android:configChanges="0x000000A0"
>
<intent-filter
>
<action
android:name="android.intent.action.VIEW"
>
</action>
<category
android:name="android.intent.category.DEFAULT"
>
</category>
<category
android:name="android.intent.category.BROWSABLE"
>
</category>
<data
android:scheme="imeituan"
android:host="www.meituan.com"
android:path="/web/"
>
</data>
<data
android:scheme="imeituan"
android:host="www.meituan.com"
android:path="/web"
>
</data>
<data
android:scheme="iMeituan"
android:host="www.meituan.com"
android:path="/web/"
>
</data>
<data
android:scheme="iMeituan"
android:host="www.meituan.com"
android:path="/web"
>
</data>
</intent-filter>
</activity>

导出Android这个js接口:

this.webView.addJavascriptInterface(new BaseWebViewActivity$MyJavaScriptInterface(this), "Android");

进入onCreate查看之前的操作:

public void onCreate(Bundle arg3) {
super.onCreate(arg3);
if(this.getIntent().getData() != null) {
String v0 = this.buildQueryUrl(this.getIntent().getData());
if(!TextUtils.isEmpty(((CharSequence)v0))) {
this.url = v0;
}
}

if(TextUtils.isEmpty(this.url)) {
this.finish();
}
else {
if(!TextUtils.isEmpty(this.title)) {
this.getSupportActionBar().setTitle(this.title);
}

if(this.getIntent().hasExtra("share")) {
this.topic = this.getIntent().getSerializableExtra("share");
}

this.loadUrl(this.url);
this.bus.a(this);
}
}

获取数据并构造相应的url进行加载,进入buildQueryUrl函数查看细节:

private String buildQueryUrl(Uri arg4) {
String v0_1;
if(arg4 == null || (TextUtils.isEmpty(arg4.getQueryParameter("url")))) {
v0_1 = "";
}
else {
Uri$Builder v0 = Uri.parse(arg4.getQueryParameter("url")).buildUpon();
if(!TextUtils.isEmpty(arg4.getQueryParameter("ieic"))) {
v0.appendQueryParameter("ieic", arg4.getQueryParameter("ieic"));
}

if(!TextUtils.isEmpty(arg4.getQueryParameter("ct_poi"))) {
v0.appendQueryParameter("ct_poi", arg4.getQueryParameter("ct_poi"));
}

if(!TextUtils.isEmpty(arg4.getQueryParameter("msid"))) {
v0.appendQueryParameter("msid", arg4.getQueryParameter("msid"));
}

v0_1 = v0.toString();
}

return v0_1;
}

获取url参数,并再根据url中的参数构造url,因此我们构造下面的html即可进行远程代码执行漏洞攻击:

美团网APP存在远程命令执行漏洞

由于CommonWebViewActivity在menifest定义了android.intent.category.BROWSABLE属性,因此可以通过浏览器唤起CommonWebViewActivity组件,达到远程命令执行漏洞攻击。

浏览恶意网页即可受到远程命令执行漏洞攻击:

美团网APP存在远程命令执行漏洞

正文到此结束
Loading...