宝塔面板后台登录加密机制剖析
背景:某些渗透测试中发现对方服务器装了宝塔面板,破解或者绕过登录。(服务器在后面)
今天我们来看看 宝塔究竟有多么安全?
首先提一手环境。
宝塔环境: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加密后得到发送包显示
POST
username:d39239c16cbcac40c76397957ee0b050
password:e951275142d529000f4a74f231480880
从后台数据库中得到的数据
username:geekyxs
password:e68f9ed1a81c1166cc5139618f8d89ec
salt:geekyxs
我们都知道,我们传输过去的东西,要和后台的内容相等,很明显两者并不相等,对不对,那么宝塔是怎么对这个信息进行一个加密并验证的呢?
来
我们
来看看加密
geekyxs加密后,d39239c16cbcac40c76397957ee0b050
HZAcb5HQ加密后,d5026ef762cfe9369dbc769eb4e4a6f1
d5026ef762cfe9369dbc769eb4e4a6f1_bt.cn再加密等到e951275142d529000f4a74f231480880
所以说,如果有人在宝塔的js面板中拿到你的登录信息,那么他也是没有办法直接对0的账号进行登录的。
但是,如果我们想想,宝塔面板后台登录有没有破解的办法,或许一般情况不能使用,但是特殊情况下,我们不妨这么想想。
**比如:**你能够获得,宝塔的default.db数据库,你可以直接构造一个相同的数据库,通过php上传直接将其文件进行一个覆盖。账号和密码都是你自己设置的。
哈哈哈哈哈,真是太聪明了吧。
不过是yy的啦,不要当真,认真你就输了。
补:后台加密过程
1.遇到需要绑定手机号的情况,直接在访问的地址后面加上 /site
可以直接绕过手机号绑定。
2.数据库里面存储的账号密码和salt是什么?
后台对账号密码进行加密后的数据库,C:/BtSoft/panel/data/default.db(sqllite数据库,从宝塔面板的开发语言python,使用的flask开发,python一般使用轻量级数据库进行使用)