[红日安全]Web安全Day11 - 敏感信息泄露实战
字数 2127 2025-08-18 11:39:19
Web安全实战:敏感信息泄露漏洞详解与防护
1. 漏洞简介
敏感信息泄露是指由于后台人员的疏忽或不当设计,导致本不该被前端用户访问的数据被轻易获取的安全漏洞。敏感数据包括但不限于:
- 认证凭据:口令、密钥、证书、会话标识
- 授权信息:License、授权凭据
- 个人数据:姓名、住址、电话等隐私数据
- 系统信息:操作系统、中间件、开发语言版本
这些信息可能存在于:
- 程序文件
- 配置文件
- 日志文件
- 备份文件
- 数据库
2. 漏洞分类
2.1 版本管理软件导致的泄露
- Git泄露:
.git/config文件暴露 - SVN泄露:
.svn/entries文件暴露 - CVS泄露:
CVS/Entries文件暴露
2.2 文件包含导致的泄露
- 编辑器备份文件:
.swp,.bak,.old等 - 源码备份文件:
www.rar,sitename.tar.gz,web.zip等 - 测试文件:
test.php,phpinfo.php,info.php等
2.3 配置错误导致的泄露
- 目录列表未禁用
- 错误页面暴露敏感信息
- 管理后台地址暴露
- HTTP认证信息泄露
3. 漏洞危害
敏感信息泄露虽然常被评为低危漏洞,但会为攻击者提供重要信息,可能导致:
-
内网渗透:
- 扫描内网开放服务
- 攻击内网Web应用(SQL注入、XSS等)
- 利用file/gopher/dict协议读取文件、执行命令
-
直接攻击:
- DOS攻击(通过请求大文件或保持连接)
- 向内部主机任意端口发送payload
-
信息利用:
- 社工攻击(利用泄露的邮箱、分机号等)
- 生成针对性字典进行暴力破解
4. 测试方法
4.1 自动化测试
-
工具扫描:
- weakfilescan:敏感文件扫描
- BBScan:敏感信息扫描
- whatweb:Web应用指纹识别
- dnsenum:DNS信息枚举
-
扫描目标:
- 常见敏感文件路径
- 备份文件后缀(.bak, .swp等)
- 版本控制目录(.git, .svn等)
- 管理后台地址(admin.php, login.php等)
4.2 手工测试
-
Web容器检查:
- 检查HTTP响应头
- 分析404等错误页面
- 查看robots.txt文件
-
源码审计:
- 检查HTML/CSS/JS中的敏感信息
- 查找硬编码的凭证和内网接口
-
错误触发:
- 输入错误参数观察报错信息
- 测试非常规文件路径
-
第三方平台:
- GitHub搜索敏感信息(如"smtp 163 password")
- 检查网盘、QQ群等可能泄露的渠道
5. 常见泄露场景
5.1 系统信息泄露
- 通过nmap扫描获取操作系统版本
- 从HTTP头或错误页面获取中间件类型和版本
- phpinfo()页面暴露配置信息
5.2 Web应用信息泄露
- CMS类型及版本信息
- 管理后台地址(/admin, /login等)
- 测试账号密码在源码中硬编码
5.3 网络信息泄露
- DNS域传送漏洞
- 运维监控系统弱口令(如zabbix)
- 网络拓扑图暴露
6. 漏洞修复方案
6.1 数据存储安全
-
禁止在代码中存储敏感数据:
- 数据库连接字符串、密钥等不应硬编码
- 必须存储时应加密处理
-
安全存储凭证:
- 密钥和口令必须加密后存储
- 配置文件权限设置为仅属主可读写
6.2 传输与显示安全
-
传输安全:
- 敏感信息不应使用GET方式提交
- Cookie中存储敏感信息必须先加密
-
显示安全:
- 禁止在隐藏域中存放明文敏感数据
- 用户密码必须加密显示(如使用*号替代)
6.3 日志与错误处理
-
日志安全:
- 禁止在日志中记录明文敏感信息
- 会话标识(jsessionid)等应脱敏
-
错误处理:
- 自定义错误页面,避免系统信息泄露
- 生产环境关闭详细错误提示
6.4 技术实现要求
-
加密算法:
- 禁止使用自研加密算法
- 优先选择不对称加密算法
- 禁止使用BASE64等编码替代加密
-
缓存控制:
- 带有敏感数据的页面应禁止缓存
- 设置适当的Cache-Control头
6.5 管理措施
-
敏感信息定义:
- 根据业务特点明确系统敏感信息范围
- 建立敏感信息分级保护机制
-
开发规范:
- 在SDL中纳入敏感信息处理要求
- 代码审计时重点关注敏感信息处理
7. 实战案例
案例1:内网hosts文件泄露
- 漏洞URL:
https://game.gtimg.cn/hosts - 问题:腾讯内网hosts文件暴露在公网
- 风险:暴露内网拓扑结构,为内网渗透提供信息
案例2:源码中硬编码凭证
- 发现方式:查看网页源代码
- 问题:测试账号密码明文存储在JS文件中
- 结果:攻击者可直接使用这些凭证登录系统
案例3:错误信息泄露
- 测试方法:输入错误参数触发异常
- 问题:错误页面显示数据库表结构、SQL语句等
- 风险:为SQL注入攻击提供重要信息
8. 总结
敏感信息泄露漏洞虽然看似简单,但往往成为攻击链中的重要环节。防护要点包括:
- 最小化原则:只收集、存储必要的敏感信息
- 纵深防御:从存储、传输到显示各环节实施保护
- 自动化检测:将敏感信息扫描纳入CI/CD流程
- 安全意识:加强开发人员的安全培训
通过系统化的防护措施,可以有效降低敏感信息泄露风险,提高整体系统安全性。