宝塔面板后台登录加密机制剖析

背景:某些渗透测试中发现对方服务器装了宝塔面板,破解或者绕过登录。(服务器在后面)

今天我们来看看 宝塔究竟有多么安全?

首先提一手环境。

宝塔环境:LNMP(Lunix、nginx、mysql、php)

不多说,直接那我们的服务器开刀。

宝塔后台地址:http://81.68.75.179:8888/KxlzRzNJ

ip+8888/8位随机字符串

不是我给你,你要拿到地址很难,一等安全

登录

username:geekyxs

password:HZAcb5HQ

加密算法js文件(重要部分)

var data = { username: md5(username), password: md5(md5(password) + '' + '_bt.cn'), code: code,cdn_url:$("#static_cdn").val() }

通过登录js加密后得到发送包显示

宝塔面板 docker部署redis 宝塔面板 docker部署安全吗_宝塔面板 docker部署redis

http://81.68.7.179:8888/login

POST

username:d39239c16cbcac40c76397957ee0b050

password:e951275142d529000f4a74f231480880

从后台数据库中得到的数据

宝塔面板 docker部署redis 宝塔面板 docker部署安全吗_数据库_02

username:geekyxs

password:e68f9ed1a81c1166cc5139618f8d89ec

salt:geekyxs

我们都知道,我们传输过去的东西,要和后台的内容相等,很明显两者并不相等,对不对,那么宝塔是怎么对这个信息进行一个加密并验证的呢?

我们

来看看加密

宝塔面板 docker部署redis 宝塔面板 docker部署安全吗_数据库_03

geekyxs加密后,d39239c16cbcac40c76397957ee0b050

HZAcb5HQ加密后,d5026ef762cfe9369dbc769eb4e4a6f1

d5026ef762cfe9369dbc769eb4e4a6f1_bt.cn再加密等到e951275142d529000f4a74f231480880

所以说,如果有人在宝塔的js面板中拿到你的登录信息,那么他也是没有办法直接对0的账号进行登录的。

但是,如果我们想想,宝塔面板后台登录有没有破解的办法,或许一般情况不能使用,但是特殊情况下,我们不妨这么想想。

**比如:**你能够获得,宝塔的default.db数据库,你可以直接构造一个相同的数据库,通过php上传直接将其文件进行一个覆盖。账号和密码都是你自己设置的。

哈哈哈哈哈,真是太聪明了吧。

不过是yy的啦,不要当真,认真你就输了。

补:后台加密过程

1.遇到需要绑定手机号的情况,直接在访问的地址后面加上 /site

宝塔面板 docker部署redis 宝塔面板 docker部署安全吗_python_04

可以直接绕过手机号绑定。

2.数据库里面存储的账号密码和salt是什么?

后台对账号密码进行加密后的数据库,C:/BtSoft/panel/data/default.db(sqllite数据库,从宝塔面板的开发语言python,使用的flask开发,python一般使用轻量级数据库进行使用)