谈谈对SVN和SVN泄露的理解

1.SVN简介

Subversion (SVN) 是一个开源的版本控制系統,管理着随时间改变的数据。 这些数据放置在一个中央资料档案库中。 这个档案库很像一个普通的文件服务器, 不过它会记住每一次文件的变动。 这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史。SVN采用了客户端-服务器架构,通过版本控制来记录代码的变化,每次提交都会生成一个新的版本,并记录提交的相关信息。简而言之就是用于多人共同开发同一个项目,实现共享资源,实现最终集中式的管理。

2.需要注意也是我觉得SVN重要的几点:

(1)SVN采用客户端/服务器体系,数据不丢失,历史可追溯

(2)SVN是输入C/S服务类软件,有客户端和服务端,客户端用于操作,服务端用于数据保存,服务端会管理着随时间改变的所有数据,以提交版本记录每次操作内容。

(3)版本控制技术对文件进行管理主要有两种模式:

          Lock-Modify-Unlock(锁-修改-解锁)    在这种工作模式下,若用户想对某文件进行修改,必须先锁定该文件再进行修改,修改操作完成之后再对其解锁。

         Copy-Modify-Merge(拷贝-修改-合并)   这种工作模式下,当某一用户想修改文件时,可以先将服务器文件update到本地端,然后在本地端对副本进行修改,修改操作完成后,再将副本commit到服务器。

(4)SVN的客户端有两类,一类是基于Web的WebSVN等,另一类是以Tortoise SVN为代表的客户端软件。前者需要Web服务器的支持,后者需要用户在本地安装客户端,两种都有免费的开源软件供使用。

3.什么时候需要用清理(Clean up)

        当我们需要提交修改时,会向.svn中写入一些信息,然后向SVN服务器发送信息,如果该信息没有正确的发送到SVN服务器(提交(SVN Commit)会同时失败),SVN服务器中的版本信息跟本地工作副本的版本信息不一致,再次提交会提示目录被锁定,这时需要清理(Clean up),如果清理之后还是不能提交,关机重启一下试试(T^T)

4.SVN优势

(1).存储

SVN服务器既具有CVS所具有数据储存的优点,像是信息资源存储后会形成资源树结构,便于存储的同时,数据一般不会丢失,同时又拥有自己的特色。SVN是通过关系数据库及二进制的存储方式,同时解决了既往不能同时读写同一文件等问题,同时增添了自己特有的“零或一”原则。

(2).速度

与人们初始的CVS相比,SVN在速度运行方面有很大提升。因为SVN服务器只支持少量的信息、资源传输,与其他系统相比,更支持的是离线模式,因此避免了网络拥挤现象的出现。

(3)安全性

SVN是一种技术性更加安全的产品,实现了系统和控制两方面的结合。一方面可以将系统整体的安全功能有效地分布在分支系统中,进而保证分支系统能正常运行,从而使各分支系统能够互补,最终在系统整体性的安全性得以保障,通过均衡原则实现最终追求安全的目的。

5.SVN的其他说明

(1)权限
 SVN可以按照文件和目录来配置权限
        SVN有一套完整的权限管理体系,可以给个人或者组分配权限,并且权限可以分配到文件级别,权限分“读”(只能查看)与“写”(可以修改)两种情况      实际的项目中SVN权限要按需申请并以最小化原则开通
        需根据工作需要开通,对项目人员的不同角色开通不同的权限或者权限组,以最小化原则。

(2)SVN的提交控制
SVN钩子脚本控制
        SVN有一套提交控制脚本,称为钩子脚本,通过钩子脚本可以对提交的文件类型,提交日志填写要求做控制,还可以通过脚本触发一些工具的执行。

(3)SVN日志模板设置
        设置SVN提交时要填写的模板,并且提交时检查是否按照模板填写,未符合要求的会被禁止提交

(4)SVN锁定提交
        对一些重要文档,为防止多人提交出现覆盖的情况,可以设置成需要锁定文件后才能提交

(5)SVN的分支策略
SVN采用分支管理系统
        分为trunk-主干、branches-分支和tags-标签,  分支上所做的提交都只存于分支上,主线上的Update是看不到分支的修改的

二.SVN泄露

     1.理解:当开发人员使用 SVN 进行版本控制,对站点自动部署。如果配置不当,可能会将.svn文件夹直接部署到线上环境。这就引起了 SVN 泄露漏洞。

       2.危害 :网站出现SVN漏洞,其危害远比SQL注入等其它常见网站漏洞更为致命,因为当入侵者获取到网站源代码后,会有两方面比较严重的危害

1.掠夺了网站的技术知识资产;

2.入侵者通过源代码分析其它安全漏洞,从而对网站服务器及用户数据造成持续威胁。

    更严重的问题在于,SVN产生的.svn目录下还包含了以.svn-base结尾的源代码文件副本(低版本SVN具体路径为text-base目录,高版本SVN为pristine目录),如果服务器没有对此类后缀做解析,入侵者则可以直接获得文件源代码。

3.svn目录(隐藏目录)

    使用svn checkout后,项目目录下会生成一个隐藏的.svn文件夹(Linux上用ls命令看不到,要用ls -al命令)。 

    svn1.6及以前版本会在项目的每个文件夹下都生成一个.svn文件夹,里面包含了所有文件的备份,文件名为 .svn/text-base/文件名.svn-base。

    svn1.7及以后版本则只在项目根目录生成一个.svn文件夹,里面的pristine文件夹里包含了整个项目的所有文件备份。
 

实操

这里以ctfhub上的SVN泄露题为例打开环境后页面提示flag在服务端旧版本的源代码中,这时需要用到dvcs-ripper这个工具需要先在Windows系统上下载好dvcs-ripper的安装包,再在kali系统里打开并安装这里需要依赖库来安装    然后需要使用dvcs-ripper工具将泄露的文件下载到本地目录中在.svn文件夹中查看下载好的文件访问wc.db数据查看是否有此题flag,索引发现flag有两个文本文件可能存在flag再使用curl命令访问可以文件检查网页源代码是否存在flag,检查均返回404,可能已经被删除了然后根据网页提示说flag在服务端旧版本的源代码中,那么应该检查一下pristine文件是否存放flag依次查看发现查看发现6e文件夹中的.svn-base文件中存在此题flag

  • 19
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值