宝塔面板系统是一款非常好用的网站服务器管理控制面板,可以让大家不用记Linux系统的命令,就可以轻松的管理Linux服务器,可视化界面操作,非常方便。

从官网了解到宝塔面板目前拥有200万用户,安装次数已经超过600 万次,被1000多个中大型企业及政企选择使用,堡塔已经成为服务器运维软件、搭建网站的不二之选。

成千上万的站长们把网站都架构在宝塔面板之上,如果面板出现了严重漏洞,其危害可想而知。

小编了解到在2020年的8月份,Linux面板7.4.2 版本/Windows面板6.8 版本的宝塔面板被曝最新严重数据库安全漏洞。借助这个漏洞,可以直接绕过身份验证进入网站服务器的数据库,一旦被黑客盯上有可能被直接删库破坏所有数据,造成网站瘫痪。随后开发商堡塔安全也紧急发布通知短信告知,让所有用户升级到最新版本。

用过宝塔面板灯小伙伴都知道,宝塔后台是通过网页版进入并管理的,那宝塔是如何保证后台不被破解的呢?

通过测试,宝塔面板的后台链接是http协议,通过后台抓包,我们可以看到,前端在传输的过程当中,是将用户名与密码使用进行加密后才传输到后端的。

我们逐步分析一下:账号的加密方式为将输入的username(账号)进行MD5加密,之后传输给后端。

而密码的加密方式则更加复杂,首先进行MD5加密一次,加密后的字符串与“_bt.cn”进行拼接,拼接完成后再次进行MD5加密,所得数据再传输给后端

由此得出,想在前端通过抓包并穷举的方式来破解账号密码,难如登天。就算拿到了该包,里面存储的信息也是加密后的数据,没有多大用处。

前端的安全保证了,后端怎么样呢?宝塔的后台的存储也是安全的么?那么一起进入后台,找到数据库的配置文件,看一下:

我们可以看到数据库存储的密码和前端传输回来的密码不一样,并且还有一个salt值。

为什么这里会不一样呢?其实这是宝塔面板的后台在接收到前端传输回来的数据后又进行了一次加密,其加密过程为:

将接收到的数据与salt值进行拼接,得到的值再次进行MD5加密,之后再将得到的值存储进数据库

那么此时可能又会有一个问题:前后端的数据不一致,如何进行校验呢?原理也很简单:前端传回来的数据再次进行上述加密操作,如果得到的值与数据库里的相符,即校验成功(密码正确)。

后端数据库的加密存储,可以避免以下这种情况,例如有人拿到了该数据库的文件,并成功读取了该文件,此人也没有可能拿到真正的密码。

进入宝塔面板后台要经过多个关卡,以及账号数据一重加密传输,密码数据四重加密等重重难关。由此可见宝塔面板的安全性足以让大部分初级的运维人员高枕无忧了。