SuperY4Ng's Blog

渗透测试初步学习之漏洞发现和源码泄露

字数统计: 1.4k阅读时长: 5 min
2018/09/16 Share
1
Ps:该文章首发于CSDN:https://blog.csdn.net/Super_Yiang/article/details/82491310

一、目录扫描

​ 目录扫描的目的是为了探测目标的目录情况,从而分析目标的CMS情况、敏感信息泄露情况 以及 一个大体的站点地图。

​ 这里推荐用御剑前辈的后台扫描器。

二、蜘蛛爬行

​ 蜘蛛爬行和目录扫描的目的差不多,都是为了帮助用户建立一个大概的站点地图,但是两者采用的方法却不同,目录扫描是根据字典进行枚举,而蜘蛛爬行则是从站点的链接中获取站点的目录情况。

  蜘蛛爬行相较于目录扫描的最大优点在于,能爬出苛刻的目录,比如web后台的目录是bnbndmw/login.php,而bnbndmw是比较苛刻的字符很难有字典包含这个字符,而这个链接又存在于站点的其他html链接中,就会被蜘蛛发现,从而收集到。

  蜘蛛爬行在常用的漏洞扫描器中 以及 Burpsuite里面都具备。

三、漏洞扫描器

  1. AWVS
  2. Burpsuite

四、根据CMS发现漏洞

​ 在已知对方使用的CMS时,我们可以去百度该CMS存在哪些漏洞,然后用已知的漏洞进行测试,然后我可以用百度到的这些漏洞详情去测试目标站点是否存在该漏洞。

五、源代码泄露漏洞

  1. 代码压缩包泄露

    ​ 有些站点的管理员将源码备份成压缩包的格式,却放在了Web目录下,攻击者访问该压缩包的时候就会下载该压缩包。

    PS:常见后缀 : .zip .rar .tar.gz .7z

  2. SVN源代码泄露

    (1)漏洞成因

    ​ 管理员对SVN的机制不熟悉,直接将SVN检出到本地的web目录下,而忘记删除.svn目录(文件的类型及内容存放目录),从而导致攻击者拿到站点的源代码。

    (2)SVN源代码泄露两个版本的区别

    ​ SVN1.7后取消了text-base备份文件夹,同时访问.svn/entries返回数字12。1.7以后的版本不会在每个目录下生成.svn的文件,仅在根目录下生成.svn文件。

    ​ 并且在.svn目录下存在wc.db,该数据库文件在NODES表单local_relpath为真实文件名,checksum为文件的sha1值,kind表示文件类型(dir->目录,file->文件) 。

    ​ 在.svn/pristine目录的二级目录下存储着源代码,文件名是sha1值.svn-base,二级目录名是sha1值的前两位。

  3. git源码泄露

      从git仓库下载代码的时候,会在本地生成一个.git隐藏文件夹(存放代码的变更记录),导致攻击者可以使用该文件夹下的信息拿到代码。

    PS:利用工具:GitHack

  4. swp源码泄露

    ​ 使用vi编辑器打开文件时,会生成一个.文件名.swp的备份文件,防止意外退出等情况导致文件内容丢失。产生原因主要是管理员在web目录下修改代码文件,导致生成了.swp备份文件。

    PS:利用方法:访问.swp文件会下载该文件,然后vi -r 文件名 来恢复内容,然后按下任意键就可以看到其中的代码了。

  5. 数据库外泄

    ​ 不只是源码泄露会导致安全威胁,其实数据库泄露也会导致安全威胁。

      数据库外泄指的是数据库文件泄露,比如ACCESS的数据库是.mdb 以及上面提到的 .db 是SQLite的数据库。这两种数据库系统将数据保存在该格式的文件中,而数据库文件又在WEB目录下,攻击者可以下载数据库从而拿到数据。

    ​ 这种漏洞影响最多的是ASP+ACCESS的站点,比较经典两个案例:

    1
    2
    1.某些CMS的目录下存在/data/#data.mdb 文件
    2.ewebeditor 后台GETSHELL,下载eweb的数据库就是其中关键的一步
  1. WEB-INF/web.xml泄露
    • WEB-INF介绍

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

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

      ​ 通过找到web.xml文件,推断class文件的路径,最后直接class文件,在通过反编译class文件,得到网站源码。

        一般情况,jsp引擎默认都是禁止访问WEB-INF目录的,Nginx 配合Tomcat做均衡负载或集群等情况时,使用了Nginx的安全策略,导致web.xml能够被攻击者访问到。

    • CVS泄露

      测试目录

      1
      2
      3
      http://url/CVS/Root 返回根信息

      http://url/CVS/Entries 返回所有文件的结构

      取回源码命令

      1
      bk clone http://url/name

      bk下载地址

  2. DS_Store文件泄露
    • 漏洞成因

      ​ 在发布代码时未删除文件夹中隐藏的.DS_store,被发现后,获取了敏感的文件名等信息。

    • 漏洞利用
      1
      python ds_store_exp.py http://www.example.com/.DS_Store

      ds_store_exp.py

  3. Bazaar/bzr

    #####

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

    dvcs-ripper

CATALOG
  1. 1. 一、目录扫描
  2. 2. 二、蜘蛛爬行
  3. 3. 三、漏洞扫描器
  4. 4. 四、根据CMS发现漏洞
  5. 5. 五、源代码泄露漏洞
    1. 5.0.1. 代码压缩包泄露
    2. 5.0.2. SVN源代码泄露
    3. 5.0.3. git源码泄露
    4. 5.0.4. swp源码泄露
    5. 5.0.5. 数据库外泄
    6. 5.0.6. WEB-INF/web.xml泄露
    7. 5.0.7. DS_Store文件泄露
    8. 5.0.8. 漏洞成因
    9. 5.0.9. 漏洞利用
    10. 5.0.10. Bazaar/bzr