一款图形化的 .DS_Store文件泄露、.git目录泄露、.svn目录泄露漏洞利用工具。
本工具使用Python3 + PyQt5开发,在开始使用前,请确保已经安装了相关模块:
pip3 install -r requirements.txt
.DS_Store 是 macOS 系统自动生成的隐藏文件,全称是 “Desktop Services Store”。它主要用于在文件夹中记录该文件夹的显示偏好,比如:
- 图标的位置和大小
- 文件夹的视图模式(图标、列表、分栏、画廊)
- 排序方式(按名称、日期、类型等)
- 背景图片(如果有设置)
.DS_Store 文件泄露漏洞是指,开发者使用Mac系统进行编码,或者网站源代码目录结构中存在 .DS_Store 文件。 在开发完成后没有及时删除掉 .DS_Store 文件就将代码部署到服务器,导致 .DS_Store 文件被一并上传到了服务器。
通过解析 .DS_Store 文件,可以还原出网站的目录结构,例如:当前目录下有哪些文件、有哪些子目录。
注意📢:.DS_Store 文件并不会100%的记录完整的目录结构!!!也并非所有目录都会自动生成 .DS_Store文件!!!
也就是说,假设 root 目录下实际存在"1.txt"、"2.txt"、"3.txt"和子目录"sub directory", 但是 .DS_Store 文件中可能只记录了 root 目录下只有一个"1.txt",这都是正常情况!!!
其具体原理与 .DS_Store 文件的生成有关。例如:
- 使用系统命令 mkdir 创建了子目录,但是从未使用Finder打开该子目录,则该子目录必定不存在 .DS_Store
- 使用系统命令或在Finder中右键菜单创建了子目录,也使用Finder打开过该子目录,但是没有在Finder中调整过该子目录的图标的位置和大小、文件夹的视图模式、排序方式等信息,则该子目录基本上也不会生成 .DS_Store 文件
- 某目录已经存在 .DS_Store 文件,随后使用cp、touch或者浏览器下载等方式向该目录中创建/新增了文件,则 .DS_Store 文件中基本也不会记录这个新增的文件。
.DS_Store 模块的作用是递归解析泄露的.DS_Store文件,还原目录结构。本模块支持直接输入 .DS_Store 文件的URL地址,也支持解析下载到本地的 .DS_Store 文件。
当运行脚本后,你应该能看到如下界面:
左侧菜单选取 .DS_Store 解析模块,进入 .DS_Store 解析功能。 在输入框中输入已知的 .DS_Store 文件的URL,例如:
http://127.0.0.1:8000/.DS_Store
然后点击开始按钮 .DS_Store 解析模块就会尝试下载并递归解析 .DS_Store 文件,尽可能还原网站目录:
如果你已经将 .DS_Store 文件下载到本地,也可以解析本地的 .DS_Store 文件,只需要输入文件路径即可:
这是因为 .DS_Store 文件只会记录当前目录的目录结构,而无法记录当前目录下的子目录内的结构。
递归解析的原理是:
- 解析 .DS_Store 文件,如果发现存在子目录:sub_directory_1
- 自动组装URL地址:http://doamin/sub_directory_1/.DS_Sotre 并尝试访问
- 对 sub_directory_1下的 .DS_Store 进行解析,并重复第1、2步
所以,如果是已经下载到了本地的 .DS_Store 文件,即使识别到了当前目录下的子目录,也无法读取到子目录下的 .DS_Store 文件,因为子目录下的.DS_Store 文件在本地根本不存在,所以也就无法递归还原了。
在左侧的目录结构树中的右键菜单支持查看 .DS_Store 文件中记录的文件和子目录的属性:
本工具支持导出解析结果,保存到本地文件:
查看导出的解析结果: