常见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 checkout 和 svn up 更新服务器上的代码,使用svn export (导出)功能代替。
2、服务器软件(Nginx、Apache、Tomcat、IIS等)设置目录权限,禁止访问 .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目录,检查是否有相关的目录
相关文章:
常见Web应用源码泄露问题
文章目录 前言一、常见的源码泄露漏洞git源码泄露SVN源码泄露DS_Store文件泄漏网站备份压缩文件泄露WEB-INF/web.xml泄露CVS泄露.hg源码泄露Bazaar/bzr泄露.swp文件泄露 前言 在Web应用方面对于安全来说,可能大家对SQL注入、XSS跨站脚本攻击、文件上传等一些漏洞已…...
如何使用 Python+Flask+win32print 实现简易网络打印服务1
Python 实现网络打印机:Flask win32print 在工作场景中,我们可能需要一个简单的网页接口,供他人上传文档并自动打印到指定打印机。 本文将演示如何使用 Python Flask win32print 库来实现这一需求。 代码详见:https://github.…...
使用Modelsim手动仿真
FPGA设计流程 在设计输入之后,设计综合前进行 RTL 级仿真,称为综合前仿真,也称为前仿真或 功能仿真。前仿真也就是纯粹的功能仿真,主旨在于验证电路的功能是否符合设计要求,其特点是不考虑电路门延迟与线延迟。在完成一个设计的代码编写工作之后,可以直接对代码进行仿真,…...
DeepSeek、Grok与ChatGPT:AI三巨头的技术博弈与场景革命
## 引言:AI工具的三国杀时代 2025年的AI江湖,DeepSeek以黑马之姿横扫全球应用榜单,Grok 3凭借马斯克的狂言抢占头条,ChatGPT则稳坐行业王座。这场技术竞赛不仅是参数量的比拼,更是一场关于效率、成本与场景适配的终极…...
windows自动锁屏,并且要输入密码。如何取消?
Windows 电脑自动锁屏并需要输入密码,通常是因为系统的 电源和睡眠设置 或 组策略 设定了自动锁屏。你可以按照以下方法取消自动锁屏或去掉密码要求: 方法 1:修改 Windows 设置 取消锁屏时间 Win I 打开 设置,进入 系统 → 电源和…...
Redis 主从复制、哨兵与集群的关系及工作原理详解
一、核心概念与关系 Redis 的 主从复制、哨兵(Sentinel) 和 集群(Cluster) 是逐步演进的高可用与分布式解决方案,三者关系如下: 主从复制:数据冗余与读写分离的基础。 哨兵:在主从…...
XSD 对 XML 数据格式验证 java
xsd文件,文件名bean.xsd,放在当前java文件目录下 <?xml version"1.0" encoding"UTF-8"?> <xs:schema xmlns:xs"http://www.w3.org/2001/XMLSchema"><xs:element name"bean"><xs:comple…...
利用 ArcGIS Pro 快速统计省域各市道路长度的实操指南
在地理信息分析与处理的工作中,ArcGIS Pro 是一款功能强大的 GIS 软件,它能够帮助我们高效地完成各种复杂的空间数据分析任务。 现在,就让我们一起深入学习如何借助 ArcGIS Pro 来统计省下面各市的道路长度,这一技能在城市规划、…...
1.4 单元测试与热部署
本次实战实现Spring Boot的单元测试与热部署功能。单元测试方面,通过JUnit和Mockito等工具,结合SpringBootTest注解,可以模拟真实环境对应用组件进行独立测试,验证逻辑正确性,提升代码质量。具体演示了HelloWorld01和H…...
蓝桥杯备考:六级词汇积累(day5)
dense 稠密的 condense 压缩 compassion 同情,怜悯 compact 紧凑的,紧密的 resent 愤恨 sober 清醒的 sole 唯一的,独占的 solely only solemn 表情严肃的,庄重的 stun 使昏迷 Stunned by the impact, he lay on the ground won…...
掌握Kubernetes Network Policy,构建安全的容器网络
在 Kubernetes 集群中,默认情况下,所有 Pod 之间都是可以相互通信的,这在某些场景下可能会带来安全隐患。为了实现更精细的网络访问控制,Kubernetes 提供了 Network Policy 机制。Network Policy 允许我们定义一组规则,…...
结合rpart包的决策树介绍
决策树与CART算法 决策树是一种基于树状结构的监督学习算法。它通过从根节点开始递归地对特征进行划分,构建出一棵树来进行决策。决策树的构建过程需要解决的重要问题有三个:如何选择自变量、如何选择分割点、确定停止划分的条件。解决这些问题是希望随…...
VScode代码格式化插件black失效问题
之前有如下提示: 没太当回事,发现还能用。之后突然就用不了了,跟着官方插件的文档来查看log: 查看发现提示: Message: TypeError: type object is not subscriptable 在github界面找到解决方案:安装Versio…...
【经验分享】Ubuntu20.04编译RK3568 AI模型报错问题(已解决)
【经验分享】Ubuntu20.04编译RK3568 AI模型报错问题(已解决) 前言问题现象问题分析解决方案总结 前言 这里使用的是Rockchip提供的rknn_model_zoo,https://github.com/airockchip/rknn_model_zoo/tree/main 此解决方案适用于Rockchip芯片在U…...
AI革命先锋:DeepSeek与蓝耘通义万相2.1的无缝融合引领行业智能化变革
云边有个稻草人-CSDN博客 目录 引言 一、什么是DeepSeek? 1.1 DeepSeek平台概述 1.2 DeepSeek的核心功能与技术 二、蓝耘通义万相2.1概述 2.1 蓝耘科技简介 2.2 蓝耘通义万相2.1的功能与优势 1. 全链条智能化解决方案 2. 强大的数据处理能力 3. 高效的模型…...
基于SpringBoot实现旅游酒店平台功能一
一、前言介绍: 1.1 项目摘要 随着社会的快速发展和人民生活水平的不断提高,旅游已经成为人们休闲娱乐的重要方式之一。人们越来越注重生活的品质和精神文化的追求,旅游需求呈现出爆发式增长。这种增长不仅体现在旅游人数的增加上࿰…...
轻松上手 —— 通过 RPM 包快速部署 NebulaGraph
前言 在当今大数据时代,处理复杂关系数据的需求与日俱增,图数据库应运而生并逐渐崭露头角。NebulaGraph 作为一款高性能、分布式且易扩展的图数据库,专为应对大规模图数据处理而精心打造。它不仅具备丰富的查询语言,还拥有强大高效…...
每日一题——接雨水
接雨水问题详解 视频学习推荐 建议先参考以下视频进行学习: 问题描述 给定一个非负整数数组 height,表示每个宽度为 1 的柱子的高度图。计算按此排列的柱子,下雨之后能接多少雨水。 示例 示例 1: 输入:height …...
MetaGPT发布的MGX与Devin深度对比
家人们,搞编程的都知道,工具选对了,效率能翻倍!今天必须给大伙唠唠MetaGPT发布的MGX编程助手和Devin编程助手 。 先看MGX,简直是编程界的王炸!它就像一个超神的虚拟开发团队,一堆智能助手分工明…...
网络安全技术整体架构 一个中心三重防护
网络安全技术整体架构:一个中心三重防护 在信息技术飞速发展的今天,网络安全的重要性日益凸显。为了保护信息系统不受各种安全威胁的侵害,网络安全技术整体架构应运而生。本文将详细介绍“一个中心三重防护”的概念,并结合代码示…...
03.06 QT
一、使用QSlider设计一个进度条,并让其通过线程自己动起来 程序代码: <1> Widget.h: #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QThread> #include "mythread.h"QT_BEGIN_NAMESPACE namespace Ui {…...
【YOLOv12改进trick】多尺度大核注意力机制MLKA模块引入YOLOv12,实现多尺度目标检测涨点,含创新点Python代码,方便发论文
🍋改进模块🍋:多尺度大核注意力机制(MLKA) 🍋解决问题🍋:MLKA模块结合多尺度、门控机制和空间注意力,显著增强卷积网络的模型表示能力。 🍋改进优势🍋:超分辨的MLKA模块对小目标和模糊目标涨点很明显 🍋适用场景🍋:小目标检测、模糊目标检测等 🍋思路…...
SpringUI:打造高质量Web交互设计的首选元件库
SpringUI作为一个专为Web设计与开发领域打造的高质量交互元件库,确实为设计师和开发者提供了极大的便利。以下是对SpringUI及其提供的各类元件的详细解读和一些建议: SpringUI概述 SpringUI集合了一系列预制的、高质量的交互组件,旨在帮助设…...
鸿蒙Android4个脚有脚线
效果 min:number122max:number150Row(){Stack(){// 底Text().border({width:2,color:$r(app.color.yellow)}).height(this.max).aspectRatio(1)// 长Text().backgroundColor($r(app.color.white)).height(this.max).width(this.min)// 宽Text().backgroundColor($r(app.color.w…...
夏门大学DeepSeek 手册:从社会大众到高校及企业的全面应用实践研究(附 PDF 下载)
这 3 份手册分别从 DeepSeek 大模型概念、技术与应用实践、DeepSeek 大模型赋能高校教学和科研、DeepSeek 大模型及其企业应用实践-企业人员的大模型宝典几个角度进行全面分析,可以结合着清华、北大系列相互对照着学习。 清华北大推出的 DeepSeek 教程(…...
嵌入式学习第二十三天--网络及TCP
进程通信的方式: 同一主机 传统 system V 不同主机 网络 --- 解决不同主机间 的进程间通信 网络 (通信) //1.物理层面 --- 联通(通路) //卫星 2G 3G 4G 5G 星链 (千帆) //2.逻辑层面 --- 通路(软件) MAC os LINUX …...
策略模式详解:实现灵活多样的支付方式
多支付方式的实现:策略模式详解 策略模式(Strategy Pattern)是一种行为设计模式,它定义了一系列算法,并将每个算法封装起来,使它们可以互换使用。策略模式使得算法可以独立于使用它的客户端变化。本文将通…...
【Java篇】算术如诗,逻辑似梦:Java 编程中的运算符探寻
文章目录 Java 运算符:在计算与逻辑之中追寻编程的哲理1.前言2. 算术运算符2.1 基本四则运算符:加减乘除( - * / %)2.2 除法与取余2.3 增量运算符( --)2.4 自增/自减运算符 3. 关系运算符3.1 关系运算符 4.…...
Docker小游戏 | 使用Docker部署DOS游戏合集
Docker小游戏 | 使用Docker部署DOS游戏合集 前言项目介绍项目简介项目预览二、系统要求环境要求环境检查Docker版本检查检查操作系统版本三、部署dos-games网页小游戏下载镜像创建容器检查容器状态检查服务端口检查容器日志安全设置四、访问DOS游戏网页五、进阶玩法下载游戏拷贝…...
【大模型系列篇】国产开源大模型DeepSeek-V3技术报告解析
DeepSeek-V3技术报告 目录 DeepSeek-V3技术报告 1. 摘要 2. 引言 3. DeepSeek V3 架构 3.1 基础架构 3.1.1. 多头潜在注意力 3.1.2. DeepSeekMoE和无辅助损失的负载均衡 3.2 多令牌预测 4. 基础设施 4.1 计算集群 4.2 训练框架 4.2.1. DualPipe算法与计算通信协同优…...
