1、版本管理软件造成的泄露
(1)Git
关键文件
git在初始化项目的时候, 会在项目的根目录(可用git rev-parse --show-toplevel
查看)创建一个名为.git
的隐藏文件夹, 里面包含了本地所有commit的历史记录. 如果无意间将这个目录置于WEB的路径下让用户可以访问,
那么也就泄露了几乎所有的源代码和其他其他敏感信息.
泄露内容
该项目的所有源代码,私有仓库地址,私密配置信息等
利用方法
下载整个目录,用git命令回滚整个项目:
wget -r --no-parent --mirror http://www.example.com/.git
cd www.example.com && git reset --hard
自动化利用脚本:https://github.com/lijiejie/GitHack
GitHack.py http://www.openssl.org/.git/
(2)hg/Mercurial
用法与git相似,但也保留了svn命令简明的特点,且支持Windows/MacOS/Linux三大平台, 不像git需要MinGW才得以运行
关键文件
在初始化项目时,在项目根目录下创建一个名为.hg
的隐藏文件,其中包含了代码和分支的修改记录和开发人员的相关信息
泄露文件
项目源代码、项目仓库地址、(可能)仓库用户名
利用方法
下载+回滚
wget -r --no-parent --mirror http://www.example.com/.hg
cd www.example.com && hg revert
(3)SVN/Subversion
关键文件
项目的根目录下会创建一个名为.svn
的隐藏文件,包含了所有分支commit信息和代码记录
泄露文件
项目的源代码、svn仓库地址、svn仓库所属用户的用户名
利用方法
下载+回滚:
wget -r --no-parent --mirror http://www.example.com/.svn
cd www.example.com && svn revert --recursive .
工具:dvcs-ripper
(4)bzr/Bazaar
多平台支持,且有图形界面
关键文件
初始化项目时(bzr init/init-repo),根目录产生.bzr
的隐藏目录,暴露了源代码和用户信息
泄露信息
源代码、仓库地址、开发者信息
利用方法
wget -r --no-parent --mirror http://www.example.com/.bzr
cd www.example.com && bzr revert
工具:dvcs-ripper
(5)CVS
年代比较久远的版本控制系统,通过它可以追踪源代码的历史变化记录。但因为功能简单,且不支持分支,被svn替代
关键文件
项目在初始化(cvs checkout project)的时候, 会在project目录下创建一个名为CVS的目录
其中保存了各个文件的修改和commit记录. 通过此目录可以获取代码的历史版本。其中两个关键文件为:
CVS/Root
和CVS/Entries
, 分别记录了项目的根信息和所有文件的结构
利用方法
下载+CVS命令
wget -r --no-parent --mirror http://www.example.com/CVS
cd www.example.com && cvs diff *
工具:dvcs-ripper
2、文件包含导致的泄露(配置不当)
(1)**.DS_Store**
文件泄露
.DS_Store
是macOS目录下的隐藏文件,包含了当前目录结构和一些的自定义信息,如背景和图标位置等
在windows下类似的文件为desktop.ini
暴露了.DS_Store
文件也就相当于暴露了该目录下的所有内容。
利用方法
.DS_Store
的格式为二进制,内部数据结构为Proprietary格式,可以自行解析并递归下载所有文件
(2)web-INF泄露
web-INF目录包含了所有web应用会用到但是不处于web路径中的资源,web应用可以通过getResource
等API在servlet的上下文中访问到这些资源。
通常开发者会把许多JSP文件、Jar包、Java的类文件放在该目录下。
WEB-INF/web.xml : Web应用程序配置文件, 描述了servlet和其他的应用组件配置及命名规则.
WEB-INF/database.properties : 数据库配置文件
WEB-INF/classes/ : 一般用来存放Java类文件(.class)
WEB-INF/lib/ : 用来存放打包好的库(.jar)
WEB-INF/src/ : 用来放源代码(.asp和.php等)
利用方法
通过web.xml文件推测应用组件相关类的名字,然后在src目录下查找代码,如果没有源代码可以直接下载class文件反编译即可。
3、备份文件泄露
(1)网站根目录下的网站备份文件
.rar
.zip
.7z
.tar.gz
.bak
.txt
.old
.temp
tar -czvf bakup.tgz *
可被用户打包下载(常用文件名)+(常用压缩包后缀)
(2)编辑器修改文件的自动备份文件
SWP文件:.filename.swp
利用方法:直接访问.swp
文件,下载后删去.swp
获得源码文件
VIM缓存:index.php.swp
第一次产生的交换文件名为.filename.txt.swp
;再次意外退出后,将会产生名为.filename.txt.swo
的交换文件;第三次产生的交换文件.filename.txt.swn
4、配置文件泄露
可以通过网站框架文档获得重要配置文件路径
利用方法
识别网站指纹(框架类型)+重要配置文件测试(字典)
5、配置错误导致的泄露
(1)Windows IIS / Apache 目录穿越
程序在实现上没有充分过滤用户输入的../之类的目录跳转符,导致恶意用户可以访问web根目录的上级从而遍历服务器上的任意文件。
虽然web服务器本身会禁止访问web文件夹以外的地方,但如果开发引入的动态页面,又没有过滤好用户输入,就可能会出现穿越甚至目录遍历。甚至web服务器本身也曾经有类似的漏洞。
利用方法
(2)Nginx配置安全
标签:web,www,文件,--,com,敏感,泄露,example From: https://www.cnblogs.com/zeroEMC/p/16594577.html