工作笔记(二)

嗯~又是好久没写博客了,工作倒是不忙,就是懒得写……

 

今天朋友让我帮忙看个 bug,虽然最后 bug 并没找到(程序太乱,还涉及到 ucenter 对接),不过倒是发现了几个很常见的漏洞,很想吐槽他们的运维(兼职的)。

首先,一堆弱密码,连数据库都是,这点就不细说了,无力吐槽。

可能是为了做备份,服务器上有个 config.php.bak 文件。好吧,做备份是个好习惯,但备份不是这么做的啊……像 apache 和 nginx 这样的服务器,是根据文件扩展名来处理文件的,扩展名为 php 的文件会交给 php 来处理,但加上 .bak 后,服务器会以为这是静态文件,从而可以直接读取文件内容,这样,数据库的用户名和密码就全暴露了。所以,做备份的时候,应该命名为 config.bak.php,而不是 config.php.bak。当然,也可以在服务器设置禁止访问所有扩展名为 bak 的文件,nginx 的配置为:

location ~ .*\.bak$ {
    deny all;
}

该服务器上还有个文件是 config.php~,这种文件一般是编辑器产生的临时文件(vim 会产生 文件名.swp 的临时文件),因为非正常退出(比如 ssh 断掉)而没有被删除,这种文件同样很危险,因为他们同样会被服务器识别成静态文件(config.php~ 的扩展名是 php~,不是 php),可以直接读取内容,所以在非正常退出编辑器后,一定要检查是否有临时文件存在。也可以参考上面的配置,禁止访问相应文件。

另外,在 *nix 中,像 .htaccess、.htpasswd 和 .DS_Store 等以 . 开头的文件是隐藏的,用 ls 命令是不可见的,要用 ls -A 才可以看见,但是却可以访问,而这些文件对用户往往不需要读取这些文件,所以我们可以禁止访问这些文件。nginx 的配置为:

location ~ /\. {
    deny all;
}