网络安全02--负载均衡下的webshell连接

news2024/10/6 8:23:51

目录

一、环境准备

1.1ubentu虚拟机一台,docker环境,蚁剑

1.2环境压缩包(文件已上传资源):

二、开始复原

2.1上传ubentu:

2.2解压缩

2.3版本20没有docker-compose手动下载,包已上传资源

​编辑 2.4问题:下载无法连接

2.5解决方法:ubentu上做代理,或xftp自己上传,我这里使用ubentu做代理 

2.6再次下载:

2.7转移目录

2.8给个权限

2.9成功页面:

三、环境搭建完毕,开始跑负载均衡

3.1此环境原理:前端反向代理为nginx,后端两台机子为Tomcat

3.2远端拉取环境:

 3.3开始制作:

 3.4成功结果:只能访问nginx后端18080对外没有映射

3.5蚁剑进行连接

四、情况映射出难点

4.1难点一:

4.2难点二:

4.3难点三:

4.4难点四:

​编辑 4.5最终实现结果:

五、.在web层做一次流量转发

5.1先看两个后端是否可以互通

5.2我们的原理也是如下图:

5.3操作:

 


 

我们以默认的「轮询」方式来做演示。演示的环境包已经上传资源叫AntSword-Labs

一、环境准备

1.1ubentu虚拟机一台,docker环境,蚁剑

apt-get install docker.io

96be83ce1d1d43e8902b1453fea3a533.png

1.2环境压缩包(文件已上传资源):

8c1fcdcaba974e8587560834ffae6fcd.png

二、开始复原

2.1上传ubentu:

3ab4bcb841c8407f9998122563b430e2.png

2.2解压缩

unzip AntSword-Labs-master.zip

0fef2cde358f4dc48ea6ec9d4f969346.png 

2.3版本20没有docker-compose手动下载,包已上传资源

dockerfile一次下载一个镜像,docker-compose一次下载多个镜像

81a1d47c8c674678bf3412c551d24436.png 2.4问题:下载无法连接

wget https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-linux-x86_64

e4b2b473a886451ca1e8f3e8374be589.png

2.5解决方法:ubentu上做代理,或xftp自己上传,我这里使用ubentu做代理 

apt-get install proxychains

a2a755d4b3444c968b36c9ac741d6515.png

vim /etc/proxychains.conf

 更换完毕,访问谷歌ok

d11db1aaf0b1495690dff23a4d359522.png

2.6再次下载:

proxychains wget https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-linux-x86_64

2.7转移目录

mv docker-compose /usr/bin

2.8给个权限

 chmod +x /usr/bin/docker-compose

2.9成功页面:

face702647bf4a02af1fdd6377a9d3dc.png 

三、环境搭建完毕,开始跑负载均衡

91bb9ed29bd84bb5b64909b678d6500e.png 

3.1此环境原理:前端反向代理为nginx,后端两台机子为Tomcat

b5fa35a8408c4f5994f7526c86aac5a8.png 

3.2远端拉取环境:

4a2b3961b3a944cebff2076645df9d47.png 

 3.3开始制作:

docker-compose up -d

539b7591a310427990f1d528feaa6d55.png

 3.4成功结果:只能访问nginx后端18080对外没有映射

a9b39c0f23494cfcb175d38ae2702cc1.png

 f443b0e803b84ea28ce2b96d3d296292.png

接下来假设我们在真实的业务系统上,存在一个远程连接漏洞,可以让我们获取 WebShell

看一下是否存在,结果自然存在,而且两台机子都已上传

c0a6fd60b24b4467a01b1401ea9c34bf.png

3.5蚁剑进行连接

在刷新的情况下,其实我们访问后端Tomcat已经飘逸了好几次了

a521fb4c6dc94fb5971dda01db69ab4d.png

1ac7219622ee42af8116e7cfc3bb003c.png 什么情况呢,来看,我新建一个hello文件,因为飘逸无法看到

90727a05624b4808832b38aabf8bba97.png

当我刷新在另一台机子又可以看到:

ddfc02415097462dbe86186c1761c8d2.png 当我们点开文件看见明显报错找不到文件,这便是负载均衡的飘逸,而我们怎么向负载均衡的服务器上传我们的代码也就成为了我们现在所要讨论的难点

34a0a253661f4642afaf9b91f0a553ee.png

四、情况映射出难点

4.1难点一:

我们需要在每一台节点的相同位置都上传相同内容的 WebShell

解决方法:多次保存可以解决此问题

4.2难点二

我们在执行命令时,无法知道下次的请求交给哪台机器去执行

虚拟终端明显可以看到,我们的ip通过负载均衡一直在飘逸

831f770ad8f04da88f42b125f22b6ec2.png

解决:多次执行

4.3难点三:

当我们上传文件时候,一些落第一台机子,一台落第二台

我上传的几MB文件一个在第一个机子一个在第二个机子

bb12ffa5e3e74b43998769f808fc9726.png

我删除也全是分片

1e4a4ab6292b4e3cb6a6d206030b19cd.png解决:上传小一点的工具,其实也能忍 

4.4难点四:

由于目标机器不能出外网,想进一步深入,只能使用 reGeorg/HTTPAbs 等 HTTP Tunnel,可在这个场景下,这些 tunnel 脚本全部都失灵了。

好了,任何方法都没用了,那该怎么办呢?

解决方法:

1.关掉对方一台服务器(作死玩法)

关掉一台,无法飘逸,但是后台监控软件直接报警

2.执行前判断要不要执行

以执行bash我们来举例,在执行前判断一下ip,两个docker镜像中都安装nat-tools,以方便可以使用ifconfig

cd /ant/loadbalance/loadbalance-jsp
docker ps -a
docker exec -it a9f8b08bae21 /bin/bash
apt-get update
apt-get install net-tools

d9a7b2e005194a12af3d1c2bf8ef8e00.png 4.5最终实现结果:

7620b79baf1648a3a3055ac42d11ef12.png

接下来写一个脚本,已到达执行前判断需不需要执行

以这个为基础我们来开始写

787f01fcc5bc4a9991c9595a727f001e.png 当然我们写了shell文件是跟第一次方法一样多次上传,我为了方便就直接从服务器写了

57fa74ed0d3e4cd3a1307036ce25028b.png

#!/bin/bash

MYIP=$(ifconfig | grep "inet 172" | awk '{print $2}' | cut -d'/' -f1)

if [ "$MYIP" = "172.18.0.2" ]; then
    echo "allow command"
    id
else
    echo "try again!"
fi

ecbc0f4024f4483f8aaab9aa09354712.png 最终结果: 

 fcd6ffc02c304167b40f6b765b470677.png

勉强能用,可是,上传文件、HTTP 隧道 这些要怎么解决?  又到我们需要思考的地方了

五、.在web层做一次流量转发

5.1先看两个后端是否可以互通

529ad1255307460ba8fc86e65f128540.png

5.2我们的原理也是如下图:

ae7b2ddd79224fcaa6cf440864c34cdc.png 

5.3操作:

我们先上传一个antproxy.jsp的转发包,资源中我已上传 ,改一下转发地址,然后替换先前蚁剑上传的文件

c984433398324a16bae30a6717981317.png

怎么上传?

蚁剑 

会分片,别传,那怎么办,还记得我们第二个方法的新建文件吗?这里就有作用了,去新建吧,多次保存,两个机子上就都有了

b5eafb6ce4e74ac7b33fb324f26219fc.png

接下来换掉连接数据:

808aadda1c42422c89cf151b7e5d8aad.png 

我们的刷新不再跳转,可见流量是被转发走的

82aa2504fbe3414ba59fba54953c1cbe.png 不管我们怎么刷新,流量都走到0.2上

6269bf1d034e46359b46c4a9ec4fe932.png

 

 

至此,我们对于负载均衡下漏洞上传文件,讨论完毕 

 

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

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

相关文章

netty源码前置一:Nio

NIO算是实现Reactor设计模式(单Selector 单工作线程)底层window用的是select,linux用的是epoll 网络NIO代码实现: public NIOServer(int port) throws Exception {selector Selector.open();serverSocket ServerSocketChannel.…

逻辑回归(Logistic Regression)和正则化

1.分类问题 案例: 在分类问题中,我们尝试预测的是结果是否属于某一个类(例如正确或错误)。分类问题的例子有:判断一封电子邮件是否是垃圾邮件;判断一次金融交易是否是欺诈;之前我们也谈到了肿瘤…

Python网络爬虫实战——实验4:Python爬虫代理的使用

【实验内容】 本实验主要介绍在爬虫采集数据的过程中代理的使用。 【实验目的】 1、掌握代理使用的基本场景; 2、解决IP封锁问题; 3、提高爬虫访问效率; 【实验步骤】 步骤1选择代理服务提供商 步骤2配置爬虫使用代理 步骤3 采集数据生成…

Ubuntu添加AppImage到桌面及应用程序菜单

将AppImage添加到桌面,以PicGo为例 效果: 在桌面创建PicGo.desktop文件,输入以下内容: [Desktop Entry] EncodingUTF-8 TypeApplication #应用名称 NamePicGo #图标路径 Icon/usr/local/AppImage/icons/PicGo.png #启动是否开启…

cmake设置Debug版本和Release版本的输出路径

项目背景:指定可执行文件和动态库输出路径都在bin目录文件夹下,由于项目中存在osg插件,然后我在项目中需要重写osg的插件,这时候就会遇到指定输出路径的问题,由于需要输出到osgPlugins-3.6.5文件夹下,所以使…

嘿嘿,vue之输出土味情话

有点好玩&#xff0c;记录一下。通过按钮调用网站接口&#xff0c;然后解构数据输出土味情话。 lovetalk.vue: <!--vue简单框架--> <template> <!-- 这是一个div容器&#xff0c;用于显示土味情话 --> <div class"talk"> <!-- 当点…

【现代密码学基础】详解完美安全与香农定理

目录 一. 介绍 二. 完美安全的密钥与消息空间 三. 完美安全的密钥长度 四. 最优的完美安全方案 五. 香农定理 &#xff08;1&#xff09;理论分析 &#xff08;2&#xff09;严格的正向证明 &#xff08;3&#xff09;严格的反向证明 六. 小结 一. 介绍 一次一密方案…

正则匹配 | 正则实际应用探索分享

这并不是一篇教正则基础的文章&#xff0c;其正则式不能对您进行使用后的结果负责&#xff0c;请以研究的眼光看待本篇文章。 技术就是懒人为了更好的懒才会想办法搞的东西&#xff0c;我最近因为某些原因需要频繁删除注释 我就想到通过替换的正则功能快速删除文件中的简单注…

Qslog开源库使用

Qslog源码下载地址&#xff1a;https://github.com/victronenergy/QsLog 1.QSLOG使用方式 &#xff08;1&#xff09;源码集成 在你的工程中&#xff0c;直接包含QsLog.pri文件&#xff0c;进行源码集成。当然你也可以包含QsLog.pri后&#xff0c;编译为xx.dll&#xff0c;在…

数据可视化练习

文章目录 试题示例 试题示例 绘制下图所示的表格 根据下表的数据&#xff0c;将班级名称一列作为x轴的刻度标签&#xff0c;将男生和女生两列的数据作为刻度标签对应的数值&#xff0c;使用bar()函数绘制下图所示的柱形图。 方式一 import numpy as np import matplotlib.p…

CUDA编程- - GPU线程的理解 thread,block,grid - 再次学习

GPU线程的理解 thread,block,grid 一、从 cpu 多线程角度理解 gpu 多线程1、cpu 多线程并行加速2、gpu多线程并行加速2.1、cpu 线程与 gpu 线程的理解&#xff08;核函数&#xff09;2.1.1 、第一步&#xff1a;编写核函数2.1.2、第二步&#xff1a;调用核函数&#xff08;使用…

跟着cherno手搓游戏引擎【12】渲染context和首个三角形

渲染上下文&#xff1a; 目的&#xff1a;修改WindowsWindow的结构&#xff0c;把glad抽离出来 WindowsWindow.h:新建m_Context #pragma once #include "YOTO/Window.h" #include <YOTO/Renderer/GraphicsContext.h> #include<GLFW/glfw3.h> #include…

iperf3网络带宽性能测试工具 局域网网络最大带宽高阶教程

iperf3 是一个 TCP, UDP, 和 SCTP (传输层协议)网络带宽测量工具&#xff0c;iperf 是一个用于主动测量 IP 网络上最大可用带宽的工具. 它支持与时间、协议和缓冲区相关的各种参数的调优. 对于每个测试&#xff0c;它报告测量的吞吐量/比特率(带宽), 丢包率和其他参数&#xff…

MySQL 覆盖索引

目录 一、什么是索引 二、索引的有哪些种类&#xff1f; 三、InnoDB的不同的索引组织结构是怎样的呢&#xff1f; 四、什么是覆盖索引 五、如何使用是覆盖索引&#xff1f; 六、如何确定数据库成功使用了覆盖索引呢 总结&#xff1a; 一、什么是索引 索引&#xff08;在 …

Log4j2-01-log4j2 hello world 入门使用

拓展阅读 Log4j2 系统学习 Logback 系统学习 Slf4j Slf4j-02-slf4j 与 logback 整合 SLF4j MDC-日志添加唯一标识 分布式链路追踪-05-mdc 等信息如何跨线程? Log4j2 与 logback 的实现方式 日志开源组件&#xff08;一&#xff09;java 注解结合 spring aop 实现自动输…

openssl3.2 - 测试程序的学习 - 准备openssl测试专用工程的模板

文章目录 openssl3.2 - 测试程序的学习 - 准备openssl测试专用工程的模板概述笔记工程中需要的openssl的库实现END openssl3.2 - 测试程序的学习 - 准备openssl测试专用工程的模板 概述 openssl3.2 - 测试程序的学习 整了几个test.c, 每开一个新的测试工程, 总要改这改那的. …

【RH850U2A芯片】Reset Vector和Interrupt Vector介绍

目录 前言 正文 1. 什么是Reset Vector 1.1 S32K144芯片的Reset Vector 1.2 RH850芯片的Reset Vector 2. 什么是Interrupt Vector 2.1 S32K144芯片的Interrupt Vector 2.2 RH850芯片的Interrupt Vector 3. Reset Vector等价于Interrupt Vector吗 4. 总结 前言 最近在…

uniapp微信小程序-input默认字的样式

需要的是这样的 问题 正常是在input框上面写样式就行&#xff0c;但是uniapp不起作用 解决 直接在input上写placeholder-style"color就解决了 <input class"findInput" type"text" placeholder"关键词查询"placeholder-style"co…

微信小程序-04

rpx&#xff08;responsive pixel&#xff09;是微信小程序独有的&#xff0c;用来解决屏适配的尺寸单位。 import 后跟需要导入的外联样式表的相对路径&#xff0c;用 ; 表示语句结束。 定义在 app.wxss 中的样式为全局样式&#xff0c;作用于每一个页面。 在页面的 .wxss 文…

第九篇 华为云Iot SDK的简单应用

第九篇 华为云Iot SDK的简单应用 一、华为云Iot SDK API的简单使用 1.初始化SDK 2.绑定连接配置信息 3.连接服务器 4.上报属性 5.接收命令 二、实现智能家居灯光状态上报 &#x1f516;以下是上报数据到华为云Iot的代码片段&#xff0c;配合串口控制灯光&#xff0c;改变灯…