声明
本文中提及的方式仅是为了便于服务器取证的研究,仅适用于无法出网的真实取证鉴定情况。
请不要在生产环境随意修改宝塔服务的任何文件!
分析
目前,宝塔面板已经强制要求绑定手机号。这给取证工作带来很大的不便,尤其是在实际工作中,服务器是不可以连接互联网的,因此必须解决掉这个问题。好在我们知道,宝塔面板是使用python开发的,我们可以轻松地修改代码。
先从路由入手,路由是bind
vscode连上服务器,选/www/server/panel
作为工作目录,搜索/bind
在/BTPanel/__init__.py
中找到路由定义,从这个写法能看出宝塔面板的服务端用的的Django
框架
直接看一眼顶针的is_bind
函数,位于public
下,这是自己写的包,也就是/class/public.py
找一下函数,明显发现是获取了get_user_info
的返回值
看一眼get_user_info
,具体逻辑就是从宝塔面板服务端的目录下的/data/userInfo.json
读取数据,如果文件不存在就返回一个空字典,存在就拿值。所以我们只需要给值就可以了
先随意给值,添加到文件/www/server/panel/data/userInfo.json
,重启宝塔
{
"uid":1,
"address":"",
"access_key":"",
"username":"WXjzc",
"serverid":""
}
现在就不会强制要求绑定手机号了,但是获取软件列表会失败,问题出在get_cloud_list
这个函数
定位代码,尝试直接注掉看看
抛了个KeyError
,看了一下是后面字典里给list
赋值了
加一句softList.update({'list':[]})
重启后报下一个错,这是专业版判断的字段,为0时是永久专业版,这个值同样是在get_cloud_list
里给的,应该是请求网络时拿到的,不过我们没有登录,直接赋一个上去
重启之后就再也没有弹窗了,缺点是没法拿到软件列表
总结
总结一下修改的点
添加文件/www/server/panel/data/userInfo.json
,并写入以下内容
{
"uid":1,
"address":"",
"access_key":"",
"username":"",
"serverid":""
}
修改文件/www/server/panel/class/panelPlugin.py
,将如下代码注释或删除
if not 'list' in softList:
if 'msg' in softList:
raise public.PanelError(softList['msg'])
else:
raise public.PanelError('获取插件列表失败!')
在上述代码的下方添加如下代码
softList.update({'list':[]})
softList.update({'pro':0})
随后重启宝塔面板服务
__EOF__
本文作者: WXjzc 本文链接: https://www.cnblogs.com/WXjzc/p/17738053.html 关于博主: 评论和私信会在第一时间回复。或者直接私信我。 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处! 声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。