Android Webiew的addJavascriptInterface带来的漏洞

举报
yd_221104950 发表于 2020/12/03 23:34:38 2020/12/03
【摘要】 WebView漏洞: ** WebView 中的 addJavascriptInterface()接口** JS调用Android的其中一个方式是通过addJavascriptInterface接口进行对象映射: // 参数1:Android的本地对象 // 参数2:JS的对象 // 通过对象映射将Android中的本地对象和JS中的对象进行关联,从而实现JS调用...

WebView漏洞:
**

WebView 中的 addJavascriptInterface()接口**

JS调用Android的其中一个方式是通过addJavascriptInterface接口进行对象映射:

// 参数1:Android的本地对象
// 参数2:JS的对象
// 通过对象映射将Android中的本地对象和JS中的对象进行关联,从而实现JS调用Android的对象和方法
mWebView.addJavascriptInterface(new MyJSInterface(),"androidJsInterface");

  
 
  • 1
  • 2
  • 3
  • 4

因为WebView通过addJavascriptInterface绑定了一个Java对象,根据Java的反射机制,就可以获得比更多方法,和间接获得更多的实例对象,进行操作:

 try { Runtime runtime =  (Runtime) this.getClass().forName("java.lang.Runtime").getMethod("getRuntime",null).invoke(null,null); Process process = runtime.exec("date"); InputStream inputStream = process.getInputStream(); BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream); byte[] b = new byte[1024]; bufferedInputStream.read(b); String dateString = new String(b,"utf-8"); Toast.makeText(this,dateString,Toast.LENGTH_LONG).show(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

以上是Java的,它通过当前实例获得了Runtime,接着让它执行date命令。在JS中也是同样道理。
解决方案
(1) Android 4.2版本之后
Google 在Android 4.2 版本中规定对被调用的函数以 @JavascriptInterface进行注解从而避免漏洞攻击:

 private static class MyJSInterface{ @JavascriptInterface public void showMessage(String msg){ Log.d("JS Interface Message#",msg); } }

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

(2)对于Android 4.2以前,需要采用拦截prompt()的方式进行漏洞修复,比较麻烦

文章来源: blog.csdn.net,作者:WongKyunban,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_40763897/article/details/97627223

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。