上一篇文章提到一个宝塔账号维权的思路,本来这篇文章到此就结束了,但昨晚群里有师傅提到该思路只能用于旧版本,于是麋鹿就写了一篇续集,谈一下后续版本如何继续使用该思路
先来看一下github上宝塔的更新日志,7.9.6里提到做了限制只允许id=1的用户登录
看一下这7.9.6和7.9.5版本的Comparing changes
定位到panel/class/userlogin.py文件
怕有些读者不熟悉上图(patch)是什么意思,麋鹿来解释一下
这张图片显示的是该文件在 GitHub 上的7.9.6和7.9.5版本之间的差异。红色部分代表被移除的代码,绿色部分代表新增的代码。或者换一种说法行头的+
or -
符号分别表示该行代码是新增还是移除。
那我们来解读一下具体的差异
1.红色代码:
public.chdck_salt()
sql = db.Sql()
user_list = sql.table('users').field('id,username,password,salt').select() userInfo = None
for u_info in user_list:
if public.md5(u_info['username']) == post.username:
userInfo = u_info
这段代码会获取default.db里 users
表中所有用户的 id, username, password, salt
字段,然后加密,最后去循环检查users表里是否与提交的用户名相匹配。
2,绿色代码
user_plugin_file = '{}/users_main.py'.format(public.get_plugin_path('users'))
if os.path.exists(user_plugin_file):
user_list = sql.table('users').field('id,username,password,salt').select()
for u_info in user_list:
if public.md5(u_info['username']) == post.username:
userInfo = u_info
else:
userInfo = sql.table('users').where('id=?',1).field('id,username,password,salt').find()
这部分代码添加了一个检查,如果
文件(这个文件就是上面说到的实现多用户的插件)存在,则执行与红色代码相同的逻辑。users_main.py
如果 users_main.py
文件不存在,则直接查询 id
为 1
的用户信息。就是说,如果没装这个插件,就只有 id
为 1
的用户可以登录。
那么如果我们在该目录创建该py文件,这种情况是否能还能登录我们的后门账号的?
在尝试这个问题前,我们需要搞清楚该py文件的地址,也就是读懂下面这行代码
user_plugin_file = '{}/users_main.py'.format(public.get_plugin_path('users'))
首先,在Python中,大括号 {}
在字符串格式化时用作占位符。使用 .format()
方法,意思就是将大括号中的内容替换为传递给 .format()
方法的参数。
format的意思一目了然就是获取宝塔插件(英文为plugin)里users插件的地址,而宝塔插件的地址为/www/server/panel/plugin
所以第一步
在/www/server/panel/plugin创建一个users文件夹,users里面创建一个users_main.py
cd /www/server/panel/plugin/
mkdir users
cd users/
touch users_main.py
我已经创建好了,如下图空白的
第二步
在default.db里加一个后门,宝塔算法在上一篇文章里提到过,没看过或者还不到的读者可以回头看一下,文章链接如下
https://mp.weixin.qq.com/s?__biz=MzkwNjUwNTg0MA==&mid=2247490207&idx=1&sn=fb4213eecd00d529a24ac398f2c1c3bd&chksm=c0e62180f791a89601b1a3e481726c6f81ff75de80555455ef0352e02723209f353bc3321a43&token=205949372&lang=zh_CN#rd
看一眼db
第二行为我们的后门账号,账号为admin,密码明文为123456
第三步
升级宝塔到7.9.6版本,前一篇文章也讲过,故略过这一步
第四步
用后门账号密码登录
进来了
麋鹿测试到宝塔面板7.9.10,这个后门还能用
但是最新版本8.0.4就这个思路就不行了
至于新版本如何延续该维权思路,目前麋鹿不方便公布,不过在未来某个合适的时候麋鹿会发文分析,敬请期待。
ps:授人以鱼不如授人以渔,希望大家能自己去读一下新版本关于加密的代码,动动手就会一目了然的。
最后祝各位同仁冬至欢愉,常安常乐。
★
欢 迎 加 入 星 球 !
代码审计+免杀+渗透学习资源+各种资料文档+各种工具+付费会员
进成员内部群
星球的最近主题和星球内部工具一些展示
加入安全交流群
关 注 有 礼
还在等什么?赶紧点击下方名片关注学习吧!
推荐阅读