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伪造

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

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

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

可以正常上线主机

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/601690.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Java EE初阶六】多线程案例(单例模式)

1. 单例模式 单例模式是一种设计模式,设计模式是我们必须要掌握的一个技能; 1.1 关于框架和设计模式 设计模式是软性的规定,且框架是硬性的规定,这些都是技术大佬已经设计好的; 一般来说设计模式有很多种,…

谈谈Mongodb insertMany的一些坑

概述 Mongodb提供了多种方法向集合中插入数据 插入一条数据 db.collection.insertOne() 插入多个文档 db.collection.insertMany() 更新集合中不存在的文档数据,指定{upsert: true}时插入数据 db.collection.updateOne() db.collection.updateMany() db.coll…

Go语言之父:开源14年,Go不止是编程语言,究竟做对了哪些?

提及编程语言,2023 年,除了老牌的 C 和新晋之秀 Rust 热度最高之外,就要数 Go 了。 从 2009 年由 C 语言获取灵感而发布,到如今风靡已久的高性能语言,Go 已经走过了 14 个年头。 “Go是一个项目,不只是一门…

基于ssm的智慧社区电子商务系统+vue论文

目 录 目 录 I 摘 要 III ABSTRACT IV 1 绪论 1 1.1 课题背景 1 1.2 研究现状 1 1.3 研究内容 2 2 系统开发环境 3 2.1 vue技术 3 2.2 JAVA技术 3 2.3 MYSQL数据库 3 2.4 B/S结构 4 2.5 SSM框架技术 4 3 系统分析 5 3.1 可行性分析 5 3.1.1 技术可行性 5 3.1.2 操作可行性 5 3…

Go语言中的init函数的执行时机

init函数的执行时机 这个涉及到 init 函数的作用和执行顺序相同个文件和不同文件中以及在不同的包中init的执行顺序go文件初始化的顺序 一、init 函数的作用和执行顺序 作用 init 函数是用于程序执行前做包的初始化的函数,比如初始化包里面的一些变量等等通常在…

HTML5大作业-精致版个人博客空间模板源码

文章目录 1.设计来源1.1 博客主页界面1.2 博主信息界面1.3 我的文章界面1.4 我的相册界面1.5 我的工具界面1.6 我的源码界面1.7 我的日记界面1.8 我的留言板界面1.9 联系博主界面 2.演示效果和结构及源码2.1 效果演示2.2 目录结构2.3 源代码 源码下载 作者:xcLeigh …

从零学Java 包装类

Java 包装类 文章目录 Java 包装类1 什么是包装类?2 为什么需要包装类?3 包装类对应4 包装类的基本操作4.1 装箱4.2 拆箱4.3 自动装箱/拆箱面试题整数缓冲区 5 包装类的类型转换5.1 字符串转基本数据类型5.2 基本数据类型转字符串5.2.1 方法一: 号字符串拼接5.2.2 方法二: 使…

在MS中基于perl脚本实现氢键统计

氢原子与电负性大的原子X以共价键结合,若与电负性大、半径小的原子Y(O F N等)接近,在X与Y之间以氢为媒介,生成X-H…Y形式的一种特殊的分子间或分子内相互作用,称为氢键。 氢键通常是物质在液态时形成的&…

【华为OD真题 Python】解密犯罪时间

文章目录 题目描述输入描述输出描述示例1输入输出说明示例1输入输出说明示例2输入输出说明备注代码实现题目描述 警察在侦破一个案件时,得到了线人给出的可能

第1章 线性回归

一、基本概念 1、线性模型 2、线性模型可以看成:单层的神经网络 输入维度:d 输出维度:1 每个箭头代表权重 一个输入层,一个输出层 单层神经网络:带权重的层为1(将权重和输入层放在一起) 3、…

数据库设计——DML

D M L \huge{DML} DML DML:数据库操作语言,用来对数据库中的数据进行增删改查。 增(INSERT) 使用insert来向数据库中增加数据。 示例: -- DML : 数据操作语言 -- DML : 插入数据 - insert -- 1. 为 tb_emp 表的 us…

Kubernetes二进制部署 单节点

一、环境准备 k8s集群master1:192.168.229.90 kube-apiserver kube-controller-manager kube-scheduler etcd k8s集群node1: 192.168.229.80 kubelet kube-proxy docker flannel k8s集群node2: 192.168.229.70 kubelet kube-proxy docker flannel 至少2C2G 常见的k…

Flutter3.X基础入门教程(2024完整版)

Flutter介绍: Flutter是谷歌公司开发的一款开源、免费的UI框架,可以让我们快速的在Android和iOS上构建高质量App。它最大的特点就是跨平台、以及高性能。 目前Flutter已经支持 iOS、Android、Web、Windows、macOS、Linux的跨平台开发。 教程所讲内容支持…

独立式键盘控制步进电机实验

#include<reg51.h> //包含51单片机寄存器定义的头文件 sbit S1P1^4; //将S1位定义为P1.4引脚 sbit S2P1^5; //将S2位定义为P1.5引脚 sbit S3P1^6; //将S3位定义为P1.6引脚 unsigned char keyval; //储存按键值 unsigned char ID; …

bat批处理文件_命令汇总(2)

文章目录 1、换行2、返回上一级目录cd..3、隐藏指令回显echo off4、开启指令回显echo on5、用关闭echo off指令本身的回显6、echo提示信息 1、换行 cd.. echo. echo. echo. pause2、返回上一级目录cd… 3、隐藏指令回显echo off echo off echo hello1 echo hello2 pause4、开…

tomcat session cookie值设置逻辑

tomcat session cookie 值设置&#xff0c;tomcat jsessionid设置 ##调用request.getSession() Controller RequestMapping("/cookie") public class CookieController {RequestMapping("/tomcatRequest")ResponseBodypublic String tomcatRequest(HttpS…

软件测试|什么是Python构造方法,构造方法如何使用?

构造方法&#xff08;Constructor&#xff09;是面向对象编程中的重要概念&#xff0c;它在创建对象时用于初始化对象的实例变量。在Python中&#xff0c;构造方法是通过特殊的名称__init__()来定义的。本文将介绍Python构造方法的基本概念、语法和用法。 什么是构造方法&…

轻松获取CHATGPT API:免费、无验证、带实例

免费获取和使用ChatGPT API的方法 快速开始&#xff1a;视频教程 章节一&#xff1a;GPT-API-Free开源项目介绍 GPT-API-Free 是一个开源项目&#xff0c;它提供了一个中转API KEY&#xff0c;使用户能够调用多个GPT模型&#xff0c;包括gpt-3.5-turbo、embedding和gpt-4。这…

记一次服务器被入侵的排查过程

起因 阿里云安全中心报告了告警信息&#xff0c;同时手机短信、邮件、电话也接收到了来自阿里云的风险通知&#xff0c;感觉这方面阿里云还是不错。 排查及解决过程 这条wget指令究竟是怎么被运行的 我无法定位到攻击人员是通过什么样的方式让我的java程序执行了wget这条指…

JavaScript中绑定事件的方法

在JavaScript中&#xff0c;绑定事件的方法主要有三种&#xff1a; 直接在HTML元素中通过onclick&#xff0c;onload等属性直接绑定事件处理函数。使用DOM0级事件绑定&#xff0c;即直接在JavaScript代码中通过element.onclick function()或者element.addEventListener(click…