再谈宝塔后门账号维权
2023-12-24 00:0:33 Author: 渗透安全团队(查看原文) 阅读量:20 收藏

上一篇文章提到一个宝塔账号维权的思路,本来这篇文章到此就结束了,但昨晚群里有师傅提到该思路只能用于旧版本,于是麋鹿就写了一篇续集,谈一下后续版本如何继续使用该思路

先来看一下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 文件不存在,则直接查询 id1 的用户信息。就是说,如果没装这个插件,就只有 id1 的用户可以登录。

那么如果我们在该目录创建该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:授人以鱼不如授人以渔,希望大家能自己去读一下新版本关于加密的代码,动动手就会一目了然的。

最后祝各位同仁冬至欢愉,常安常乐。


付费圈子

欢 迎 加 入 星 球 !

代码审计+免杀+渗透学习资源+各种资料文档+各种工具+付费会员

进成员内部群

星球的最近主题和星球内部工具一些展示

加入安全交流群

                               

关 注 有 礼

关注下方公众号回复“666”可以领取一套领取黑客成长秘籍

 还在等什么?赶紧点击下方名片关注学习吧!


干货|史上最全一句话木马

干货 | CS绕过vultr特征检测修改算法

实战 | 用中国人写的红队服务器搞一次内网穿透练习

实战 | 渗透某培训平台经历

实战 | 一次曲折的钓鱼溯源反制

免责声明
由于传播、利用本公众号渗透安全团队所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号渗透安全团队及作者不为承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!
好文分享收藏赞一下最美点在看哦

文章来源: http://mp.weixin.qq.com/s?__biz=MzkxNDAyNTY2NA==&mid=2247513147&idx=1&sn=1478fb87fda11de71b444a4a75cf587d&chksm=c03aa7aa2ba00ea2b604ad45de8bc2fab6915b73a2665815e978611ec39cfa5eddd8bda242cb&scene=0&xtrack=1#rd
如有侵权请联系:admin#unsafe.sh