压在透明的玻璃上c-国产精品国产一级A片精品免费-国产精品视频网-成人黄网站18秘 免费看|www.tcsft.com

DEFCON CHINA議題解讀 | 通用安卓平臺路徑穿越漏洞的挖掘與利用

簡介

在本次的defcon China上,來自于360 Alpha團隊的向小波與楊文林的“幾種通用的安卓平臺路徑穿越漏洞的挖掘與利用姿勢”議題介紹相關Android通用的幾種路徑穿越漏洞。路徑穿越漏洞輕則文件寫入,文件下載等。重則造成替換關鍵文件造成遠程命令執行等操作議題中有。

Content Provider文件目錄遍歷漏洞

首先了解一下ContentProvider組件是Android四大組件之一,其核心功能是提供應用件的統一數據訪問方式類似于C/S架構。其中ContentProvider提供了直接操作文件的方法這里只需重寫ContentProvider中的openFile()方法即可操作文件,如果對文件路徑沒有進行限制就會造成路徑穿越漏洞。

需要在Androidmanifest.xml中聲明provider標簽為true。

<provider
    android:name=".SampleContentProvider"
    android:authorities="mydownloadcontentprovider"
    android:exported="true" />  

其中authority是用于通過ContentProvider訪問數據的URI權限,并且將導出為true的設置允許其他應用程序使用該內容提供者。

public class SampleContentProvider extends ContentProvider {

    @Override
    public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException {
        File file = new File(Environment.getExternalStorageDirectory()?+"Download/",uri.getPath());
        return ParcelFileDescriptor.open(file , ParcelFileDescriptor.READ_ONLY_MODE);
    }
 }

當使用adb發送如下命令就會造成Poc:adb shell content open content://mydownloadcontentprovider/..%2f..%2f..%2f..%2f..%2fsdcard%2freadme.txt

即時通訊應用程序中的目錄遍歷

在一些IM中都提供一些像好友發送文件的功能,但如果處理不當就會造成目錄遍歷。這里以CVE-2018-10067 為例通過HOOK框架修改文件為畸形文件就會只要對方點擊下載即可生成到對應文件夾。

如圖所示:

還有中轉式IRC網絡聊天工具IRCCloud,攻擊者可以強制IRC Cloud應用程序將任意文件復制到任意目錄。

主要代碼如下:

 protected void onResume() { 
//...
 if (getSharedPreferences("prefs", 0).getString("session_key", "").length() > 0) { 
//...
 this.mUri = (Uri) getIntent().getParcelableExtra("android.intent.extra.STREAM"); // getting attacker provided uri 
if (this.mUri != null) { 
this.mUri = MainActivity.makeTempCopy(this.mUri, this); // copying file from this uri to /data/data/com.irccloud.android/cache/
 }

public static Uri makeTempCopy(Uri fileUri, Context context, String original_filename) { // original_filename = mUri.getLastPathSegment() //... 
try { 
Uri out = Uri.fromFile(new File(context.getCacheDir(), original_filename)); Log.d("IRCCloud", "Copying file to " + out); 
InputStream is = IRCCloudApplication.getInstance().getApplicationContext().getContentResolver().openInputStream(fileUri);
 OutputStream os = IRCCloudApplication.getInstance().getApplicationContext().getContentResolver().openOutputStream(out);
 byte[] buffer = new byte[8192];
 while (true) { 
int len = is.read(buffer); 
if (len != -1) {
 os.write(buffer, 0, len);
 //...

通過intent.putExtra("android.intent.extra.STREAM", uri);調用 IRCCloudApplication.getInstance().getApplicationContext().getContentResolver().openInputStream(fileUri);會通過openInputStream(…)方法自動解碼指定的uri。所以會訪問我的符號鏈接文件。

這里值得注意的是,
這個漏洞也允許覆蓋任意文件。因此,攻擊者也可以替換您的受保護文件并替代相關的歷史記錄。

在android郵箱應用中存在目錄遍歷漏洞

在Android一些郵件應用中附件下載中存在目錄遍歷問題。如果對應用程序中的附件文件名沒有路徑清理,就會造成相關的目錄遍歷。
如圖Filename1是Gmail,Filename2是outlook。

相關exp地址:

Gmail:https://www.exploit-db.com/exploits/43189/

Outlook:https://www.exploit-db.com/exploits/43353/

Web瀏覽器文件中的ZIP解壓縮

這里作者以CVE-2018-8084 搜狗瀏覽器目錄遍歷為例介紹如果瀏覽器解壓下載文件時如果文件使用惡意文件名,就會存在解壓時生成對于畸形文件,并且擁有重寫文件的權限,如果直接在libvplayer.so文件中寫入shell,就會造成遠程代碼執行效果。

如圖:

t01032dab0a7df03e7b

應用熱更新中造成文件目錄遍歷

以QQEmail的CVE-2018-5722 為例在attachPatchDex(…)方法中使用new File(arg8,"dex").listFiles(new DexFiler())會查找所有的dex文件進行加載。

通過修改smali造成文件目錄遍歷

在一些應用中一些方法中使用固定路徑,對于這類應用可以進行修改smali文件進行目錄遍歷攻擊。

t016e93ec2d39aeecca

修復方案

  1. 用哈希重命名或關聯下載的文件
  2. 規范用戶可控制文件名
  3. 避免讀取SD卡上的重要文件
  4. 檢查重要文件的完整性

引用

https://hackerone.com/reports/288955

原文:https://www.anquanke.com/post/id/145005

上一篇:網絡安全新領域:船舶航運業

下一篇:一體化漏洞評估管理 盛邦安全推出銀行安全漏洞解決方案