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

目录

一、环境准备

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/bashMYIP=$(ifconfig | grep "inet 172" | awk '{print $2}' | cut -d'/' -f1)if [ "$MYIP" = "172.18.0.2" ]; thenecho "allow command"id
elseecho "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.rhkb.cn/news/247122.html

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

相关文章

uniapp复选框 实现排他选项

选择了排他选项之后 复选框其他选项不可以选择 <view class"reportData" v-for"(val, index) in obj" :key"index"> <view v-if"val.type 3" ><u-checkbox-group v-model"optionValue" placement"colu…

物联网协议Coap之C#基于Mozi的CoapClient调用解析

目录 前言 一、CoapClient相关类介绍 1、CoapClient类图 2、CoapClient的设计与实现 3、SendMessage解析 二、Client调用分析 1、创建CoapClient对象 2、实际发送请求 3、Server端请求响应 4、控制器寻址 总结 前言 在之前的博客内容中&#xff0c;关于在ASP.Net Co…

MongoDB实战

1.MongoDB介绍 1.1 什么是MongoDB MongoDB是一个文档数据库&#xff08;以JSON 为数据模型&#xff09;&#xff0c;由C语言编写&#xff0c;旨在为WEB应用提供可扩展的高性能数据存储解决方案。 文档来自于"JSON Document"&#xff0c;并非我们一般理解的 PDF&…

以太网交换基础VLAN原理与配置

目录 7.以太网交换基础 7.1.以太网协议 7.2.以太网帧介绍 7.3.以太网交换机 7.4.同网段数据通信全过程 8.VLAN原理与配置 8.1.VLAN的基本概念 8.2.VLAN的应用 7.以太网交换基础 7.1.以太网协议 以太网是当今现有局域网(Local Area Network,LAN)采用的最通用的通信协议…

数据结构排序小结

排序类型小结 &#x1f4a6; 插入排序直接插入排序希尔排序 &#x1f4a6; 选择排序直接选择排序堆排序 &#x1f4a6; 交换排序冒泡排序快速排序&#x1f43e;霍尔版本补坑位版本前后指针版本非递归版本 &#x1f4a6; 归并排序递归版本非递归版本 &#x1f4a6; 性能测试 &am…

DDPM的一点笔记

1 Title Denoising Diffusion Probabilistic Models&#xff08;Jonathan Ho、Ajay Jain、Pieter Abbeel&#xff09; 2 Conclusion This paper present high quality image synthesis results using diffusion probabilistic models, a class of latent variable models insp…

利用nginx宝塔免费防火墙实现禁止国外IP访问网站

本章教程&#xff0c;主要介绍&#xff0c;如何利用nginx宝塔面板中的插件免费防火墙&#xff0c;实现一键禁止国外IP访问网站。 目录 一、安装宝塔插件 二、 开启防火墙 一、安装宝塔插件 在宝塔面板中的软件商店&#xff0c;搜索防火墙关键词&#xff0c;找到Nginx免费防火…

java日志框架总结(三 、Log4j日志框架)

一、简介 Log4j ( Logger For Java ) , Java 日志的记录包。 官方网站 。Log4j 是 Apache 的一个开源项目&#xff0c; 为Java提供了日志记录功能。能够让程序员非常方便的记录日志&#xff0c; 并且提供了多种适配方式&#xff0c;能满足各种需求。 使用Log4j 只需要导入一个…

第四篇:怎么写express的路由(接口+请求)

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 &#x1f4d8; 引言&#xff1a; &#x1f4…

python在线聊天室(带聊天保存)

python Socket在线聊天室(带聊天保存) 需求功能 1.聊天信息保存功能(服务端会把信息保存到一个txt里面) 2.使用pyqt5框架作为一个可视化界面 3.具备一个服务端和多个客户端的功能 4.具备离线加入黑名单(离线踢出) 5.具备在线加入黑名单(在线加入黑名单被踢出) 6.具备群聊功能…

无际线复选框

效果演示 实现了一个网格布局&#xff0c;其中每个网格是一个复选框&#xff0c;可以选择是否显示。每个复选框都有一个漂浮的天花板&#xff0c;表示它是一个房间的天花板。每个房间的天花板都有一个不同的形状和颜色&#xff0c;分别对应不同的房间。整个页面的背景是一个由两…

0127-2-Vue深入学习5—Vue-Router路由模式

1、Vue-Router三种路由模式&#xff1a; hash&#xff1a;#️⃣使用URL hash 值来做路由&#xff0c;支持所有路由器&#xff1b;history:&#x1f4d6;依赖HTML5 History API和服务器配置&#xff1b;abstract:⛓支持所有JS运行环境&#xff0c;Node.js服务端&#xff1b; 1.1…

安全防御{第三次作业(在第二次作业上添加点需求)}

目录 需求&#xff1a; 拓扑图&#xff1a; 注意&#xff1a;先打开防火墙web界面&#xff0c;在此不做演示 1.要求一&#xff1a;&#xff0c;生产区在工作时间内可以访问服务器区&#xff0c;仅可以访问http服务器 2.要求二&#xff1a;办公区全天可以访问服务器区&#…

使用一个定时器(timer_fd)管理多个定时事件

使用一个定时器(timer_fd)管理多个定时事件 使用 timerfd_xxx 系列函数可以很方便的与 select、poll、epoll 等IO复用函数相结合&#xff0c;实现基于事件的定时器功能。大体上有两种实现思路&#xff1a; 为每个定时事件创建一个 timer_fd&#xff0c;绑定对应的定时回调函数…

考研C语言刷题基础篇之分支循环结构基础(二)

目录 第一题分数求和 第二题&#xff1a;求10 个整数中最大值 第三题&#xff1a;在屏幕上输出9*9乘法口诀表 第四题&#xff1a;写一个代码&#xff1a;打印100~200之间的素数 第五题&#xff1a;求斐波那契数的第N个数 斐波那契数的概念&#xff1a;前两个数相加等于第三…

Objective-C方法的声明实现及调用

1.无参数的方法 1)声明 a.位置&#xff1a;在interface括弧的外面 b.语法&#xff1a; - (返回值类型)方法名称; interface Person : NSObject -(void) run; end 2)实现 a.位置&#xff1a;在implementation中实现 b.语法&#xff1a;加大括弧将方法实现的代码写在大括孤之中 …

Unity Mask合批情况验证

1.首先是两个Mask完全重合的情况下 每张图片使用的image都来自同一个图集 发现彼此之间是没有合批的&#xff0c;但是每个Mask内部是实现了合批的 经过计算此种情况的visiableList&#xff1a;mask1&#xff0c;IM1&#xff0c;IM2&#xff0c;mask2&#xff0c;IM3&#xf…

NoSQL基本内容

第一章 NoSQL 1.1 什么是NoSQL NoSQL&#xff08;Not Only SQL&#xff09;即不仅仅是SQL&#xff0c;泛指非关系型的数据库&#xff0c;它可以作为关系型数据库的良好补充。随着互联网web2.0网站的兴起&#xff0c;非关系型的数据库现在成了一个极其热门的新领域&#xff0c;…

c# cad2016选择封闭多段线获取多段线面积

在C#中&#xff0c;如果你想要通过AutoCAD .NET API来选择封闭多段线内部的其他闭合多段线并计算它们各自的面积&#xff0c;可以遵循以下基本步骤&#xff1a; 1、加载AutoCAD库&#xff1a; 确保你的C#项目引用了Autodesk.AutoCAD.Interop和Autodesk.AutoCAD.Interop.Common…

Jmeter连接数据库报错Cannot load JDBC driver class‘com.mysql.jdbc.Driver’解决

问题产生: 我在用jmeter连接数据库查询我的接口是否添加数据成功时,结果树响应Cannot load JDBC driver class com.mysql.jdbc.Driver 产生原因: 1、连接数据库的用户密码等信息使用的变量我放在了下面,导致没有取到用户名密码IP等信息,导致连接失败 2、jmeter没有JDB…