记.svn文件信息泄露漏洞

在此之前我们了解一下.svn文件的前世今生
0x00
前世

  1. .svn文件(subversion)是源代码版本管理软件。这玩意在管理员部署代码 svn
    checkout更新代码时会产生一个隐藏目录–ls -a 可以查看。既然是隐藏目录,那就可能在做权限配置的时候漏过。这就是漏洞的成因。
    ps:
    SVN产生的.svn目录下还包含了以.svn-base结尾的源代码文件副本(低版本SVN具体路径为text-base目录,高版本SVN为pristine目录)

0x01
今生

  1. 这个漏洞的基本构成 在漏洞产生时候会有一个目录(/.svn/) 目录下有 entries(entrist)文件或者文件夹
    还有一个wc.db文件(需要SQLiteStudio软件) 当然这是危害较大的文件,其余还会有更多文件视不同情况

0x02:

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

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

    svn1.7及以后版本则只在项目根目录生成一个.svn文件夹,里面的pristine文件夹里包含了整个项目的所有文件备份。
    这个站存在403
    记.svn文件信息泄露漏洞_第1张图片深入探索:
    https://github.com/admintony/svnExploit/
    我们采用大佬的exp(python3环境)

  • -u参数

记.svn文件信息泄露漏洞_第2张图片

  • –dump参数
    记.svn文件信息泄露漏洞_第3张图片
  • 证明
    其实这个站点存在一个/css/.svn/entries目录
    记.svn文件信息泄露漏洞_第4张图片对于这个漏洞其实还有很多网上的exp可以参考这里推荐3个

https://phpinfo.me/2014/05/31/614.html
https://github.com/kost/dvcs-ripper(linux下)

0x03
其他利用方式

  • 有的站点使用.svn来做生产环境版本控制,但是.svn目录没有做访问权限限制,可以通过.svn/entries来遍历文件和目录列表。
    为了节约体力,我写了一个php脚本来做这件事,如果*.php.svn-base不被当.php来执行,那么恭喜你,svn中的.php程序源码随你下了,分析源码可能能帮助你发现更多漏洞。
    如果.php.svn-base被当成php文件来执行了,可能看到php错误信息(看到真实路径)或内容为空白,那么,同样恭喜你,这个站点有扩展名识别问题,找地方上传xxx.php.gif也许就可以直接得到webshell了。

0x04
修复

  • 建议直接删除该文件该目录。

扩展

1.https://www.secpulse.com/archives/55286.html 更全的文件泄露案例

你可能感兴趣的:(chongba笔记)