当前位置:首页 > 技术分享

Web安全-网站信息泄露漏洞分析 .svn .git 检测分析以及解决办法

admin19小时前技术分享6

先说一下使用svn部署和同步网站可能存在的网站文件泄露问题

SVN(subversion)是程序员常用的源代码版本管理软件。在使用 SVN 管理本地代码过程中,使用 svn checkout 功能来更新代码时,项目目录下会自动生成隐藏的.svn文件夹(Linux上用 ls 命令看不到,要用 ls -al 命令),其中包含重要的源代码信息。

造成SVN源代码漏洞的主要原因是管理员操作不规范,一些网站管理员在发布代码时,不愿意使用“导出”功能,而是直接复制代码文件夹到WEB服务器上,这就使得.svn隐藏文件夹被暴露于外网环境,黑客对此可进一步利用:

可以利用其中包含的用于版本信息追踪的 entries 文件(.svn/entries 文件),获取到服务器源码、svn服务器账号密码等信息;
可以利用 wc.db 数据库文件(.svn/wc.db 文件),获取到一些数据库信息;
更严重的问题在于,SVN产生的.svn目录下还包含了以.svn-base结尾的源代码文件副本(低版本SVN具体路径为text-base目录,高版本SVN为pristine目录),如果服务器没有对此类后缀做解析,则可以直接获得文件源代码。
漏洞危害

一旦网站出现SVN漏洞,其危害远比SQL注入等其它常见网站漏洞更为致命,因为黑客获取到网站源代码后,一方面是掠夺了网站的技术知识资产,另一方面,黑客还可通过源代码分析其它安全漏洞,从而对网站服务器及用户数据造成持续威胁(git同理)。


那么怎么检测自己网站是不是泄露了呢,使用工具

svn检测工具是SvnExploit  git的检测工具是GitHack 和 GitHacker

SvnExploit  工具说明

开源地址:

https://github.com/admintony/svnExploit

https://gitee.com/ssssw88/svnExploit

下载地址:https://url07.ctfile.com/f/349707-8591557274-022abd?p=5036


使用方法

安装依赖库

sudo pip install -r requirements.txt

查看帮助

python SvnExploit.py -h

检测SVN源代码泄露(如果看到一堆你网站的相关文件显示出来说明泄露了)


python .\svnExploit.py -u http://192.168.27.128/unit-2/lab3/.svn/
____             _____            _       _ _
/ ___|_   ___ __ | ____|_  ___ __ | | ___ (_) |_
\___ \ \ / / '_ \|  _| \ \/ / '_ \| |/ _ \| | __|
___) \ V /| | | | |___ >  <| |_) | | (_) | | |_
|____/ \_/ |_| |_|_____/_/\_\ .__/|_|\___/|_|\__|
                           |_|
SvnExploit - Dump the source code by svn
Author: AdminTony (http://admintony.com)
https://github.com/admintony/svnExploit


+--------------------+----------+------------------------------------------------+
|       文件名       | 文件类型 |                    CheckSum                    |
+--------------------+----------+------------------------------------------------+
|      conn.php      |   file   | $sha1$8f47ccbd4a436aa4f31018fea026275f6059ed10 |
|       trunk        |   dir    |                      None                      |
|      branches      |   dir    |                      None                      |
|  admin_login.php   |   file   | $sha1$a6981b1ca963c8a75e133e38780be7ff0cd60952 |
|     phpmyadmin     |   file   | $sha1$6d5af41c175e344ee483732648edc9318b2a6014 |
|     README.TXT     |   file   | $sha1$c5981462cc06422f4a78e68f0a48dddcf5860eb9 |
|     README.txt     |   file   | $sha1$ef4b5f3081dbac31f9fb089aafd60dd2b9474b51 |
|     secret.php     |   file   | $sha1$2e6a7a6976d31847f0eebf7bbc252bcc1ff4f609 |
|     README.md      |   file   | $sha1$466f5ab1e4adfd373a23f639e0dd8fcfdce7874b |
| img/login_bg01.jpg |   file   | $sha1$311efc58c4d7035a54fdb8e94d6ba901c56354fd |
|        img         |   dir    |                      None                      |
|     index.php      |   file   | $sha1$4660847a73ab0906d91841dde9576bd5054b2020 |
|      test.sql      |   file   | $sha1$096a90da3e471a472874413b18cb2f5dd0567fd1 |
|     admin.php      |   file   | $sha1$f444d3aad996577872ac7b95a2c05aa11e6b1f8f |
|      document      |   dir    |                      None                      |
|        tags        |   dir    |                      None                      |
+--------------------+----------+------------------------------------------------+

下载源代码

python .\svnExploit.py -u http://192.168.27.128/unit-2/lab3/.svn/ --dump
____             _____            _       _ _
/ ___|_   ___ __ | ____|_  ___ __ | | ___ (_) |_
\___ \ \ / / '_ \|  _| \ \/ / '_ \| |/ _ \| | __|
___) \ V /| | | | |___ >  <| |_) | | (_) | | |_
|____/ \_/ |_| |_|_____/_/\_\ .__/|_|\___/|_|\__|
                           |_|
SvnExploit - Dump the source code by svn
Author: AdminTony (http://admintony.com)
https://github.com/admintony/svnExploit


+--------------------+--------------------------------------------------------------------+----------+
|       文件名       |                                URL                                 | 下载状态 |
+--------------------+--------------------------------------------------------------------+----------+
|      conn.php      | .svn/pristine/8f/8f47ccbd4a436aa4f31018fea026275f6059ed10.svn-base | 下载成功 |
|     README.TXT     | .svn/pristine/c5/c5981462cc06422f4a78e68f0a48dddcf5860eb9.svn-base | 下载成功 |
|     README.txt     | .svn/pristine/ef/ef4b5f3081dbac31f9fb089aafd60dd2b9474b51.svn-base | 下载成功 |
|     phpmyadmin     | .svn/pristine/6d/6d5af41c175e344ee483732648edc9318b2a6014.svn-base | 下载成功 |
|     secret.php     | .svn/pristine/2e/2e6a7a6976d31847f0eebf7bbc252bcc1ff4f609.svn-base | 下载成功 |
|     README.md      | .svn/pristine/46/466f5ab1e4adfd373a23f639e0dd8fcfdce7874b.svn-base | 下载成功 |
|  admin_login.php   | .svn/pristine/a6/a6981b1ca963c8a75e133e38780be7ff0cd60952.svn-base | 下载成功 |
|     index.php      | .svn/pristine/46/4660847a73ab0906d91841dde9576bd5054b2020.svn-base | 下载成功 |
|     admin.php      | .svn/pristine/f4/f444d3aad996577872ac7b95a2c05aa11e6b1f8f.svn-base | 下载成功 |
|      test.sql      | .svn/pristine/09/096a90da3e471a472874413b18cb2f5dd0567fd1.svn-base | 下载成功 |
| img/login_bg01.jpg | .svn/pristine/31/311efc58c4d7035a54fdb8e94d6ba901c56354fd.svn-base | 下载成功 |
+--------------------+--------------------------------------------------------------------+----------+
[+] 已经Dump完成!


下面说一下git相当检测工具

1.GitHack检测工具 开源地址  https://github.com/lijiejie/GitHack

GitHack是一个.git泄露利用脚本,通过泄露的.git文件夹下的文件,重建还原工程源代码。

渗透测试人员、攻击者,可以进一步审计代码,挖掘:文件上传,SQL注射等web安全漏洞。

使用方法

python GitHack.py http://www.openssl.org/.git/


2.GitHacker检测工具 开源地址  https://github.com/WangYihang/GitHacker

GitHacker是一个多线程工具,用于利用文件夹泄露漏洞。它几乎能完整下载目标文件夹。当该功能被暴力破解常用文件夹文件禁用时,该工具同样有效。借助GitHacker,你可以查看开发者的提交历史、分支、......、隐藏文件,这有助于更好地理解目标仓库,甚至发现安全漏洞。

使用方法

# install
python3 -m pip install -i https://pypi.org/simple/ GitHacker
# print help info
githacker --help
# quick start
githacker --url http://127.0.0.1/.git/ --output-folder result
# brute for the name of branchs / tags
githacker --brute --url http://127.0.0.1/.git/ --output-folder result
# exploit multiple websites, one site per line
githacker --brute --url-file websites.txt --output-folder result

漏洞修复和解决办法

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

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

nginx禁止目录

server
{
    ------其它代码-----
    #禁止访问的文件或目录
    location ~ ^/(\.user.ini|\.htaccess|\.git|\.env|\.svn|\.project|LICENSE|README.md)
    {
        return 404;
    }    
  ------其它代码-----
}

apache禁止目录.htaccess

<FilesMatch "^(\\.user.ini|\\.htaccess|\\.git|\\.env|\\.svn|\\.project|LICENSE|README.md)$">
    Require all denied
    ErrorDocument 404 /404.html
</FilesMatch>

IIS (web.config)

<configuration>
    <system.webServer>
        <security>
            <requestFiltering>
                <hiddenSegments>
                    <add segment=".user.ini" />
                    <add segment=".htaccess" />
                    <add segment=".git" />
                    <add segment=".env" />
                    <add segment=".svn" />
                    <add segment=".project" />
                </hiddenSegments>
                <denyUrlSequences>
                    <add sequence="LICENSE" />
                    <add sequence="README.md" />
                </denyUrlSequences>
            </requestFiltering>
        </security>
        <httpErrors>
            <remove statusCode="404" subStatusCode="-1" />
            <error statusCode="404" path="/404.html" responseMode="ExecuteURL" />
        </httpErrors>
    </system.webServer>
</configuration>

Tomcat (web.xml)

<web-app>
    <security-constraint>
        <web-resource-collection>
            <web-resource-name>Protected Files</web-resource-name>
            <url-pattern>/.user.ini</url-pattern>
            <url-pattern>/.htaccess</url-pattern>
            <url-pattern>/.git</url-pattern>
            <url-pattern>/.env</url-pattern>
            <url-pattern>/.svn</url-pattern>
            <url-pattern>/.project</url-pattern>
            <url-pattern>/LICENSE</url-pattern>
            <url-pattern>/README.md</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <role-name>none</role-name>
        </auth-constraint>
    </security-constraint>
    
    <error-page>
        <error-code>404</error-code>
        <location>/404.html</location>
    </error-page>
</web-app>

3、删除 /.svn 文件夹,注意,不只svn,git 或者其他版本管理软件也存在类似的问题。

扫描二维码推送至手机访问。

版权声明:本文由小刚刚技术博客发布,如需转载请注明出处。

本文链接:http://blog.bitefu.net/post/712.html

分享给朋友:

“Web安全-网站信息泄露漏洞分析 .svn .git 检测分析以及解决办法” 的相关文章

linux centos svn搭建及网站同步更新

以前上线的项目都是用ftp来更新的.后来技术人员多了,ftp的弊端就出来了.所以在这里给大家介绍一下我们现在正在使用的svn同步修改更新的方案.原理很简单主要是用到了svn的hooks功能.即本地提交到服务器的svn服务器.然后svn服务器…

百度云,天翼云盘解析网页地址 收集分享

百度云解析http://p.106666.xyz/https://pan.kdbaidu.com/https://pan.kdpd.me/https://yun.kdbaidu.com/http://blog.xxatf.top/https…

php高效检测远程图片是否存在

php高效检测远程图片是否存在function img_exits($url){     $ch = curl_init();    &…

VirtualXposed 不支持32位应用 32位无法安装问题解决办法

VirtualXposed 不支持32位应用 32位无法安装问题解决办法

VirtualXposed 是基于VirtualApp 和 epic 在非ROOT环境下运行Xposed模块的实现(支持5.0~10.0)。与 Xposed 相比,目前 VirtualXposed 有…

PHP和Redis实现在高并发下的抢购及秒杀功能

抢购、秒杀是平常很常见的场景,面试的时候面试官也经常会问到,比如问你淘宝中的抢购秒杀是怎么实现的等等。抢购、秒杀实现很简单,但是有些问题需要解决,主要针对两个问题:一、高并发对数据库产生的压力二、竞争状态下如何解决库存的正确减少("…

微软Windows 10升级密钥(例如家庭版升级为企业版) 不能用于激活系统

微软Windows 10升级密钥(例如家庭版升级为企业版) 不能用于激活系统

下面的密钥,是微软官方提供的,仅能用于Windows10系统版本的升级,比如从家庭版升级为专业版、专业版升级为企业版等。升级密钥不能用于激活系统,激活需要KMS或者数字权利,由于涉及到版权问题,在此不宜分享,请大家自行查找激活相关的内容。准…

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。