Web应用程序的敏感信息-隐藏目录和文件
0x1、场景
Web应用程序根文件夹中可能存在大量隐藏信息:源代码版本系统文件夹和文件(.git,.gitignore,.svn),项目配置文件(.npmrc,package.json,.htaccess),自定义配置文件使用config.json,config.yml,config.xml等常见扩展以及许多其他扩展。
资源可以分为几个常见类别:
- 源代码版本控制系统
- IDE(集成开发环境)配置文件
- 项目和/或技术特定的配置和设置文件
1.1、GIT
Git是“(...)一个免费的开源分布式版本控制系统,新创建的Git存储库包含一些默认文件夹和文件,其中存储了所有信息。新创建的Git存储库包含一些默认文件夹和文件,其中存储了所有信息。
.git文件夹的基本结构
对象可以是以下三种类型之一:commit,tree和blob。
Commit是有关提交的信息,具有当前树(文件夹和文件结构)对象哈希。
tree包含有关文件夹和文件结构的信息 - 每个文件夹或文件都有自己的对象哈希存储在树对象中。
Blob是Git对象类型,保存文件内容。知道特定文件的对象哈希,则可以使用 git cat-file命令读取此文件的内容。
1.2、Subversion (SVN)
Subversion(或SVN)是由Apache Software Foundation创建的源代码版本控制系统,SVN文件夹和文件的示例结构如下所示:
.svn文件夹的基本结构
关键性的信息是SQLite数据库wc.db文件和pristine /目录的内容。在wc.db中存有pristine/*里相关文件名的哈希值。
http://server/path_to_vulnerable_site/.svn/wc.db
使用SQLite控制台客户端(或任何其他工具来管理SQLite数据库),阅读wc.db的内容
$ sqlite3 wc.db
SQLite版本3.8.10.2 2015-05-20 18:17:19
输入“.help”作为使用提示。
sqlite> .databases
seq名称文件
--- --------------- ------------------------- ---------------------------------
0 main /Users/bl4de/hacking/playground/wc.db
sqlite>。 dump
PRAGMA foreign_keys = OFF;
开始交易;
CREATE TABLE REPOSITORY(id INTEGER PRIMARY KEY AUTOINCREMENT,root TEXT UNIQUE NOT NULL,uuid TEXT NOT NULL);
插入“存储”值(1,'svn + ssh://192.168.1.4/var/svn-repos/project_wombat','88dcec91-39c3-4b86-8627-702dd82cfa09');
(......)
INSERT INTO“NODES”VALU