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.hqwc.cn/news/326733.html

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

相关文章

百度地图打点性能优化(海量点、mapv)

文章目录 百度地图打点性能优化(海量点、mapv)原因优化方法数据获取方面页面加载方面 参考资料 百度地图打点性能优化(海量点、mapv) 原因 在百度地图api中,默认的点是下图的红点 而这种点位比较多的时候&#xff0c…

《程序员的自我修养--链接,装载与库》

第一章:温故而知新 过度优化的问题: 我们知道volatile关键字可以阻止过度优化,因为它可以完成两件事: 阻止编译器为了提高速度将一个变量缓存到寄存器而不写回阻止编译器调整操作volatile变量的指令顺序 然而,在优…

【开源】基于JAVA的中小学教师课程排课系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 角色管理模块2.2 课程档案模块2.3 排课位置模块2.4 排课申请模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 角色表3.2.2 课程表3.2.3 排课位置表3.2.4 排课申请表 四、系统展示五、核心代码5.1 查询课程5.2 新增课…

【Golang】Json 无法表示 float64 类型的 NaN 以及 Inf 导致的 panic

【Golang】Json 无法表示 float64 类型的 NaN 以及 Inf 导致的 panic 原因 golang 服务出现了 panic,根据 panic 打印出的堆栈找到了问题代码,看上去原因是:json 序列化时,遇到了无法序列化的内容 [panic]: json: unsupported …

转后端一年半双非本科Java无实习进大厂,给双非朋友经验分享

背景介绍 B站有详细视频,同名搜索即可。 今天文章想分享的是我踩过的坑以及那些做的是值得大家参考。 有需要就加V: zhazhagao_ 进了快手(如果你觉得不是大厂那就不是!): 真双非本科: 安徽某双非无实习: 因为编程语言问题,去过之后发现不喜欢…

Spark 运行架构

Spark 框架的核心是一个计算引擎,整体来说,它采用了标准 master-slave 的结构。 如下图所示,它展示了一个 Spark 执行时的基本结构。图形中的 Driver 表示 master, 负责管理整个集群中的作业任务调度。图形中的 Executor 则是 sla…

netcore html to pdf

一、新建项目&#xff1a;QuestPDFDemo <PackageReference Include"NReco.PdfGenerator" Version"1.2.1" /> 二、上代码 using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging;using QuestPDFDemo.Models; using System; using Sys…

WEB 3D技术 three.js 包围盒

本文 我们来说 包围盒 如下图所示 就是一个方框 框住我们整个物体 它的作用 比较明显的就是 当用户点击某个物体 我们用包围盒套住 用户能够很直观的知道自己当前选中的物体是哪一个 还有就是 比如 我们物体做的比较复杂 是非常多顶点构建的 那么 我们判断它有没有和其他物体…

第14课 用openCV数豆豆

除了检测运动&#xff0c;openCV还能做许多有趣且实用的事情。其实openCV和FFmpeg一样都是宝藏开源项目&#xff0c;貌似简单的几行代码功能实现背后其实是复杂的算法在支撑。有志于深入学习的同学可以在入门后进一步研究算法的实现&#xff0c;一定会受益匪浅。 这节课&#…

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

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

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

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

C++面试宝典第14题:结构体和位域对齐

题目 阅读下面的代码段,并给出程序的输出(使用Visual Studio 2019编译器)。 #include <stdio.h> #include <string.h>struct TData {int a:3;int b:3;int c:3;int d:6;double e;short f; };int main() {printf("%d\n", (int)sizeof(TData));TData da…