常见的Web源码泄漏漏洞

常见的Web源码泄漏漏洞

1.Git 源码泄露

​ 开发人员会使用 git 进行版本控制,对站点自动部署。但如果配置不当,可能会将 .git 文件夹直接部署到线上环境,这就引起了 git 泄露漏洞,我们可以利用这个漏洞直接获得网页源码

简要介绍git的目录结构
在一个目录中初始化一个仓库以后 , 会在这个目录下产生一个名叫 .git 的隐藏文件夹(版本库)这个文件夹里面保存了这个仓库的所有版本等一系列信息

一般来说 , 一个git仓库还存在这两个文件 :

  1. README.md (项目介绍)
  2. .gitignore (配置在git进行文件跟踪的时候忽略掉哪些文件 , 从这个文件一般也可以得到一部分网站的目录结构 , 或者一些日志/配置文件等敏感文件)

确定是否存在泄漏

dirsearch 工具扫描后台,如果存在则会扫描出 .git 目录

也可以直接通过网页访问 .git 目录,如果能访问就说明存在

漏洞利用

1.GitHack工具

​ 是一个.git泄露利用脚本,通过泄露的.git文件夹下的文件,还原重建工程源代码。渗透测试人员、攻击者,可以进一步审计代码,挖掘:文件上传,SQL注射等安全漏洞。

github项目地址:https://github.com/lijiejie/GitHack

命令:

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

2.爬虫爬取(推荐使用)

​ 这种方法和使用githack这个工具相比 , 有一个比较好的地方就是 , 可以完全模拟服务器上的代码环境 , 可以跟踪到git的每一次提交 , 但是githack好像只可以将源码恢复到最近的一次提交,这里的好处还有可以去查看git的提交日志 , 这个日志信息中会有开发人员对每一次commit的描述 , 比如某个BUG的修复等等。

具体利用思路 :

  1. 利用爬虫递归下载.git目录的所有文件
  2. 利用git命令对网站的commit历史进行查看
  3. 利用git命令对网站的源码进行恢复

命令:

wget -r -p -np -k http://www.xxx.com/.git/       (kail中使用)
获取源码
--recursive(递归)
-k,  --convert-links(转换链接)
-p,  --page-requisites(页面必需元素)
-np, --no-parent(不追溯至父级)
.git 文件可能被隐藏 可用 ls -a 查看

利用命令 : git log 查看网站的提交记录
利用命令 : git reset --hard [log hash]恢复到指定版本号 (一般如果只需要得到源码的话就恢复到最近的一次提交)

利用命令:git show 查看文件

漏洞修复:

1.对.git目录的访问权限进行控制
2.在每次pull到web目录下之后删除.git文件夹

2. hg源码泄漏

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

漏洞利用工具:dvcs-ripper

github项目地址:https://github.com/kost/dvcs-ripper

用法:

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

3. SVN 源码泄露

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

漏洞利用工具:Seay SVN漏洞利用工具,dvcs-ripper

用法:

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

修复建议:

删除web目录中所有.svn隐藏文件夹,开发人员在使用SVN时,严格使用导出功能,禁止直接复制代码

4. CVS泄露

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

http://url/CVS/Root 返回根信息
http://url/CVS/Entries 返回所有文件的结构

漏洞利用工具:dvcs-ripper

用法:

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

5、Bazaar/bzr泄露

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

用法:

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

6. WEB-INF/web.xml 泄露

​ WEB-INF是Java的WEB应用的安全目录,如果想在页面中直接访问其中的文件,必须通过web.xml文件对要访问的文件进行相应映射才能访问。

Tomcat的WEB-INF目录,每个j2ee的web应用部署文件默认包含这个目录。
Nginx在映射静态文件时,把WEB-INF目录映射进去,而又没有做Nginx的相关安全配置(或Nginx自身一些缺陷影响)。从而导致通过Nginx访问到Tomcat的WEB-INF目录(请注意这里,是通过Nginx,而不是Tomcat访问到的,因为上面已经说到,Tomcat是禁止访问这个目录的。)。

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

WEB-INF/web.xml : Web应用程序配置文件, 描述了servlet和其他的应用组件配置及命名规则.
WEB-INF/database.properties : 数据库配置文件
WEB-INF/classes/ : 一般用来存放Java类文件(.class)
WEB-INF/lib/ : 用来存放打包好的库(.jar)
WEB-INF/src/ : 用来放源代码(.asp和.php等)

直接在域名后面加上WEB-INF/web.xml

通过找到 web.xml 文件,推断 class 文件的路径,最后直接 class 文件,再通过反编译 class 文件,得到网站源码。

7.备份文件泄露

备份文件下载:

index.php.bak

多尝试下.bak文件路径,看有没有下载的

常见的网站源码备份文件后缀

tar
tar.gz
zip
rar

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

web
website
backup
back
www
wwwroot
temp

vim 交换文件名
在使用vim时会创建临时缓存文件,关闭vim时缓存文件则会被删除,当vim异常退出后,因为未处理缓存文件,导致可以通过缓存文件恢复原始文件内容
以 index.php 为例:第一次产生的交换文件名为 .index.php.swp
再次意外退出后,将会产生名为 .index.php.swo 的交换文件
第三次产生的交换文件则为 .index.php.swn

8. DS_Store 文件泄露

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

漏洞利用工具:

github项目地址:https://github.com/lijiejie/ds_store_exp

命令:

ds_store_exp.py http://hd.zj.qq.com/themes/galaxyw/.DS_Store

9. SWP 文件泄露

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

漏洞利用:直接访问.swp文件,下载回来后删掉末尾的.swp,获得源码文件

10. GitHub源码泄漏

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

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

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

相关文章

我是如何解决电脑连接WiFi提示无线适配器或访问点有问题

今天国庆后第一天上班,打开电脑一直连接不上我手机的热点,提示无线适配器或访问点有问题。可能是由于重启电脑自动更新系统的缘故,关闭电脑自动更新的办法请参考我的上一篇文章:window电脑关闭自动更新的方法 不说废话&#xff0…

WebCombo 客户端绑定数据

///绑定webcombo1 var cbo igcmbo_getComboById(<%this.WebCombo2.ClientID %>); for (var i 0; i <4; i) { var row igtbl_addNew(cbo.grid.Id, 0); row.getCell(0).setValue("0.91");…

java ee cdi_Java EE6 CDI,命名组件和限定符

java ee cdiJava EE6的最大承诺之一就是简化了依赖注入的使用。 他们做到了&#xff0c;使用CDI 。 CDI代表Java EE的上下文和依赖注入&#xff0c;它提供了一个基础集&#xff0c;用于在企业应用程序中应用依赖注入。 在CDI之前&#xff0c;EJB 3还引入了依赖注入&#xff0c;…

如何使用git下载别人在github的代码?

今天东哥让我帮他们公司检查一下几十款产品的前端代码&#xff0c;我用新电脑作业了一下&#xff0c;简单分享git如何下载别人的代码。 完整教程请参考我上篇文章&#xff1a;——> Git教程学习总结 首先本地有git环境。打开git bash here。 查看一下版本 初始化git使…

AppScan的安装与使用

AppScan的安装与使用 实验环境&#xff1a;Win7 Win2k8 将软件包复制到这个目录下&#xff1a; 双击 复制到C盘&#xff1a; 复制到C盘的这个目录下&#xff0c;并替换&#xff1a; 然后到菜单栏中&#xff0c;双击查看&#xff1a; 这样就可以使用了: 使用App…

CocoaPods 安装和使用

一、《什么是CocoaPods》 官网描述&#xff1a;CocoaPods is the dependency manager for Swift and Objective-C Cocoa projects. It has almost ten thousand libraries and can help you scale your projects elegantly.(CocoaPods是一个独立的管理器&#xff0c;可以为Swif…

cmd黑窗口命令行模式进入指定盘符下的任意文件夹

通过使用命令&#xff0c;并加入参数 /d &#xff0c;可以通过一个步骤&#xff0c;直接进入指定盘符下的任意文件夹 比如要进入C盘下的C:\Users\Pactera\Desktop\rtt_web目录&#xff0c;则输入cd /d C:\Users\Pactera\Desktop\rtt_web

接口测试工具 restlet client

参考&#xff1a; https://blog.csdn.net/sunrainamazing/article/details/81281382https://blog.csdn.net/zlp1992/article/details/76706017 文章目录 下载若 你能翻墙下载 可以去如下网址下载方式二 采用离线CRX的方式进行安装(我用的第二种方式) 安装其次 &#xff0c; 一…

attr()与setAttribute()的区别

先看红色标注的&#xff1a; 这里传过来的this是个元素节点&#xff0c;因此currentTr也得用获取节点的方式parentNode去获取&#xff0c;而不能写parent()&#xff0c;这是第一个需要注意的地方。 第二个问题&#xff0c;就是怎么给currentTr设置属性和值得问题。我一开始想当…

我是如何成功准备VUE项目之前的开发环境?

提前安装好node, 参考我上一篇文章--------> 不同node.js版本 1.从git上把代码拷贝下来。 git clone +项目地址。 2.cmd模式下安装npm。 npm install 3.启动服务,npm run serve 。这里需要注意的是serve千万不要打成server啦,不然容易报错,这里还有两个小技…

moxy json介绍_通过MOXy实现使您的JAXB更清洁

moxy json介绍编组和解组XML时使用JAXB的主要优点是编程模型。 只需注释几个POJO并使用JAXB API&#xff0c;您就可以很容易地序列化为XML和从XML反序列化。 您无需担心有关XML如何编组/解组的细节。 一切都比DOM和SAX等替代方案简单得多。 现在&#xff0c;XML文件中的数据本质…

Tomcat样列目录session 操控漏洞

一、基本情况 漏洞级别&#xff1a;中危 漏洞类别&#xff1a;session操纵漏洞 二、问题描述 ApacheTomcat默认安装页面中存在examples样例目录。里面存放着Servlets、JSP、WebSocket的一些服务脚本和接口等样例。Servletsexamples服务样例下存在一个session的样例。该样例可…

Failed to compile. ./src/utils/request.js Module not found: Error: Can‘t resolve ‘util-merge‘ in ‘C

在webstorm运行vue的一个项目&#xff0c;访问主页报错&#xff1a; Failed to compile. ./src/utils/request.js Module not found: Error: Cant resolve util-merge in C:\Users\Pactera\Desktop\rtt_web\src\utils 检查了一下代码是缺少util-merge插件。可以在编译器上进…

发布:NetBeans IDE 8.1 Beta

NetBeans IDE 8.1 Beta已发布。 NetBeans IDE在为Java开发人员提供完整而全面的工具方面拥有超过15年的丰富经验。 在过去的几年中&#xff0c;NetBeans IDE已为JavaScript开发人员实现了同样的目标。 特别是&#xff0c;NetBeans IDE 8.1引入了用于Node.js应用程序开发的完整而…

域名DNS解析工具ping/nslookup/dig/host

常见 DNS 记录的类型 类型目的A地址记录&#xff0c;用来指定域名的 IPv4 地址&#xff0c;如果需要将域名指向一个 IP 地址&#xff0c;就需要添加 A 记录。AAAA用来指定主机名(或域名)对应的 IPv6 地址记录。CNAME如果需要将域名指向另一个域名&#xff0c;再由另一个域名提供…

RegularExpressionValidator 常用

RegularExpressionValidator 控件用于验证输入值是否匹配正则表达式指定的模式 属性&#xff1a; ControlToValidate"要验证的控件名称" ValidationExpression"验证规则" ErrorMessage"所要显示的错误信息" text“当验证失败时显示的消息。” Fo…

Gitlab添加SSH密钥的解决办法

打开git bash here, 注意期间“输入密码&#xff08;空没有密码&#xff09;&#xff1a;再次输入密码]&#xff1a;[键入密码]&#xff03;再次输入相同的密码”&#xff0c;如下&#xff1a; “Enter passphrase (empty for no passphrase): [Type a passphrase] # Enter sa…

TLS/SSl相关的攻击漏洞及检测方法大杂烩!

TLS/SSl相关的攻击漏洞及检测方法大杂烩&#xff01; 曾以为爱可以排除万难,可万难过后,又有万难。 漏洞介绍&#xff1a; TLS/SSL介绍&#xff1a; SSL“安全套接层”协议&#xff0c;TLS“安全传输层”协议&#xff0c;都属于是加密协议&#xff0c;在其网络数据传输中起到…

gitlab或者gitee生成/添加SSH公钥的解决办法

打开Git Bash Here, gitlab或者Gitee 提供了基于SSH协议的Git服务,在使用SSH协议访问仓库仓库之前,需要先配置好账户/仓库的SSH公钥。 你可以按如下命令来生成 sshkey: ssh-keygen -t rsa -C "xxxxx@xxxxx.com" # Generating public/private rsa key pair... …

数据结构与算法——选择排序

//选择排序#include<stdio.h>void SelectSort(int arr[],int len);int main(void){ int i; int arr[9]{1,4,2,4,6,8,3,9,5}; int lensizeof(arr)/sizeof(arr[0]); SelectSort(arr,len); for(i0;i<len;i) { printf("%d ",arr[i]); }}void SelectSort(int arr…