有一个挖src的老套路:".git目录"信息泄漏 + 代码审计。
当网站可以访问".git/index"时,可以用GitHack — 一个git泄露利用脚本[1]工具还原整个项目工程。然后对源码做代码审计,尝试挖掘漏洞。
实际的案例可以见 百姓某处信息泄露可GET SHELL[2]
个人体会:对于企业内部业务的源码做代码审计来挖掘漏洞,难度比挖"成熟的框架、组件"容易太多了,都不需要攻击者掌握多少代码审计中的偏门技巧等。比如源码中非常可能就有api认证用的token,拿着token就能像也业务方一样调用api。
为啥会出现".git目录信息泄漏"?
根据个人有限的经验来看,很多公司都会建设devops平台,开发只需要在平台上提交上线单,就可以自动地拉取代码、编译构建、保存版本、发布部署。
在"拉取代码"这一环节,devops平台从内部git平台上获取源码,其中就包括".git目录"。
在php、python等非编译语言的项目构建过程中,非常有可能就是简单地将整个项目全部拷贝到"产出目录"中,此时".git目录"也会跟着被拷贝过去。
等到了"发布部署"环节,".git目录"自然就会出现在线上了。
利用".git目录信息泄漏"还原"项目工程"时遇到的问题
偶尔会遇到的一个问题是:不一定能访问".git/index"就一定能用工具还原出整个项目。
这个原因之前没有深究过,有可能是".git/objects"目录下的文件无法访问。
遇到这种情况时,还可以:
* .git/index中包含了所有的文件名,可以直接访问文件名对应的url。比如暴露出的js文件,可以直接下载后找api信息。
* .git/config中包含了配置信息
* 尝试手动下载 .git/objects 目录下的 "项目工程"文件
另外更常见的问题是会遇到防火墙。这个时候可以试试 .git/./index
、 .git///index
、/?/../.git/index
等
漏洞(包括类似"git目录"等信息泄漏)均已提交并修复,包括并不限于:
2021年了,感觉 ".git目录"这种信息泄漏少见了很多。
对于".git等文件信息泄漏"和"代码安全",这两类风险,在企业安全建设中是怎么防范的呢?
怎么减少".git等文件信息泄漏"安全风险?
其实不仅仅是 ".git/index",还包括".svn/entries"、"网站源码.tar.gz" 等文件都有可能暴露在公网给人下载,继而泄漏项目源码。
根据个人有限的经验来总结,有以下方式减少风险:
* 在devops平台做检查,比如"发布部署"前,检查当前产出目录下是否有敏感文件
* 在waf中添加规则,来防护"敏感文件泄漏"
* 周期性扫描
* 依赖开发的安全意识,在"编译构建"时将".git目录"等敏感文件删除
感觉资产覆盖到位,确实能消灭这种风险。
怎么减少"代码安全"安全风险?
根据个人有限的经验来总结,有以下方式减少风险:
* 建设白盒扫描,嵌入到devpops流程中
* 安全部门提供安全sdk、安全编码规范
* 其他不限于"代码安全"的应用安全产品,包括 rasp、黑盒扫描
* 依赖开发的安全意识和安全编码水平
* fuzz平台,类似[oss-fuzz](https://github.com/google/oss-fuzz "oss-fuzz")
个人感觉,由于 技术难度、有些场景安全技术无法解决、运营上要求非常低的误报 等原因,即使手段这么多,但是风险太难完全消除了。
".git"目录信息泄漏 + 人工代码审计 这个套路 现在感觉行不通。
另外有一个小问题:有师傅知道企业安全建设中怎么用威胁情报来拉黑ip的话,请公众号留言告诉我。