宝塔面板后台加密分析

1. 什么是宝塔面板

宝塔面板是一款服务器管理软件,以操作简便,配置简单而闻名,它的优点有但不限于:可以通过web端直接管理服务器;拥有图形界面;还可一键配置服务器环境......林林总总不一而足,总结起来一句话:即对新手极度友好,又可满足许多老鸟的需求

2. 宝塔面板后台能否破解?

既然宝塔面条如此"傻瓜",那么破解它是不是"轻而易举"呢?我相信有一部分人会产生这样的想法,因为在这些人眼中:简单=遍布漏洞;简单=随意渗透。在此,先说一下我的结论:宝塔面板很安全,至少破解的困难程度超乎大多数人的想象

3. 宝塔面板后台加密方式分析

宝塔面板后台给渗透人员的第一道关卡就是…

3.1 入口校验

当渗透人员成功拿到IP地址和端口并输入后,发现如下的情况:
图片
IP和端口都没错,为什么会出现这种界面呢?其实是这样的,每一个宝塔面板的链接除了有IP地址和端口外,还有一个八位随机英文字符串(即"入口"地址),
没有这个"入口"就无法进入真正的后台面板,而这个地址通过扫描的方式很难扫出来,要是想扫到的话,可能需要那天外来的"运气"了。

3.2 后台面板的初始的登录账号密码是八位英文加数字随机字符串

成功安装宝塔面板后,宝塔会给出一个随机的八位英文加数字的账号和密码
图片
( 为了安全,将敏感部位涂抹掉了,见谅)

这便是第二道关卡,随机的字符串会增加暴力破解的难度,对于一般的渗透人员来说,没有强力的“字典”和性能不错的计算机,是无法破解的。

3.3 传输过程中,账号密码加密传输

通过3.1我们可以看到宝塔面板的后台链接是http协议,那么渗透人员肯定会想到:它的数据包应该是明文传送的,那么抓到包之后直接进行查看,或者尝试暴力破解是否可以呢?答案是:仍然困难重重

首先进入登录面板:
图片
输入账号密码,同时抓包分析一下:
图片
图片
我们可以看到,前端在传输的过程当中,是将用户名与密码使用进行加密后才传输到后端的

怎么加密的呢?查看网页源代码后我们可以看到:
图片
var data = { username:md5(username), password:md5(md5(password) + ‘’+ ‘_bt.cn’)}

我们逐步分析一下:账号的加密方式为将输入的username(账号)进行MD5加密,之后传输给后端
而密码的加密方式则更加复杂,首先进行MD5加密一次,加密后的字符串与“_bt.cn”进行拼接,拼接完成后再次进行MD5加密,所得数据再传输给后端

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

3.4 后端加密存储账号密码

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


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

为什么这里会不一样呢?其实这是宝塔面板的后台在接收到前端传输回来的数据后又进行了一次加密,其加密过程为:
将接收到的数据与salt值进行拼接,得到的值再次进行MD5加密,之后再将得到的值存储进数据库

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

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

3.5 总结

综上所述,想要成功渗透进入宝塔面板后台要面临四道关卡,以及账号数据一重加密传输,密码数据四重加密等重重难关。由此可见宝塔面板的安全性足以让大部分初级的运维人员高枕无忧了。

3 Likes

说实在的。我都想赞你一下了

1 Like

简单的说宝塔密码加密方式: md5(md5(md5(password)+'_bt.cn')+salt)

求赞, :grin:

bt老哥给研究bt的人点赞 :rofl: