.DS_Store泄漏¶
.DS_Store文件是苹果MacOS系统中的一种隐藏文件,以下是关于它的详细介绍:
一、作用
- 存储文件夹的自定义设置
- 在Mac系统中,用户可以对文件夹进行各种自定义操作,比如调整文件的排列方式(按名称、日期、大小等排序)、设置文件夹的图标位置、背景颜色等。.DS_Store文件就是用来保存这些自定义设置的。例如,当你在一个文件夹中将文件按照创建日期从新到旧排列,并且设置了文件夹的背景为一张图片,这些设置信息就会被存储在该文件夹的.DS_Store文件中。
- 用于Finder(Mac系统的文件管理器)的显示优化
- Finder在显示文件夹内容时,会参考.DS_Store文件中的信息来正确地展示文件夹的布局。比如文件的缩略图显示、文件夹的网格布局等。它使得文件夹在Finder中的显示更加符合用户的个性化需求,提升用户体验。
二、特点
- 隐藏性
- 它是一个隐藏文件,在Mac系统默认情况下,用户在Finder中是看不到.DS_Store文件的。这是因为它主要是为系统服务,而不是让用户直接操作的文件。不过,用户可以通过一些终端命令或者特定的设置来显示隐藏文件,从而看到.DS_Store文件。
- 自动生成
- 当你在Mac系统中创建一个新的文件夹,并且对文件夹进行一些操作(如改变文件排列顺序等)后,系统会自动在该文件夹中生成.DS_Store文件。而且,当你在外部存储设备(如U盘)上使用Mac系统创建文件夹并进行操作后,也会在这些文件夹中生成.DS_Store文件。
解析.DS_Store¶
可以使用如下工具:
- hanwenzhu/.DS_Store-parser: Parses everything from the .DS_Store files generated by macOS
- gehaxelt/Python-dsstore: A library for parsing .DS_Store files and extracting file names

成功解析出了相关的文件信息

该工具主要解析文件/文件夹名
.DS_Store泄漏的危害¶
上文我们在本地解析出了文件目录,文件名等信息,如果我们的web服务器存在.DS_Store泄漏,那么会造成一些危害
目录结构和文件清单泄露¶
.DS_Store文件中存储了文件夹的目录结构和文件清单,包括文件名、子文件夹名等信息。如果该文件被泄漏,攻击者可以通过解析.DS_Store文件获取网站或服务器的文件目录结构,从而了解系统布局。
敏感文件泄露¶
.DS_Store文件可能包含指向备份文件、源代码文件、配置文件甚至密钥等敏感信息的路径。攻击者利用这些信息可以进一步获取敏感数据,例如数据库备份文件或服务器配置文件。
增加攻击面¶
.DS_Store文件的泄漏为攻击者提供了额外的攻击入口。攻击者可以通过分析文件内容找到潜在的漏洞或敏感路径,从而发起更有针对性的攻击。
隐私泄露¶
.DS_Store文件可能包含一些个人或组织的隐私信息,例如文件夹的自定义设置、图标布局等。这些信息虽然看似无害,但在某些情况下可能会暴露用户的使用习惯或敏感操作。
数据泄露风险¶
如果.DS_Store文件中包含指向敏感数据的路径,攻击者可能通过这些路径直接访问或下载敏感文件,导致数据泄露。
利用工具¶
- 0xHJK/dumpall: 一款信息泄漏利用工具,适用于.git/.svn/.DS_Store泄漏和目录列出
- lijiejie/ds_store_exp: A .DS_Store file disclosure exploit. It parses .DS_Store file and downloads files recursively.

该工具会将泄漏的文件下载保存到文件夹中,可能会造成源码/密钥等泄漏
Bash
# use dumpall
python dumpall.py -u http://localhost:8000/.DS_Store
Usage: dumpall.py [OPTIONS]
信息泄漏利用工具,适用于.git/.svn/.DS_Store,以及目录列出下载
Example: dumpall -u http://example.com/.git
Options:
--version Show the version and exit.
-u, --url TEXT 指定目标URL,支持.git/.svn/.DS_Store,以及类index页面
-o, --outdir TEXT 指定下载目录,默认目录名为主机名
-p, --proxy TEXT 指定代理 scheme://[user:pass@]hostname:port
-f, --force 强制下载(可能会有蜜罐风险)
-d, --debug 调试模式 输出更多日志
--help Show this message and exit.

该工具似乎扫描得更全一些
防御手段¶
为了避免.DS_Store文件泄漏带来的风险,可以采取以下措施:
- 删除.DS_Store文件:在上传文件到服务器之前,删除所有.DS_Store文件。
- 禁用.DS_Store文件生成:在Mac系统中,可以通过终端命令禁用.DS_Store文件的生成。
- 设置访问权限:确保服务器上的.DS_Store文件不可被未经授权的用户访问。
- 定期扫描和清理:使用工具扫描服务器上的.DS_Store文件并及时清理。
通过采取这些措施,可以有效降低.DS_Store文件泄漏带来的安全风险。