简介
项目地址: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,无法通过jwt伪造登录。
下载发行版:
wget -P /opt/ https://github.com/tdragon6/Supershell/releases/download/v2.0.0/Supershell.tar.gz
解压:
cd /opt
tar zxvf Supershell.tar.gz
cd Supershell
修改配置文件
修改默认密码和jwt盐
Supershell根目录下config.py默认内容如下
用python生成新密码的md5,P@ssW0rd修改成自己的密码
import hashlib
hashlib.md5('P@ssW0rd'.encode('utf-8')).hexdigest()
用secrets生成jwt加盐密钥
impoty secrets
secrets.token_hex(16)
最终文件如下:
'''用户配置页
'''# web登录和会话配置信息
user = 'admin'
pwd = '5ca33d221fd09f16c1ecba9c1aadc3eb' # 明文密码 P@ssW0rd 的md5# jwt加密盐
global_salt = '1a632e90f508692426baa98ca832c200' # 必须修改,不然可以伪造jwt token直接登录# 会话保持时间,单位:小时
expire = 48# 共享远控shell的共享密码
share_pwd = '5ca33d221fd09f16c1ecba9c1aadc3eb' # 明文密码 P@ssW0rd 的md5# 共享shell会话保持时间,单位:小时
share_expire = 24
修改默认端口
修改docker-compose.yml文件,在第七行可以看到默认端口是8888,这里修改成30100这种不常用端口
设置Nginx基础认证
进入volume/nginx
目录
用 htpasswd 生成认证文件,这里改成自己想用的账号密码
htpasswd -nbm admin password > admin.pwd
修改default.conf
在location /
下面添加下面内容
auth_basic "please login";
auth_basic_user_file /etc/nginx/admin.pwd;
再次修改docker-compose.yml文件
在第十三行后面添加下面内容
- ./volume/nginx/admin.pwd:/etc/nginx/admin.pwd
效果
用docker-compose up -d
启动
访问30100端口,效果是这样的,没有任何supershell的特征
输入正确密码才会进入SuperShell界面
这里由于刚才修改默认账号密码和jwt盐,所以无法被暴力破解和jwt伪造
输入正确账号密码即可登录
可以正常上线主机