A-A+

SuperShell溯源反制-默认密钥/密码利用

2023年10月08日 文章转载 暂无评论 阅读 4,685 views 次

介绍:

https://github.com/tdragon6/Supershell

Supershell是一个集成了reverse_ssh服务的WEB管理平台,使用docker一键部署(快速构建),支持团队协作进行C2远程控制,通过在目标主机上建立反向SSH隧道,获取真正的完全交互式Shell,同时支持多平台架构的客户端Payload,客户端Payload的大小为几MB,可以理解为在目标主机上部署了一个几MB的ssh服务器,然后获取了一个ssh shell;Supershell集成了客户端管理、客户端Payload生成、交互式Shell、文件管理、文件服务器、内存注入、安装服务、迁移guid、本地原生sftp命令传输文件、本地ssh隧道端口转发和备忘录等功能。

公网分布

 

图片

漏洞利用

SuperShell部署时存在以下配置信息:

图片

其中 user/pwd 为web登录管理员信息,默认为 tdragon6/tdragon6;global_salt 为JWT加密salt,默认为Be sure to modify this key,share_pwd 为远控shell共享密钥,默认为tdragon6。

其中user/pwd几乎人人都会修改,global_salt由于注释中的提醒,只有少数马虎的安全人员会忘记修改,而share_pwd由于其作用模糊,在日常使用中几乎不会用到,故很容易被管理员忽视,然而由于SuperShell的设计缺陷,三者任一使用默认配置都会导致Supershell存在接管风险。

默认user/pwd

直接 tdragon6/tdragon6 web登录

默认jwt token

查看登录逻辑:

图片

get_jwt_token函数:

图片

即用户成功登录后会将用户名与有效时间生成JWT令牌,存储在cookie中作为登录凭据。

使用默认salt伪造令牌:get_jwt_token("admin", "Be sure to modify this key", 999999)

图片

如服务端采用同样salt即可绕过登录:

图片

图片

默认share_pwd

在测试jwt伪造时,发现服务端并未校验用户名有效性,即JWT令牌合法即可获取管理员权限,查看共享shell鉴权逻辑:

图片

发现 share_password 有效后会使用相同salt生成JWT令牌存储在share_token中,用户名为anonymous,而前述可知用户名不影响管理员鉴权,故可直接将cookies中的share_token替换为token,即可绕过登录:

图片

 

图片

 

原文链接:https://mp.weixin.qq.com/s/kspLJYFfB6tD7d7Pao94Lg

标签:

给我留言