当前位置: 首页 > article >正文

常见Web应用源码泄露问题

文章目录

  • 前言
  • 一、常见的源码泄露漏洞
    • git源码泄露
    • SVN源码泄露
    • DS_Store文件泄漏
    • 网站备份压缩文件泄露
    • WEB-INF/web.xml泄露
    • CVS泄露
    • .hg源码泄露
    • Bazaar/bzr泄露
    • .swp文件泄露


前言

在Web应用方面对于安全来说,可能大家对SQL注入、XSS跨站脚本攻击、文件上传等一些漏洞已经耳熟于心了,这些漏洞可以对系统造成严重的安全风险,今天的所讲述的漏洞不亚于我们所提及到的 Owasp top 10,那就是系统源码泄露,而且Web源码泄露在实际项目中并不少见,一些大的厂商有可能也存在这类安全问题。


一、常见的源码泄露漏洞

下图中把常见的源码泄露问题进行列举整理
在这里插入图片描述

git源码泄露

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

在这里插入图片描述

  • HEAD 这个git项目当前处在哪个分支里
  • config 文件包含项目特有的配置选项,git config 命令会改动它
  • description 项目的描述信息
  • hooks/ 系统默认钩子脚本目录
  • info/ 目录包含一个全局性排除(global exclude)文件,用以放置不希望被记录在 .gitignore文件中的忽略模式(ignored patterns)
  • objects/ 目录存储所有数据内容(commits,trees,blobs,tags)
  • refs/ 标识你项目里的每个分支指向了哪个提交(commit)
  • index 文件保存暂存区信息

漏洞利用

利用工具 Githack

下载地址:https://github.com/lijiejie/GitHack

使用方式 python GitHack.py http://www.example.com/.git/
在这里插入图片描述
修复建议

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

SVN源码泄露

漏洞成因

SVN是源代码本地管理软件。使用SVN管理本地代码过程中,会生成一个名为 .svn的隐藏文件夹,其中包含重要的源码信息,而造成 .svn文件泄露的主要原因还是网站管理员在发布代码时,没有使用导出功能,而直接进行复制粘贴。这就使 .svn隐藏文件夹被暴露于外网环境,可以利用 .svn/entries 文件,获取到服务器源码。

漏洞利用

利用工具 svnExploit
下载地址:https://github.com/admintony/svnExploit

使用方式

安装依赖库
sudo pip install -r requirements.txt
查看帮助
python SvnExploit.py -h
检测SVN源代码泄露
python SvnExploit.py -u http://192.168.27.128/.svn
下载源代码
python SvnExploit.py -u http://192.168.27.128/.svn --dump

修复建议

1、不要使用 svn checkoutsvn up 更新服务器上的代码,使用svn export (导出)功能代替。
2、服务器软件(NginxApacheTomcatIIS等)设置目录权限,禁止访问 .svn.git目录

DS_Store文件泄漏

漏洞成因

.DS_Store 是Mac OS保存文件夹的自定义属性的隐藏文件,如文件的图标位置或背景色,相当于Windows 的 desktop.ini。由于开发人员发布代码时未删除文件夹中隐藏的 .DS_Store,可能造成文件目录结构泄漏,源代码文件等敏感信息的泄露。

漏洞利用

利用工具:ds_store_exp

下载地址:https://github.com/lijiejie/ds_store_exp

使用方式

python3 ds_store_exp.py http://27.0.0.1/.DS_Store

在这里插入图片描述
修复建议

不影响应用运行的情况下删除 .DS_Store 文件

网站备份压缩文件泄露

漏洞成因

在网站正常使用中,往往需要经过修改和升级,这时就需要对网站或对某处数据进行备份。而备份文件会因为各种原因保存在网站Web目录下,而当对此目录没有访问权限限制时,就很可能会导致备份或缓存文件被下载下来。
该漏洞往往会导致服务器整站源代码或者部分页面的源代码被下载,利用。源代码中所包含的各类敏感信息,如服务器数据库连接信息,服务器配置信息等会因此而泄露,造成巨大损失。

常见备份文件后缀名

  • .rar
  • .zip
  • .7z
  • .tar
  • .gz
  • .bak
  • .swp
  • .txt
  • .html

常见的网站源码备份文件名

  • web
  • website
  • backup
  • back
  • www
  • wwwroot
  • temp

漏洞利用

像备份压缩文件泄露,可以直接用专门的目录扫描工具进行敏感文件扫描

利用工具:御剑、dirseach.py、gobuster 等

修复建议

1、做好目录访问限制
2、在不影响运行的情况下,及时删除备份文件

WEB-INF/web.xml泄露

漏洞成因

WEB-INF是Java的WEB应用的安全目录,该目录原则上来说是客户端无法访问,只有服务端才可以访问。如果想在页面中直接访问其中的文件,必须通过 web.xml 文件对要访问的文件进行相应映射才能访问。

WEB-INF主要包含以下文件或目录:

/WEB-INF/web.xml:Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则
/WEB-INF/classes/:含了站点所有用的 class 文件,包括 servlet class 和非servlet class,他们不能包含在 .jar文件中
/WEB-INF/lib/:存放web应用需要的各种JAR文件,放置仅在这个应用中要求使用的jar文件,如数据库驱动jar文件
/WEB-INF/src/:源码目录,按照包名结构放置各个java文件。
/WEB-INF/database.properties:数据库配置文件

WEB-INF/web.xml泄露的起因就是我们在使用网络架构的时候,对静态资源的目录或文件的映射配置不当,可能会引发一些的安全问题,导致web.xml等文件能够被读取。

漏洞利用

扫描后台有没有WEB-INF/web.xml,然后直接访问 通过找到web.xml文件,分析可用敏感信息,推断class文件的路径,直接class文件,最后再通过反编译class文件,得到网站源码。

修复建议

合理配置,控制目录访问权限

CVS泄露

漏洞成因

cvs项目在初始化(cvs checkout project)的时候,会在project目录下创建一个名为CVS的目录,其中保存了各个文件的修改和commit记录,通过此目录可以获取代码的历史版本,其中两个关键文件为:CVS/Root和CVS/Entries,分别记录了项目的根信息和所有文件的结构

漏洞利用

主要是针对CVS/Root以及CVS/Entries目录,直接就可以看到泄露的信息。

利用工具:dvcs-ripper

下载地址:https://github.com/kost/dvcs-ripper

使用方式

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

修复方式

删除CVS的CVS目录

.hg源码泄露

漏洞成因

Mercurial是一种轻量级分布式版本控制系统,使用 hg init 新建仓库的时候,会生成一个备份文件 .hg

利用方式

利用工具:dvcs-rippergithub
下载地址:https://github.com/kost/dvcs-ripper
Example run (for hg):

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

It will automatically do hg revert
or if you would like to ignore SSL certification verification (with -s):

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

修复建议

删除Web目录中所有 .hg 隐藏文件夹

Bazaar/bzr泄露

漏洞成因

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

利用方式

利用工具:dvcs-rippergithub
下载地址:https://github.com/kost/dvcs-ripper

Example run (for bzr):

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

It will automatically do bzr revertor if you would like to ignore SSL certification verification (with -s):

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

修复建议

删除web目录中所有.bzr隐藏文件夹

.swp文件泄露

漏洞成因

swp即swap文件,在编辑文件时产生的临时文件,它是隐藏文件,如果程序正常退出,临时文件自动删除,如果意外退出就会保留,文件名为 .filename.swp

漏洞利用

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

修复建议

删除web目录中所有.swp隐藏文件夹

防范措施

源码泄露的危害是巨大的,因此在企业内要根据实际情况选择恰当的方式去发现以及杜绝此类风险。

1) nginx上配置拒绝对对相应目录的访问
2)上线时检测是否存在相应的目录,防止带有.git的目录上线
3)线上定期巡检web目录,检查是否有相关的目录


http://www.kler.cn/a/576340.html

相关文章:

  • 揭开Android View的神秘面纱:深入探索工作原理
  • Go语言集成DeepSeek API和GoFly框架文本编辑器实现流式输出和对话(GoFly快速开发框架)
  • vue的el-form-item循环检验rules
  • AWS DynamoDB深度解析:高并发场景下的NoSQL数据库设计与优化实践
  • 重学 Android 自定义 View 系列(十一):文字跑马灯剖析
  • GStreamer —— 2.2、Windows下Qt加载GStreamer库后运行 - “教程2:GStreamer 概念“(附:完整源码)
  • Swift系列02-Swift 数据类型系统与内存模型
  • 智慧风电赋能绿色能源的新篇章
  • IDEA Generate POJOs.groovy 踩坑小计 | 生成实体 |groovy报错
  • WPF在特定领域的应用:打造一款专业的图像编辑工具
  • Maven 使用指南:基础 + 进阶 + 高级用法
  • 【JavaWeb】Web基础概念
  • 嵌入式中Type-C 与快充相关知识详解
  • let、const和var的区别是什么?
  • Unity自定义区域UI滑动事件
  • 【第19节】C++设计模式(行为模式)-Command(命令)模式
  • ECharts中yAxisIndex的作用
  • Java面试第十山!《Mybatis框架》
  • 鸿蒙应用开发深度解析:API 14核心特性与实战指南
  • 低空经济快速发展,无人机人才培养及校企实验室共建技术详解