Supershell防溯源反制配置

简介

项目地址: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伪造

输入正确账号密码即可登录

可以正常上线主机

posted @ 2024-01-06 19:47  CVE-柠檬i  阅读(551)  评论(0编辑  收藏  举报