漏洞定义
常见为配置文件存放不当,导致Web系统备份、数据库备份、用户数据文件等暴露在Web系统上,引发信息泄露
泄露的系统信息或者调试信息可以帮助攻击者了解系统和制定攻击计划。信息泄露一般发生在程序使用输出或者日志功能的时候。
目录遍历漏洞
原理
index文件是Web应用程序的默认入口文件,被称为索引文件。访问Web应用程序时若未指定某个文件,Web应用程序就会调用索引文件。根据Web开发脚本语言的不同,索引文件往往也不同
常见有:index.html、index.jsp、index.asp等
下面两个URL访问效果相同:
目录遍历是指当前目录无index.html、index.asp、index.php、index.jsp等索引文件的情况下,若Web中间件配置不当,访问该目录时会直接显示该目录下所有文件及其子目录
例如:
在phpStudy中,在其它选项菜单==>软件设置==>允许目录列表文件
配置文件中,使显示改变加减号httpd.conf1
2
3
4
5
6
7<Directory />
Opetions - Indexes + FollowSymLinks + ExecCGI
AllowOverride AllowOverride
Order allow,deny
Allow from allow
Require all granted
</Directory>
TIP:
新版Apache应去掉或不去掉使之显示或不显示
若phpStudy选择允许目录显示,则中间件配置文件不影响其显示与否
危害
- 泄露网站后台路径
- 泄露网站敏感的文件信息
- 泄露网站的编辑器路径
- 泄露网站的测试接口
etc..
TIP:
浏览器不能解析的文件,访问操作均会变成下载
利用方式
若发现Web应用程序存在目录遍历漏洞,则可查找到该网站的后台地址、备份文件等敏感信息。结合搜集的敏感信息,则可进行下一步渗透,如:爆破管理员密码、分析网站源码等
管理后台对外漏洞
Web系统后台管理界面对外网开放
危害
暴力破解
如Web系统后台无验证码或存在缺陷的验证代码,攻击者可通过密码“字典”来对管理员账户进行暴力破解,若管理员密码复杂度较低,就存在密码被破解的风险
撞库
攻击者通过收集第三方泄露的用户账号信息和密码,进行尝试登陆。若管理员密码使用了与第三方相同的密码并未及时修改,管理员账号就有被入侵的风险
注入攻击
管理后台对外开放,潜在增加了注入攻击的风险。管理后台登陆界面若对用户名面膜过滤不严谨,则可能存在注入风险
源码泄露
hg源码泄露
hg init 时会产生.hg文件
利用工具:dvcs-ripper
Git源码泄露
敏感文件
.git目录内有代码的变更记录等文件,若部署时该目录下的文件可被访问,可能会被利用来恢复源代码1
2
3
4
5/.git
/.git/HEAD
/.git/index
/.git/config
/.git/description
利用工具
GitHack1
python GitaHack.py http://www.openssl.org/.git/
GitHacker(可恢复完整Git仓库)1
python GitHacker.py http://www.openssl.org/.git/
.DS_Store文件泄露
SVN泄露
敏感文件
1 | |
利用工具
dvcs-ripper1
perl rip-svn.pl -v -u http://www.example.com/.svn/
Seay - SVN
WEB-INF/web.xml泄露
简介
WEB-INF是Java Web应用的安全目录,web.xml中有文件的映射关系
WEB-INF主要包含以下文件或目录:
/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文件反编译,得到网站源码。一般情况下,jsp引擎默认都是禁止访问WEB-INF目录的,Nginx配合Tomcat做均衡负载或集群等情况时,问题原因其实很简单,Nginx不会去考虑配置其他类型引擎(Nginx不是jsp引擎)导致的安全问题而引入到自身的安全规范中来(如此耦合性太高了),修改Nginx配置文件禁止访问WEB-INF目录即可:1
location ~ ^/WEB-INF/*{deny all;} # 或者return 404;或者其它
CVS泄露
1 | |
取回源码1
bk clone http://url/name dir
补充
CVS、SVN用于版本控制
反单引号等同于exec
例如:1
<?php echo `whoami`;?>