Ashing's Blog

想学的太多 懂得的太少

0%

WEB安全—敏感信息泄露

0x01 服务端口探测

Nmap

Sodan

0x02 WEB指纹识别

Wappalyzer

0x03 WEB目录

WEB目录扫描工具

  • 爆破式:DirBuster、御剑
  • 爬虫式:DirSearch
  • weakfilescan

Robots.txt

记录可爬信息

phpinfo

PHP 版本:各个版本有不同的特性

system info:详细的操作系统信息,为提权准备

…..各类情况可单独总结

探测工具:Seaii 表哥开发的phpinfo_scanner:https://github.com/proudwind/phpinfo_scanner

0x04 源码泄露

很多中小型企业,公司没有专门的服务器。只能部署在某个虚拟机上面,而代码比较多的时候FTP上传比较慢。于是开发者把代码打包压缩后再上传,上传成功后再去服务器解压。这样,虽然解决了上传速度慢的问题。但是,留下了安全隐患。

压缩包如果没有删除。当攻击者发现后就可以把代码压缩下载;因为部署在服务器上的都是源码。这个时候攻击者就可疑通过代码进一步挖掘一些安全漏洞。

0 GitHub等社工方式源码泄露

有些安全意识不高的程序员大意的把自己的项目源码上传到 GitHub ,一些不法份子在收集信息中,通过关键词进行搜索,可以找到关于目标站点的信息,有些信息直接泄露了网站源码,管理员账号密码,数据库信息等。

1 网站备份压缩文件

在网站的使用过程中,往往需要对网站中的文件进行修改、升级。此时就需要对网站整站或者其中某一页面进行备份。当备份文件或者修改过程中的缓存文件因为各种原因而被留在网站web目录下,而该目录又没有设置访问权限时,便有可能导致备份文件或者编辑器的缓存文件被下载,导致敏感信息泄露,给服务器的安全埋下隐患。

常见备份文件后缀

1
2
Windows一般情况: *.zip, *.rar, *.7z
Linux一般情况: *.gz, *.tar.gz, *.rar, *.bak, *.swp

漏洞成因

该漏洞的成因主要有以下两种:

  • 服务器管理员错误地将网站或者网页的备份文件放置到服务器web目录下。
  • 编辑器在使用过程中自动保存的备份文件或者临时文件因为各种原因没有被删除而保存在web目录下。

漏洞利用

导致服务器整站源代码或者部分页面的源代码被下载、利用:

  • 源代码中所包含的各类敏感信息:如服务器数据库连接信息、服务器配置信息等泄露
  • 被用于代码审计,进一步挖掘系统漏洞

2 VIM文件泄露

VIM备份文件

1
https/192.168.1.1/index.php~

VIM临时文件

VIM 临时文件, 当打开文件,vim就会产生一个.(filename)swp文件以备不测。

  • 如果:正常退出编辑:.swp文件就会自动删除;
  • 如果:多个程序同时编辑一个文件 or 非常规退出,则会产生一个临时文件.swp
1
https/192.168.1.1/.index.php.swp

漏洞利用恢复

1
vim -r xx.php.swp

3 .DS_Store文件泄漏

漏洞成因

MAC系统,用来存储这个文件夹的显示属性。在发布代码时未删除文件夹中隐藏的.DS_store,被发现后,获取了敏感的文件名等信息。

例如:

1
http://www.example.com/.ds_store

漏洞利用

利用工具:dsstoreexp

1
python ds_store_exp.py http://www.example.com/.DS_Store

4 .Git 源码泄露

漏洞成因

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

1
2
3
4
5
6
7
8
9
http://www.example.com/.git/config

index:文件保存暂存区信息
info:存放仓库的信息
object:存放所有git对象的地方
refs:存放提交hash的地方
config:github的配置信息
description:仓库的描述信息,主要给gitweb等git托管系统使用
HEAD:映射到ref引用,能够找到下一次commit的前一次哈希值

漏洞利用

  • GitHack
    1
    GitHack.py http://www.example.com/.git/
  • dvcs-ripper
    1
    rip-git.pl -v -u http://www.example.com/.git/

5 SVN源码泄露

漏洞成因

使用 SVN 管理本地代码过程中,使用 svn checkout 功能来更新代码时,项目目录下会自动生成隐藏的.svn文件夹

一些网站管理员在发布代码时,不愿意使用 “ 导出 ” 功能,而是直接复制代码文件夹到WEB服务器上,这就使得.svn隐藏文件夹被暴露于外

1
http://vote.lz.taobao.com/admin/scripts/fckeditor.266/editor/.svn/entries

漏洞利用

  • 直接访问获得文件源代码,wc.db文件;用Navicat软件打开 wc.db文件,可以看到 NODES 表,遍历这个表里的每一行,就可以下载到整个项目里的代码了,而且还能得到对应的真实文件名。

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

  • dvcs-ripper

1
rip-svn.pl -v -u http://www.example.com/.svn/
  • Seay-Svn

漏洞修复

  • 1 不要使用svn checkout和svn up更新服务器上的代码,使用svn export(导出)功能代替;
  • 2 服务器软件(Nginx、apache、tomcat、IIS等)设置目录权限,禁止访问.svn目录;
  • 3 删除 .svn 文件夹

6 CVS泄露

漏洞成因

1
2
3
4
5
6
7
8
http://url/CVS/Root 返回根信息
http://url/CVS/Entries 返回所有文件的结构

# 取回源码的命令, 这个命令的意思就是把远端一个名为name的repo clone到本地名为dir的目录下。
bk clone http://url/name dir
# 查看所有的改变的命令,转到download的目录
bk changes
Bazaar/bzr

漏洞利用

利用工具:dvcs-ripper

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

7 .hg 源码泄露

漏洞成因

hg init的时候会生成.hg, 例如:

1
http://www.example.com/.hg/

漏洞利用

利用工具:dvcs-ripper

1
2
rip-hg.pl -v -u http://www.example.com/.hg/
cat .hg/store/fncache

8 WEB-INF/web.xml泄露

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

WEB-INF主要包含以下文件或目录:

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:数据库配置文件

漏洞成因

一般情况,jsp 引擎默认都是禁止访问 WEB-INF 目录的。

Nginx 配合 Tomcat 做均衡负载或集群等情况时,Nginx 不会去考虑配置其他类型引擎(Nginx不是jsp引擎)导致的安全问题,而引入到自身的安全规范中来(这样耦合性太高了)

对静态资源的目录或文件的映射配置不当,可能会引发一些的安全问题,导致 web.xml 等文件能够被读取。

漏洞利用

通过找到web.xml文件,推断class文件的路径,下载class文件,再通过反编译class文件,得到网站源码。

漏洞防御

修改Nginx配置文件禁止访问WEB-INF目录

1
location ~ ^/WEB-INF/* { deny all; } 或者return 404; 或者其他!

9 其他

  • 配合目录遍历漏洞、目录穿越漏洞

  • 其他已知CMS文件泄漏