常见信息泄露漏洞总结

admin 2026-01-27 14:29:30 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文系统总结了常见信息泄露漏洞,分为源代码泄露(git、SVN、HG、CVS、Bazaar、备份文件、DS_Store、SWP、GitHub、js.map)、中间件泄露(Apache样例、IIS短文件名、phpinfo、WEB-INF)及不安全配置(配置文件泄露、目录穿越、Nginx配置错误、报错泄露)三大类。文章详细分析了各漏洞成因、利用工具与修复建议,为安全人员提供了实用的检测与防护指南,强调生产环境需删除版本控制文件、禁用调试页面、合理配置中间件。 综合评分: 78 文章分类: WEB安全,渗透测试,漏洞分析,安全建设,安全运营


cover_image

常见信息泄露漏洞总结

原创

火星来的小男孩 火星来的小男孩

篝火信安

2026年1月27日 10:15 北京

信息泄露是指网站错误配置或管理员疏忽,无意间向互联网访问者泄露网站敏感信息,包括的内容较为宽泛,这些信息往往能够给潜在攻击者的后续攻击提供便利。

本篇文章收集整理了常见的信息泄露漏洞,主要分为源代码信息泄露、中间件信息泄露和不安全的配置文件几个方面进行梳理,给各位师傅分享一下。

一、源代码信息泄露

(一)git源码泄露

1、漏洞产生

Git是一个开源的分布式版本控制系统,在执行git init初始化目录的时候,会在当前目录下自动创建一个.git目录,用来记录代码的变更记录等。发布代码的时候,如果没有把.git这个目录删除,就直接发布到了服务器上,攻击者就可以通过它来恢复源代码。

2、漏洞利用工具

GitHack(https://github.com/lijiejie/GitHack)

用法示例:

GitHack.py http://www.example.com/.git/

3、修复建议

删除.git目录或者修改中间件配置进行对.git隐藏文件夹的访问。

(二)SVN源码泄露

1、漏洞产生

SVN是一个开放源代码的版本控制系统。在使用SVN管理本地代码过程中,会自动生成一个名为.svn的隐藏文件夹,其中包含重要的源代码信息。网站管理员在发布代码时,没有使用‘导出’功能,而是直接复制代码文件夹到WEB服务器上,这就使.svn隐藏文件夹被暴露于外网环境,可以利用.svn/entries文件,获取到服务器源码。

2、漏洞利用工具

svnExploit(https://github.com/admintony/svnExploit)

用法示例:

检测SVN源代码泄露

python SvnExploit.py -u http://192.168.1.12/.svn

下载源代码

python SvnExploit.py -u http://192.168.1.12/.svn –dump

3、修复建议

(1)删除web目录中所有.svn隐藏文件夹。

(2)开发人员在使用SVN时,严格使用导出功能,禁止直接复制代码。

(三)HG源码泄露

1、漏洞产生

Mercurial 是一种轻量级分布式版本控制系统,使用 hg init的时候会生成.hg。

2、漏洞利用工具

dvcs-ripper(https://github.com/kost/dvcs-ripper)

用法示例:

rip-hg.pl -v -u http://www.example.com/.hg/

3、修复建议

删除Web目录中遗留的.hg隐藏文件夹‌。

(四)CVS泄露

1、漏洞产生

CVS是一个C/S系统,多个开发人员通过一个中心版本控制系统来记录文件版本,从而达到保证文件同步的目的。主要是针对 CVS/Root以及CVS/Entries目录,直接就可以看到泄露的信息。

http://url/CVS/Root 返回根信息

http://url/CVS/Entries 返回所有文件的结构

2、漏洞利用工具

dvcs-ripper(https://github.com/kost/dvcs-ripper.git)

用法示例:

rip-cvs.pl -v -u http://www.example.com/CVS/

3、漏洞修复

删除CVS目录。

(五)Bazaar/bzr泄露

1、漏洞产生

bzr也是个版本控制工具, 虽然不是很热门, 但它也是多平台支持, 并且有不错的图形界面。

2、漏洞利用工具

dvcs-ripper(https://github.com/kost/dvcs-ripper.git)

用法示例:

rip-bzr.pl -v -u http://www.example.com/.bzr/

3、修复建议

删除.bzr目录或者修改中间件配置进行对.bzr隐藏文件夹的访问。

(六)网站备份文件泄露

1、漏洞产生

管理员将网站源代码备份在Web目录下,攻击者通过猜解文件路径,下载备份文件,导致源代码泄露。

2、漏洞利用工具

dirsearch(https://github.com/maurosoria/dirsearch)

常见的备份文件后缀:.rar,.zip,.7z,.tar.gz,.bak,.txt,.old。

3、漏洞修复

做好版本管理,并利用版本管理工具过滤掉这些类型的文件,同时不要直接在生产环境中修改或者添加文件。

(七)DS_Store 文件泄露

1、漏洞产生

.DS_Store是Mac下Finder用来保存如何展示 文件/文件夹 的数据文件,每个文件夹下对应一个。如果将.DS_Store上传部署到服务器,可能造成文件目录结构泄漏,特别是备份文件、源代码文件。

2、漏洞利用工具

.DS_Store的格式为二进制,内部数据结构为Proprietary格式,可以自行解析并递归下载所有文件。

ds_store_exp(https://github.com/lijiejie/ds_store_exp)

用法示例:

ds_store_exp.py http://www.example.com/.DS_Store

3、修复建议

(1)立即删除已泄露的.DS_Store文件

(2)把.DS_Store加入忽略列表中(如.gitignore)

(3)防止.DS_Store文件在共享目录中自动生成

(八)SWP 文件泄露

1、漏洞产生

vim会自动生成的备份文件以及临时文件,swp即swap文件,在编辑文件时产生的临时文件,它是隐藏文件,如果程序正常退出,临时文件自动删除,如果意外退出就会保留,文件名为 .filename.<后缀名>.swp,如(第一次产生的交换文件名为“.filename.txt.swp”;再次意外退出后,将会产生名为.filename.txt.swo的交换文件;而第三次产生的交换文件则为.filename.txt.swn)。

2、漏洞利用

直接访问.swp文件,下载回来后删掉末尾的.swp,获得源码文件。

3、修复建议

删除.swp后缀的临时文件。

(九)GitHub源码泄漏

1、漏洞产生

GitHub是一个面向开源及私有软件项目的托管平台。很多人喜欢把自己的代码上传到平台托管,通过关键词进行搜索,可以找到关于目标站点的敏感信息,甚至可以下载网站源码。类似的代码托管平台还有很多,该类型问题具有通用性。

2、漏洞利用

(1)直接搜索敏感关键词

在GitHub的搜索栏中输入可能泄露敏感信息的关键词,例如“password”、“secret key”、“API key”等,可以帮助快速定位包含敏感信息的代码库。

https://github.com/[email protected]&type=code

(2)高级搜索选项

GitHub提供了高级搜索功能,允许用户通过特定的语法来缩小搜索范围。例如,使用filename:config.js可以搜索所有名为“config.js”的文件,这些文件可能包含敏感的配置信息。同样,extension:sql可以用来搜索所有扩展名为“.sql”的文件,这些文件可能包含数据库的连接字符串等信息。

(3)搜索私有仓库

通过添加is:private参数,用户可以搜索私有仓库中的敏感信息。这需要用户具有相应的访问权限。

(4)精确搜索

使用双引号可以进行精确匹配搜索,例如”password”将只匹配包含“password”这个确切单词的文件。

3、修复建议

(1)通过代码平台监控工具(如https://github.com/VKSRC/Github-Monitor)定期对企业相关关键字进行检索。

(2)及时修改泄露信息所影响的系统,账户,应用程序等。

(十).js.map泄露

1、漏洞产生

在Vue项目中使用Webpack时,如果未正确配置,会生成一个.map文件,它包含了原始JavaScript代码的映射信息。这个.map文件可以被工具用来还原Vue应用的源代码,从而可能导致敏感信息的泄露等风险。

2、漏洞利用

右键查看源代码,检索js,在后面添加.map。

curl -O http://xx.xx.xx.xx/*.js.map

下载js.map文件,使用reverse-sourcemap进行还原

npm install –global reverse-sourcemap

reverse-sourcemap –output-dir 生成的目录 app.6804b239.js.map

可寻找各种未授权的接口进行进一步的利用,可检索upload、add等关键字。

3、修复建议

禁用生成源映射文件:在生产环境中,应该禁用生成.map文件或者配置Webpack不生成这些文件。这可以通过在Webpack配置中设置devtool选项为false或者none来实现。

二、中间件信息泄露

(一)Apache样例页面泄露

1、漏洞产生

Apache Tomcat默认安装包含”/examples”目录,里面存着众多的样例,其中session样例(/examples/servlets/servlet/SessionExample)允许用户对session进行操纵。因为session是全局通用的,所以用户可以通过操纵session获取管理员权限。

2、漏洞利用

常见的路径有:

  • /examples/servlets/servlet/CookieExample
  • /examples/servlets/servlet/RequestHeadersExample
  • /examples/jsp/snp/snoop.jsp
  • /examples/async/async1

3、修复建议

将默认WEB根目录下的examples和tomcat-docs目录及其及下的所有文件都删除,以避免造成不必要的信息泄露或其他漏洞。

(二)IIS短文件名泄露

1、漏洞产生

为了兼容16位MS-DOS程序,Windows为文件名较长的文件(和文件夹)生成了对应的windows 8.3 短文件名。

我们可以在启用.net的IIS下暴力列举短文件名,原因是:

(1)访问构造的某个存在的短文件名,会返回404;

(2)访问构造的某个不存在的短文件名,会返回400。

漏洞的意义:

(1)猜解后台地址

(2)猜解敏感文件,例如备份的rar、zip、.bak、.SQL文件等。

(3)在某些情形下,甚至可以通过短文件名web直接下载对应的文件。比如下载备份SQL文件。

2、漏洞利用工具

https://github.com/lijiejie/IIS_shortname_Scanner

用法示例:

python iis_shortname_Scan.py http://www.example.com

3、修复建议

CMD关闭NTFS 8.3文件格式的支持(1代表关闭,0代表开启)

(1)Windows Server 2008 R2:

查询是否开启短文件名功能:fsutil 8dot3name query

关闭该功能:fsutil 8dot3name set 1

(2)Windows Server 2003:

关闭该功能:fsutil behavior set disable8dot3 1

不同系统关闭命令稍有区别,该功能默认是开启的,对于大多数用户来说无需开启。

(3)修改注册表禁用短文件名功能

将HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem,将其中的 NtfsDisable8dot3NameCreation这一项的值设为 1。

修改完成后,需要重启系统生效。

注:此方法只能禁止NTFS8.3格式文件名创建,已经存在的文件的短文件名无法移除,需要重新复制才会消失。

(三)phpinfo页面

1、漏洞产生

有些网站可能未关闭调试功能,存在调试页面,比如phpinfo页面能被外部用户访问。

2、漏洞危害

可能会造成的危害有:

  • 泄露网站真实ip
  • 网站绝对路径泄漏或日志文件路径泄露,可以写入shell
  • 泄露一些特殊的应用信息和服务
  • 一些敏感配置,比如禁用的函数
  • php版本信息

3、修复建议

(1)通过修改服务器环境内php.ini文件,将“expose_php = On”修改成“expose_php = Off”然后重启php即可。

(2)如果确实需要该测试信息,在测试时使用,测试完毕后将该文件删除掉。

(四)WEB-INF/web.xml泄露

1、漏洞产生

(1)在Java的Servlet文档中,说到WEB-INF目录“包含了所有web应用会用到但是不处于web路径中的资源”,也就是说,WEB-INF目录下的内容是不属于公开页面的。web应用可以通过getResource等API在servlet的上下文中访问到这些资源。

(2)通常开发者会把许多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等)

2、漏洞利用

通过web.xml文件推测应用组件相关类的名字,然后在src目录下查找代码,如果没有源代码可以直接下载class文件反编译即可。

3、漏洞修复

发布前确认WEB-INF目录是禁止访问的, 或者在server设置好对于的过滤规则。

三、不安全的配置文件

(一)配置文件泄露

1、漏洞产生

现代WEB开发往往不会重新造轮子,而是基于成熟的框架进行配置,如果渗透测试人员知道该网站是基于什么类型的框架,就可能通过该框架的文档获得重要配置文件的路径,如果是开源框架,同时也能获得源代码,因此配置文件泄露的严重性也是不言而喻的。

2、漏洞利用

通过识别网站指纹得知其框架类型,然后手工测试重要的配置文件是否可以获取。如果是批量测试,则可以事先准备好常见的配置文件路径,如wordpress的/wp-config.php等,组织成字典然后用脚本进行批量测试。

3、漏洞修复

修改配置文件的默认路径,同时在服务器端限制对这些路径的访问。

(二)配置错误导致的泄露

1、Windows IIS/Apache 目录穿越

漏洞原理:目录穿越漏洞原理比较简单,程序在实现上没有充分过滤用户输入的../之类的目录跳转符,导致恶意用户可以访问web根目录的上级从而遍历服务器上的任意文件。

虽然web服务器本身会禁止访问web文件夹以外的地方,但如果开发引入的动态页面,又没有过滤好用户输入,就可能会出现穿越甚至目录遍历。甚至web服务器本身也曾经有类似的漏洞,比如Apache Tomcat的UTF-8解析漏洞等。

2、Nginx配置安全

漏洞原理:Nginx的配置选项之多,并不是所有人都能熟悉,但不表示随便百度一下复制粘贴就配置了,最好还是先看下官方文档对应选项的作用和用法,可以避免许多致命的错误。

例如Nginx在代理静态文件时,如果不小心在配置文件中写错了一个字符:location /static {alias /home/web/static/;},就会导致访问http://example.com/static../时可以访问上级目录,从而访问到敏感的信息。

3、触发网站报错泄露

(1)字段加[]造成信息泄露

数据包的所有参数都可能存在,把参数变为数组即可报错出网站绝对路径。

(2)修改请求方法

将get方法改为put 程序就报错,泄漏网站绝对路径。

修复建议:

(1)屏蔽报错的敏感信息,避免网站敏感内容回显,页面仅显示少量辅助定位信息。

(2)触发报错后,跳转到统一的错误页面。

如果您觉得内容还不错的话,请关注我吧!

建议把公众号“篝火信安”设为星标,否则可能就看不到啦!因为公众号现在只对常读和星标的公众号才能展示大图推送。

操作方法:点击公众号页面右上角的【…】,然后点击【设为星标】即可。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:篝火信安 火星来的小男孩 火星来的小男孩《常见信息泄露漏洞总结》

评论:0   参与:  0