Утечка имён файлов в .DS_Store: как просмотреть содержимое и как эксплуатировать
Что за файлы DS_Store и зачем они нужны
.DS_Store — это файлы в операционной системе Apple OS X, они хранят пользовательские настройки папки, такие как расположение иконок, выбранное фоновое изображение, список файлов. Имя является сокращением от Desktop Services Store. Эти файлы создаются и поддерживается приложением Finder в каждой папке и имеют функции схожие с файлом desktop.ini в Microsoft Windows. Имена, которые начинаются с точки, в том числе и у файла .DS_Store, являются скрытыми в Finder и многих утилитах Unix. Внутренняя структура этих файлов является проприетарной.
Файлы .DS_Store представляют интерес, поскольку содержат перечень файлов в текущей папке. Эти файлы могут использоваться при криминалистическом анализе локальной системы. Также эти файлы могут попадать на сервер, например, если перемещение папки было сделано в ZIP архиве с Mac машин.
Через файлы .DS_Store не происходит утечка содержимого файлов, раскрываются только их имена.
Как и чем открыть файлы .DS_Store
Поскольку формат .DS_Store является проприетарным, и отсутствуют официальные утилиты для работы с этими файлами, то методами обратного инженеринга была проанализирована структура этого файла и сделано несколько инструментов, которые умеют извлекать его содержимое. Эти инструменты обычно успешно показывают имена файлов, содержащихся в файле .DS_Store, но некоторые файлы .DS_Store вызывают ошибки — возможно, файлы повреждены или имеют какие-то свойства, которые не реализованы в инструменте для анализа.
Пример программы для открытия .DS_Store это Python-dsstore.
Для установки Python-dsstore в Linux:
git clone https://github.com/gehaxelt/Python-dsstore cd Python-dsstore/
Использование:
python3 ./main.py <ФАЙЛ>
Пример вывода:
Если у вас не Linux, то вы можете воспользоваться онлайн сервисом просмотра содержимого .DS_Store. В этом сервисе достаточно загрузить файл и будут показаны все имена файлов, которые в нём найдены. Вы можете переименовать .DS_Store в любое другое имя, если файл с точкой в начале не видим в вашей системе. Имя файла не влияет на результаты анализа.
Как искать файлы .DS_Store
Эти файлы могут быть найдены с помощью сканера Nikto, либо типичными программами для поиска скрытых директорий и файлов на сайтах:
Главное, удостоверьтесь, что в их словарях есть .DS_Store.
Если вам хочется найти файлы .DS_Store на любых серверах, чтобы попробовать инструменты, о которых будет рассказано далее, то вы можете найти множество таких файлов на сайтах в Интернете с помощью Google дорков:
intext:.DS_Store & intitle:index -github intitle:"index of" intext:".ds_store" inurl:.DS_Store intitle:index of inurl:.DS_Store intitle:index.of
Для поиска этих файлов на GitHub: https://github.com/search?q=.DS_Store&type=Commits
Эксплуатация утечки данных через файл .DS_Store
Если вы попробовали дорки, которые даны выше, то вы уже в курсе, что с компьютеров разработчиков веб-сайтов и поставщиков медиа файлы .DS_Store попадают в каталоги веб-сервера и становятся публично доступными. На самом деле, если эти файлы можно найти с помощью Гугл, то особого прока в них нет — в этом случае файлы расположены в директориях без индексного файла (index.php, index.htm, index.html) и с разрешением на просмотр содержимого директории. То есть вы и без файла .DS_Store сможете посмотреть что находится в папке и скачать это.
Последующие инструменты в первую очередь полезны если вы нашли файл .DS_Store, например, с помощью Nikto и директории закрыты для просмотра. В этом случае, используя .DS_Store и инструменты, о которых рассказано ниже, можно скачать файлы, о существовании которых ранее было неизвестно.
Я расскажу сразу о двух инструментах, которые, используя найденный на сервере .DS_Store, ищут другие файлы.
Первый такой инструмент ds_store_exp. Он скачивает файл .DS_Store, извлекает из него имена файлов и конструирует новые ссылки для скачивания упомянутых файлов. При сохранении файлов воспроизводится структура каталогов удалённого сервера.
Для установки ds_store_exp на Linux выполните:
git clone https://github.com/lijiejie/ds_store_exp cd ds_store_exp sudo pip2 install -r requirements.txt
Чтобы проанализировать, какие файлы и директории упоминаются в файле .DS_Store, расположенного по адресу https://www.digitalrepublik.com/assets/img/.DS_Store:
python2 ./ds_store_exp.py https://www.digitalrepublik.com/assets/img/.DS_Store
Для просмотра скаченных файлов и структуры обнаруженных директорий:
tree www.digitalrepublik.com/
В некоторых случаях, например:
sudo python2 ./ds_store_exp.py https://www.le-pam.fr/images/.DS_Store
Работа программы будет завершаться ошибкой:
[200] https://www.le-pam.fr/images/.DS_Store [!] Unable to read 1024 bytes in block
Суть проблемы в том, что не удаётся прочитать содержимое .DS_Store — либо из-за того, что файл повреждён, либо из-за недостатков инструментов, созданных на основе обратной инженерии.
Второй скрипт называется DS_Store_crawler_parser. Он скачивает файл .DS_Store и проверяет доступность упомянутых в нём файлов, но сами файлы не скачивает.
Установка DS_Store_crawler_parser в Kali Linux:
git clone https://github.com/anantshri/DS_Store_crawler_parser cd DS_Store_crawler_parser sudo pip3 install -r requirements.txt python3 ./dsstore_crawler.py -h
Установка DS_Store_crawler_parser в BlackArch:
sudo pacman -S dsstore-crawler sudo sed -i 's/is not/!=/g' /usr/share/dsstore-crawler/dsstore_crawler.py
При его запуске есть особенности, во-первых, нужно использовать опцию -i:
python3 ./dsstore_crawler.py -i https://www.digitalrepublik.com/assets/img/
Во-вторых, обратите внимания, как мы указали URL: для работы скрипта укажите URL до папки, где находится файл .DS_store, а не полный путь до этого файла.
Связанные статьи:
- FinalRecon: простой и быстрый инструмент для сбора информации о сайте, работает и на Windows (61.2%)
- Инструкция по использованию sqlmap. Ч.1: Основы работы (GET) (52.1%)
- Инструкция по использованию sqlmap. Ч.2: Продвинутое сканирование и эксплуатация (POST, после аутентификации, AJAX/jQuery) (52.1%)
- Инструкция по использованию sqlmap. Ч.3: Залив бэкдора, выполнение системных команд, изменение данных в БД (52.1%)
- Использование sqlmap для инъекции в адресе страницы сайта (URI). Произвольные точки инъекции (52.1%)
- Получение имён пользователей сайта методом перебора (RANDOM - 13.2%)
в текущей папкЕ, е…аныйстыд
Спасибо, поправил.