用户
搜索
  • TA的每日心情
    开心
    昨天 07:40
  • 签到天数: 66 天

    连续签到: 66 天

    [LV.6]常住居民II

    i春秋-见习白帽

    Rank: 3Rank: 3

    36

    主题

    79

    帖子

    1704

    魔法币
    收听
    0
    粉丝
    4
    注册时间
    2020-10-2
    发表于 2021-4-15 18:55:03 07329
    说在前面

    SVN(subversion)是程序员常用的源代码版本管理软件。一旦网站出现SVN漏洞,其危害远比SQL注入等其它常见网站漏洞更为致命,因为黑客获取到网站源代码后,一方面是掠夺了网站的技术知识资产,另一方面,黑客还可通过源代码分析其它安全漏洞,从而对网站服务器及用户数据造成持续威胁。黑客可以利用.svn/entries文件,获取到服务器源码、svn服务器账号密码等信息。更严重的问题在于,SVN产生的.svn目录下还包含了以.svn-base结尾的源代码文件副本(低版本SVN具体路径为text-base目录,高版本SVN为pristine目录),如果服务器没有对此类后缀做解析,黑客则可以直接获得文件源代码。

    具体来说:
    1.在使用SVN管理本地代码过程中,会自动生成一个隐藏文件夹,其中包含重要的源代码信息。但一些网站管理员在发布代码时,不愿意使用‘导出’功能,而是直接复制代码文件夹到WEB服务器上,这就使隐藏文件夹被暴露于外网环境,这使得渗透工程师可以借助其中包含版本信息追踪的网站文件,逐步摸清站点结构。

    2.在服务器上布署代码时。如果是使用 svn checkout 功能来更新代码,而没有配置好目录访问权限,则会存在此漏洞。黑客利用此漏洞,可以下载整套网站的源代码。

    3. .svn目录(隐藏目录)

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

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

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

    下面我就推荐一个SVN源代码泄露利用的工具,叫SvnExploit。   Github项目地址:https://github.com/admintony/svnExploit


    一、SvnExploit的安装及使用
    我这里是将其安装在kali中的。
    将红框里的网址复制一下


    1.png


    在kali的命令行中先cd到自己想要存放的目录下,然后敲“git init”来初始化git,然后直接敲“git clone 那个网址”,因为kali中有集成git。这里建议更新下软件源,不然还挺慢的。更换源可以参考这篇文章:https://blog.csdn.net/weixin_50464560/article/details/115727608
    或者参考这篇文章,是配合国内的码云来完成:https://blog.csdn.net/weixin_50464560/article/details/114852783


    做好后,就是安装该工具所依赖的python库了:
    pip3 install -r requirements.txt

    然后可以查看帮助:
    python3 SvnExploit.py -h

    检测SVN源代码泄露:
    python SvnExploit.py -u http://x.x.x.x/.svn

    下载源代码:
    python SvnExploit.py -u http://x.x.x.x/.svn --dump

    二、实例
    这里我就用最近挖到的一个洞来作例子分享给大家


    最近碰巧碰到这种洞,如下图


    2.png


    使用svnexploit工具下载源码

    3.png

    然后源码文件会下载在svnExploit文件夹的子文件夹dbs里

    4.png

    拿到源码后,这里大家都知道就可以做源码审计了,搜说不定还可以做网页任意路径穿透呢~

    最重要的是里面有一个名为 wc.db 的文件,用文本编辑器打开看到第一行有写SQLite format 3  ,可以知道,这是一个SQLite数据库的文件,后面包含的信息,文本编辑器就先不看了。我们下载一个正经的SQLite查看软件来慢慢看~

    wc.db文件,基本上有你想要的一切哦~

    SQLite查看软件打开wc.db文件,我们看到 NODES 表,看到 local relpath栏 和 checksum栏,明白了吗(滑稽.jpg)。checksum栏里的$sha1$后面的那串数字就是pristine文件夹里的那堆文件的文件名,pristine里的00~ff文件夹,其实是文件名的前两位,而local relpath就是原始的文件名。

    现在,我们根据这个 wc.db 的NODES表,遍历这个表里的每一行,就可以下载到整个项目里的代码了,而且还能得到对应的真实文件名,舒服~

    5.png

    除了NODES表以外,还可以看到一个REPOSITORY表,里面存储了svn的项目路径和 uuid,如果没有做访问IP限制的话,你可以直接使用此信息取得此项目的SVN权限(下载、提交等)……


    发新帖
    您需要登录后才可以回帖 登录 | 立即注册