2016年8月29日 星期一

DIVA Android - 11.Access Control Issues – Part 3

相關文章:

DIVA Android - 1.Insecure Logging
DIVA Android - 2.Hardcoding Issues – Part 1
DIVA Android - 3.Insecure Data Storage – Part 1
DIVA Android - 4.Insecure Data Storage – Part 2
DIVA Android - 5.Insecure Data Storage – Part 3
DIVA Android - 6.Insecure Data Storage – Part 4
DIVA Android - 7.Input Validation Issues – Part 1
DIVA Android - 8.Input Validation Issues – Part 2
DIVA Android - 9.Access Control Issues – Part 1
DIVA Android - 10.Access Control Issues – Part 2
DIVA Android - 11.Access Control Issues – Part 3
DIVA Android - 12.Hardcoding Issues – Part 2
DIVA Android - 13.Input Validation Issues – Part 3

「11.Access Control Issues – Part 3」對應到的 Activity 是 AccessControl3Activity,看一下 code 長這樣:


首先,如同「DIVA Android - 3.Insecure Data Storage – Part 1」中,先透過 getDefaultSharedPreferences 取得 preferences 的路徑(/data/data/<package_name>/shared_prefs/<package_name>_preferences.xml),接著將使用者輸入的密碼明文儲存至該檔中,這是第一個弱點。

再來 goToNotes 會去啟動 AccessControl3NotesActivity ,再來追這隻 Activity。



getContentResolver 會根據 query 取得指定的資料,所以我們再來看一下 NotesProvider 內的 CONTENT_URI:



稍微拼一下可得知我們要找的 URI 就是 content://jakhar.aseem.diva.provider.notesprovider/notes。

最後只要確定 AndroidManifest.xml 中 NotesProvider 的 exported 狀態是 true 就可以了。



直接撈資料吧:adb shell content query --uri content://jakhar.aseem.diva.provider.notesprovider/notes



content provider 的 exported 狀態為 true 為第二個弱點。

防範方法:

(1)敏感資料應加密後再儲存,且應使用安全的加密方式,詳情參考 NIST

(2)不該 exported 的 component 應設為 false。

沒有留言:

張貼留言