敏感信息泄露(Pikachu)
原理
由于后台人员的疏忽或者不当的设计,导致不应该被前端用户看到的数据被轻易的访问到。
比如:
通过访问url下的目录,可以直接列出目录下的文件列表;
输入错误的url参数后报错信息里面包含操作系统、中间件、开发语言的版本或其他信息;
前端的源码(html,css,js)里面包含了敏感信息,比如后台登录地址、内网接口信息、甚至账号密码等;
类似以上这些情况,我们成为敏感信息泄露。敏感信息泄露虽然一直被评为危害比较低的漏洞,但这些敏感信息往往给攻击着实施进一步的攻击提供很大的帮助,甚至“离谱”的敏感信息泄露也会直接造成严重的损失。 因此,在web应用的开发上,除了要进行安全的代码编写,也需要注意对敏感信息的合理处理。
防御
1.禁止在代码中存储敏感数据:禁止在代码中存储如数据库连接字符串、口令和密钥之类的敏感数据,这样容易导致泄密。
2.禁止密钥或帐号的口令以明文形式存储在数据库或者文件中:密钥或帐号的口令必须经过加密存储。例外情况,如果Web容器的配置文件中只能以明文方式配置连接数据库的用户名和口令,那么就不用强制遵循该规则,将该配置文件的属性改为只有属主可读写。
3.禁止在 cookie 中以明文形式存储敏感数据:cookie信息容易被窃取,尽量不要在cookie中存储敏感数据;如果条件限制必须使用cookie存储敏感信息时,必须先对敏感信息加密再存储到cookie。
4.禁止在隐藏域中存放明文形式的敏感数据。
5.禁止用自己开发的加密算法,必须使用公开、安全的标准加密算法。
6.禁止在日志中记录明文的敏感数据:禁止在日志中记录明文的敏感数据(如口令、会话标识jsessionid等), 防止敏感信息泄漏。
7.禁止带有敏感数据的Web页面缓存:带有敏感数据的Web页面都应该禁止缓存,以防止敏感信息泄漏或通过代理服务器上网的用户数据互窜问题。
pikachu
查看源码
输入账号密码成功登录
观察URL
登录前http://127.0.0.1/pikachu/vul/infoleak/findabc.php
登录后http://127.0.0.1/pikachu/vul/infoleak/abc.php
我们尝试在登录页面删去find看看是否判断我们登录,答案是登录成功