信息泄露漏洞
原理概述
本类问题一般都是由于服务器的配置有误或是因为编码人员在编码时的疏忽所导致的,使得某些敏感信息被直接输出到前端页面或者某些敏感文件可以被下载
危害
1.直接或间接泄露不应被外界所知晓的敏感信息,包括但不限于以下情况:用户帐号,密码,手机号,身份证号,内网网段配置信息,服务器登录信息,日志记录等等 2.可能会被黑客用于钓鱼,破解服务器登录口令,发起欺诈信息等等 3.导致项目源码泄露 ···
BadCase样例
包括但不限于以下情况
//目录部分
1).svn目录可在线上访问,如:https:///.svn/entires
2).git目录可在线上访问,如:https:///.git/config
3)data等敏感目录可在线上访问,如:https:///data
4).idea目录可在线上访问,如:https:///.idea/workspace.xml
//文件部分
5)网站程序的打包文件或者备份文件以及其他敏感文件可在线上访问,包括但不限于以下类型的文件:
wwwroot.tar.gz,.bak文件,.out文件,.sql文件,.war文件,包含敏感信息的zip文件或者rar文件,.log文件,.swp~文件,.inc文件,.DS_store文件,包含敏感信息的tar|tar.bz2等文件...
如:http:///wwwroot.tar.gz
http:///index.php.bak
http:///nohup.out
http:///mysql.sql
···
//其他情况
6)含有敏感信息且不应对外的服务器可被外网访问
7) 程序将敏感信息(用户名/邮箱/手机号/身份证)完整明文输出在前端
8)在页面的源码中,注释部分包含敏感信息
9)页面中存在开发时使用的测试性数据
10)页面使用了混合编程,但是只解析部分代码(比如某页面既有PHP代码,又有HTML代码,但实际运行时PHP代码没有被解析,直接在前端输出了)
11)某些框架开启了debug模式导致信息泄露
12) 泄露版本号等相关信息,如下Apache Tomcat/7.0.70
危险定级,以下条目中未列出的情况,请视所泄露信息的敏感性酌情定级
1.涉及.svn,.git,网站程序备份文件,数据库备份文件等代码相关的目录或文件一律为高危级别
2.涉及用户信息(姓名,手机,邮箱,身份证,账号密码等)的一律为高危级别
3.涉及内部机器信息(如资产负责人,机器的账号密码,内网拓扑结构等)的一律为高危
4.涉及服务器日志信息的一律为高危
5.涉及内部机器(如只有内网IP,机器名等信息的)为低危
6.robots.txt泄露某些web目录的为低危
7.phpinfo信息泄露为低危
8.测试数据中如果存在账号密码等信息为高危,其他情况可酌情定级
修复建议
1.对于敏感类型的文件/目录,应直接删除 2.如果因业务需要,不可以被删除,应在服务器配置中做好设置,不允许被外部访问 样例如下:
//nginx配置,本例为禁止访问.svn,.git,.cvs目录
location ~ .*\.(svn|git|cvs) {
deny all;
}
//apache配置,本例为禁止访问.svn目录
<VirtualHost *:80>
ServerName www.baidu.com
DocumentRoot "/var/www/"
<Directory "/var/www/.svn">
Deny from all
</Directory>
</VirtualHost>
3.对于代码层面造成的将敏感信息输出在页面上,应在服务端对相关信息进行模糊化处理,具体处理方式为:
1.手机号只允许最前1位和最后1位明文,其他位置均要模糊化处理,如:1*********4
2.邮箱的用户名部分只允许展示首位,域名部分只允许展示末位,其他位均要打码,且码位要固定(比如统一使用5个*号,而不管实际有多少位),如,明文邮箱为:[email protected],那么实际打码后应展示为s*****@*****m
3.身份证号码不允许展示,如果一定要展示,只能展示最前和最后各一位,其他部分模糊化处理
···
4.页面注释中禁止出现任何上述敏感信息
5.无需被外网访问的设备下掉外网权限