11.13 文件/数据库备份
网站源码备份和数据库备份是非常常见的一个功能,也是非常容易出现安全问题的一个功能,如图 11-24 所示为 discuz 数据库备份功能,需要配置多个选项,图中为 discuz 后台数据库导出功能。
通常文件和数据库备份功能容易出现的问题有如下几种情况:
1)未授权访问和越权访问。未授权访问体现在这个备份功能直接在不登录或登录验证存在漏洞的情况下可以直接使用,以及存在 CSRF 漏洞可以直接劫持管理员账号进行备份,discuz 的 CSRF 备份数据漏洞就是非常好的一个例子。
2)备份文件名可预测。备份文件名要么是备份的时候人工设置的,要么是自动生成的,如果是人工设置的,在使用完这个功能后可能存在忘记删除备份文件,导致恶意用户可以利用枚举的方式扫描到这个备份包。而自动生成则可能存在生成的文件名比较弱的问题,比如生成的文件名为当前日期,只要简单遍历下即可扫描到,非常不可靠。
3)生成的文件可利用 Web 中间件解析漏洞执行代码。
渗透测试中写入 webshell 经常会用到 Web 中间件的解析漏洞,而当备份功能可以自定义文件名的时候,只要在数据库中写入 PHP 代码,然后在 IIS 下时,利用数据库备份功能生成类似“1.asp;.jpg”文件名的文件,到 Apache 的下就备份成文件名为“1.php.zip”这样的文件,就可以直接执行我们在数据库中插入的代码。
图 11-24
针对如上的分析,我们来总结一下怎么设计备份功能:
1)进行权限控制,由于备份功能是一个非常高危敏感的功能,一定要限制高权限才能使用。
2)文件名随机生成,不可预测,可以把当前时间戳加上 6 位以上字母和数字随机生成的字符串进行 md5 来做为文件名。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论