• 代码版本控制 的 文件泄露


    文件泄露

    Git

    什么是文件泄露
    GitHub
    .git                  # 攻击者可以通过。  .git 内部文件,能看到很信息
    .svn
    .DS_Store
    .hg
    .bzr
    cvs
    WEB-INF
    网站备份,zip 、sql、rar、swp、phpinfo 


    Github
    Github是目前全球最热门的在线协作网站,大量的程序员都会在Github上分享自己的代码以及协力进行软件开发。但与此同时,部分的程序员出于各种原因而没有删除所分享代码中的重要敏感信息,而被黑客利用与攻击系统。


    从代码内部可以获取到
    1. 邮箱信息
    2. SVN信息
    3. 内部账号以及密码
    4. 数据库连接信息
    5. 服务器配置信息

    真实典型案例

    UC某业务导致敏感内部邮件信息泄露
    https://wystatic.tuisec.win/static/bugs/wooyun-2015-091525.html

    高德软件多个信息泄露,影响公司安全
    https://wystatic.tuisec.win/static/bugs/wooyun-2015-094921.html

    git 导致文件泄露
    在运行 git init初始化代码库的时候,会在当前目录下面产生一个.git的隐藏目录,用来记录代码的变更记录等等。
    在发布代码的时候,把.git这个目录没有删除,直接发布了。使用这个文件,可以用来恢复源代码。

    访问 http://localhost/.git
    可以通过 .git 文件内的信息
    取到你的源代码 -> 数据库密码
    -> 文件、sql


    陌陌某重要应用源码泄露 (安全意识不到位)
    https://wystatic.tuisec.win/static/bugs/wooyun-2014-086227.html


    泄露的内容
    1. 所有该项目的源代码
    2. 私有仓库的地址
    3. 私密的配置信息
    4. 所有commiter的邮箱帐号信息
    5. (可能)内部的帐号和密码


    利用方法
    https://github.com/lijiejie/GitHack

    工具原理:
    解析.git/index文件,找到工程中所有的: ( 文件名,文件sha1 )
    去.git/objects/ 文件夹下下载对应的文件
    zlib解压文件,按原始的目录结构写入源代码


    修复漏洞

    1. 删除.git文件
    2. 通过apache/nginx来拒绝.git访问
    3. 提高安全意识!

    SVN 信息泄露
    Subversion ,简称SVN。是一个开放源码的版本控制系统,
    相对于的RCS、CVS,采用了分支管理系统,它的设计目标就是取代CVS。
    互联网上越来越多的控制服务从CVS转移到Subversion。

    svn同样在项目根目录下会创建一个名为.svn的隐藏文件夹, 包含了所有分支commit信息和代码记录.

    错误的导出方式
    导出结果带.svn文件夹的目录树
    1. svn checkout http://路径 [本地目录全路径] --username 用户名
    2. svn checkout svn://路径 [本地目录全路径] --username 用户名

    案例
    淘宝网某应用svn信息导致代码泄露
    https://wystatic.tuisec.win/static/bugs/wooyun-2012-012665.html

    手动敲代码 复现
    wget -r --no-parent --mirror http://www.example.com/.svn
    cd www.example.com && svn revert --recursive .


    使用 Seay-Svn 工具复现
    https://github.com/kost/dvcs-ripper

    拿自己来测试 还好不成功 哈哈哈

    修复
    1. 设置SVN密码,并将匿名访问用户的权限设置为none。
    2. 发布代码时使用svn export导出,而不要使用svn co检索,防止泄露目录结构。
    3. 提高安全意识


    代码
    Apache 配置文件
    <Directory ~ ".svn">
    Order allow,deny
    Deny from all
    </Directory>


    Nginx 配置文件
    location ~ ^(.*)/.svn/ {
    return 404;
    }


    DS_Store

    .DS_Store是Mac下Finder用来保存如何展示 文件/文件夹 的数据文件,每个文件夹下对应一个。

    如果开发/设计人员将.DS_Store上传部署到线上环境,可能造成文件目录结构泄漏,特别是备份文件、源代码文件。


    案例
    TCL某网站DS_Store文件泄露敏感信息
    https://wystatic.tuisec.win/static/bugs/wooyun-2015-091869.html

    利用工具
    https://github.com/lijiejie/ds_store_exp

    修复:
    sudo find / -name ".DS_Store" -depth -exec rm {} ;


    小众漏洞
    .hg文件泄露
    Mercurial 是一个 版本控制系统. 开发者可以用它来管理源代码.
    hg在初始化代码库的时候,会在当前目录下面产生一个.hg的隐藏文件


    利用工具
    https://github.com/kost/dvcs-ripper

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


    修复:
    删除.hg


    .bzr

    Bazaar-NG 是个分散式版本控制系统,旨在易于开发人员和最终用户的使用。分散式版本控制系统采用了 集市开发模型 ,可让人们通过互联网进行协作。如果使用 Bazaar-NG,您就可以向最喜欢的自由软件项目提交自己的分支,同时无需特殊权限。

    利用工具:
    https://github.com/kost/dvcs-ripper


    CVS
    TortoiseCVS 是一款项目管理工具,一般用在IT行业,有服务器版和客户端版,在客户机上装了CVS,能够从服务器上迁出数据 。

    是Windows平台上最最简单最最方便的CVS工具,TortoiseCVS的特点就是完全结合到资源管理器的鼠标右键菜单中进行操作,异常简单和方便。

    cvs的一个windows客户端程序,功能当然是实现cvs的一些操作。CVS是指并发版本系统(Concurrent Versions System)。

    利用工具:
    https://github.com/kost/dvcs-ripper
    rip-cvs.pl -v -u http://www.example.com/CVS/


    修复:
    删除该文件

    WEB-INF/web.xml

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


    /WEB-INF/web.xml:Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则。
    /WEB-INF/classes/:含了站点所有用的 class 文件,包括 servlet class 和非servlet class。
    /WEB-INF/lib/:存放web应用需要的各种JAR文件,放置仅在这个应用中要求使用的jar文件,如数据库驱动jar文件
    /WEB-INF/src/:源码目录,按照包名结构放置各个java文件。
    /WEB-INF/database.properties:数据库配置文件。


    案例
    中国电信-wlan上网某节点web.xml可读取导致ldap数据库泄露
    https://wystatic.tuisec.win/static/bugs/wooyun-2013-039809.html


    修复:
    禁止访问WEB-INF目录:location ~ ^/WEB-INF/* { deny all; }

    网站备份
    zip、sql、rar、swp
    如果被人拿到了, 别人就可以获取到源码去分析你的代码漏洞

    最后!

    平时一定要提高安全意识,避免犯低级错误

  • 相关阅读:
    正则表达式的一些符号
    备份 Repository Backup
    Delphi 文件类型
    superobject.pas 其他人修改的
    TCustomCombo.SetItemIndex(const Value: Integer);
    Error reading symbol file
    任务栏窗口列表
    找回已删除的文件或目录
    总目录
    在Mac下使用crontab执行定时脚本
  • 原文地址:https://www.cnblogs.com/huidou/p/10832142.html
Copyright © 2020-2023  润新知