【WEB安全】web源码泄露漏洞

news/2024/12/22 0:43:32/文章来源:https://www.cnblogs.com/o-O-oO/p/18621595

前言

在Web安全之中,可能大家对SQL注入、XSS跨站脚本攻击、文件上传一些漏洞已经耳熟于心了,这些漏洞可以对系统造成严重的风险,今天来看一个造成的风险完全不低于上述的漏洞,那就是源码泄露,而且web源码泄露在实际中并不少见,一些大的厂商也有可能存在这种风险。

常见的源码泄露漏洞

下面是一些常见的源码泄露漏洞

一、git源码泄露

1.1 漏洞成因

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

1.2 git目录结构

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

1.3 漏洞利用

利用工具:GitHack

github地址:

https://github.com/lijiejie/GitHack

1.4 使用方式

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

1.5 修复建议

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

二、SVN源码泄露

2.1 漏洞成因

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

2.2 漏洞利用

利用工具:svnExploit
github地址:

https://github.com/admintony/svnExploit

2.3 使用方式

#安装依赖库
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

2.4 修复建议

不要使用svn checkout和svn up更新服务器上的代码,使用svn export(导出)功能代替。

服务器软件(Nginx、apache、tomcat、IIS等)设置目录权限,禁止访问.svn和.git目录

三、DS_Store 文件泄露

3.1 漏洞成因

.DS_Store是Mac OS保存文件夹的自定义属性的隐藏文件,如文件的图标位置或背景色,相当于Windows的desktop.ini。

由于开发人员发布代码时未删除文件夹中隐藏的.DS_store,可能造成文件目录结构泄漏、源代码文件等敏感信息的泄露。

3.2 漏洞利用

利用工具:ds_store_exp

github地址:

https://github.com/lijiejie/ds_store_exp

3.3 使用方式

ds_store_exp.py http://hd.zj.qq.com/themes/galaxyw/.DS_Storehd.zj.qq.com/
└── themes└── galaxyw├── app│   └── css│       └── style.min.css├── cityData.min.js├── images│   └── img│       ├── bg-hd.png│       ├── bg-item-activity.png│       ├── bg-masker-pop.png│       ├── btn-bm.png│       ├── btn-login-qq.png│       ├── btn-login-wx.png│       ├── ico-add-pic.png│       ├── ico-address.png│       ├── ico-bm.png│       ├── ico-duration-time.png│       ├── ico-pop-close.png│       ├── ico-right-top-delete.png│       ├── page-login-hd.png│       ├── pic-masker.png│       └── ticket-selected.png└── member├── assets│   ├── css│   │   ├── ace-reset.css│   │   └── antd.css│   └── lib│       ├── cityData.min.js│       └── ueditor│           ├── index.html│           ├── lang│           │   └── zh-cn│           │       ├── images│           │       │   ├── copy.png│           │       │   ├── localimage.png│           │       │   ├── music.png│           │       │   └── upload.png│           │       └── zh-cn.js│           ├── php│           │   ├── action_crawler.php│           │   ├── action_list.php│           │   ├── action_upload.php│           │   ├── config.json│           │   ├── controller.php│           │   └── Uploader.class.php│           ├── ueditor.all.js│           ├── ueditor.all.min.js│           ├── ueditor.config.js│           ├── ueditor.parse.js│           └── ueditor.parse.min.js└── static├── css│   └── page.css├── img│   ├── bg-table-title.png│   ├── bg-tab-say.png│   ├── ico-black-disabled.png│   ├── ico-black-enabled.png│   ├── ico-coorption-person.png│   ├── ico-miss-person.png│   ├── ico-mr-person.png│   ├── ico-white-disabled.png│   └── ico-white-enabled.png└── scripts├── js└── lib└── jquery.min.js21 directories, 48 files

3.4 修复建议

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

四、网站备份压缩文件泄露

4.1 漏洞成因

在网站正常使用中,往往需要经过修改和升级,这时就需要对网站或对某处数据进行备份。而备份文件会因为各种原因保存在网站web目录下,而当对此目录没有访问权限限制时,就很可能会导致备份或缓存文件被下载下来。

该漏洞往往会导致服务器整站源代码或者部分页面的源代码被下载,利用。源代码中所包含的各类敏感信息,如服务器数据库连接信息,服务器配置信息等会因此而泄露,造成巨大的损失

常见备份文件后缀

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

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

web
website
backup
back
www
wwwroot
temp

4.2 漏洞利用

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

利用工具:御剑disearch.py

4.3 修复建议

做好目录访问限制

在不影响运行的情况下,及时删除备份文件

五、WEB-INF/web.xml泄露

5.1 漏洞成因

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等文件能够被读取。

5.2 漏洞利用

扫描后台有没有WEB-INF/web.xml,然后直接访问

通过找到web.xml文件,分析可用敏感信息,推断class文件的路径,直接class文件,最后再通过反编译class文件,得到网站源码。

5.3 修复建议

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

六、CVS泄漏

6.1 漏洞成因

cvs项目在初始化(cvs checkout project)的时候, 会在project目录下创建一个名为CVS的目录,

其中保存了各个文件的修改和commit记录. 通过此目录可以获取代码的历史版本. 其中两个关键文件为:

CVS/Root和CVS/Entries, 分别记录了项目的根信息和所有文件的结构

6.2 漏洞利用

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

工具:dvcs-ripper
github地址:

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

6.3 工具使用

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

6.4 修复建议

删除CVS的CVS目录

七、.hg源码泄露

7.1 漏洞成因

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

7.2 利用方式

工具:dvcs-ripper
github地址:

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 <file>
or if you would like to ignore SSL certification verification (with -s):
rip-hg.pl -s -v -u http://www.example.com/.hg/

7.3 修复建议

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

八、Bazaar/bzr泄露

8.1 漏洞成因

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

8.2 利用方式

工具:dvcs-ripper

github地址:

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 revert
or if you would like to ignore SSL certification verification (with -s):
rip-bzr.pl -s -v -u http://www.example.com/.bzr/

8.3 修复建议

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

九、.swp文件泄露

9.1 漏洞成因

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

9.2 漏洞利用

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

9.3 修复建议

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

9.4 防范措施

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

1)nginx上配置拒绝对对相应目录的访问

2)上线时检测是否存在相应的目录,防止带有.git的目录上线

3)线上定期巡检web目录,检查是否有相关的目录

参考🔗

https://www.freebuf.com/articles/web/346607.html
https://cloud.tencent.com/developer/article/2127503

原创 信安路漫漫

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/856620.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL分页性能思考

MySQL分页性能思考 关键词:深度分页背景 最近有一个需求:在后台管理页面中,需要展示产品信息的列表。 之前版本开发中产品信息是用户填写完所有字段之后能进行保存。在之前的基础上需要支持用户不完全填写字段进行展示和保存的功能。 一个很简单的想法是为空也直接保存就可以…

【apache漏洞】 flink web漏洞复现

#CVE-2020-17519 #CVE-2020-17518 flink简介 Apache Flink 是高效和分布式的通用数据处理平台,由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎(简单来说,就是跟spark类似)。Flink 具有监控 API,可用于查询"正在运行的jobs…

ORM框架与数据库交互

title: ORM框架与数据库交互 date: 2024/12/22 updated: 2024/12/22 author: cmdragon excerpt: 对象关系映射(Object-Relational Mapping,ORM)框架是简化数据库与编程语言之间交互的强大工具。通过使用ORM,开发者可以避免直接编写SQL代码,便捷地执行CRUD操作,从而提高…

实验6 模板类,文件I/O和异常处理

一、实验目的练习编写模板函数,模板类,从多态角度理解模板函数和模板类(类型作为参数) 体验标准I/O流类,文件I/O流类,字符串I/O流类的用法,能正确使用 针对问题场景,使用流类库对I/O数据进行格式化和读写操作 体验异常处理的基础用法,能解释异常处理的机制和流程 训练…

【IM专题】服务治理,是在谈什么?

先说交通治理。 没有交通治理,会是怎样的场景?见下图。交通没有治理,车流效率会大大降低,尤其是在十字路口这种有资源竞争的路段,交通很容易陷入瘫痪。 如果引入交通治理,会是怎样的场景?见下图。交通治理,通过使用信号灯或是建造立交桥,在即使有资源冲突的路口段,通…

[题解]AtCoder Beginner Contest 385(ABC385) A~F

A - Equally 显然分组情况一定是\(1+1+1\)或\(1+2\),直接判定即可。点击查看代码 #include<bits/stdc++.h> using namespace std; int a,b,c; signed main(){cin>>a>>b>>c;if((a+b==c)||(a+c==b)||(b+c==a)||(a==b&&b==c)) cout<<"…

【AI+模型】RAG 架构图解:从基础到高级的7种模式

RAG 技术通过在 AI 生成过程中引入外部知识检索,从基础的文档查询发展到多模态、Multi-Agent 体协同的智能架构,让 AI 回答更准确、更全面。 核心组件 嵌入模型: 将文本转换为向量表示 生成模型: 负责最终的内容生成 重排序模型: 优化检索结果的相关性 向量数据库:…

浅聊web前端性能测试

最近正好在做web前端的性能测试,这次就来聊聊关于这个的测试思路~最近正好在做web前端的性能测试,这次就来聊聊关于这个的测试思路~ 首先从用户的思维去思考,关于web前端性能,用户最看重的是什么...... 其实就是下面三个点:1. 加载性能(即页面加载时间+资源加载时间)2. …

使用magic-api实现增删改查分页

创建项目结构 pom.xml<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apach…

【安全评审】“2024网络安全100强-行业应用”评分全流程细则

一 指标理解1.1 “行业应用”的核心优势是什么?1.2 评估维度有哪些?二、评审专家筛选2.1 对专家所在单位有什么要求?2.2 对专家所在行业有什么要求?2.3 对专家个人能力有什么要求?2.4 对专家组有什么要求?2.5 对专家个人价值观有什么要求?三、评分规则制定3.1 “典型案例…

《计算机组成及汇编语言原理》阅读笔记:p9-p27

《计算机组成及汇编语言原理》学习第 2 天,p9-p27 总结,总计 19 页。 一、技术总结 1.quantum physics(量子物理学) (1)quantum(量子) quantum的本意是:c. the smallest amount of sth(量子)。 In physics, a quantum is the minimum amount of any physical entity (physi…

第4章 C#的高级特性

第4章 C#的高级特性 4.1 委托 4.1.2 多播委托 对值为 null 的委托变量进行 + ​或 += ​操作,等价于为变量指定一个新值: SomeDelegate d = null; d += SomeMethod1; // 等价于 d = SomeMethod1委托是 不可变 的,因此调用 += ​和 -= ​的实质是 创建一个新的委托实例 ,…