网络安全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.mzph.cn/news/651800.shtml

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

相关文章

人类基因组计划发现的8大真相

人类基因组计划是科学史上重要的里程碑事情。该计划的成功,不仅开启了人类了解自身的旅程,而且成为了国际科技合作的典范。对于人类基因组,发现了以下 8 个事实。 1. 人类基因组约有 20300 个蛋白质编码基因。这与最初预估的 30000 ~ 40000 个…

pytest教程-7-用例前后置方法

上一小节,我们学习了pytest跳过测试用例的方法,本小节我们讲解一下pytest用例的前后置方法。 在unittest中就有前置setup和后置teardown来处理测试用例执行前的准备工作(浏览器驱动实例化,数据库连接等)以及执行后的处…

JS之隐式转换与布尔判定

大家思考一下 [ ] [ ] ? 答案是空字符串 为什么呢? 当做加法运算的时候,发现左右两端存在非原始类型,也就是引用类型对象,就会对对象做隐式类型转换 如何执行的?或者说怎么查找的? 第一步&…

IntelliJ IDE 插件开发 | (五)VFS 与编辑器

系列文章 IntelliJ IDE 插件开发 |(一)快速入门IntelliJ IDE 插件开发 |(二)UI 界面与数据持久化IntelliJ IDE 插件开发 |(三)消息通知与事件监听IntelliJ IDE 插件开发 |(四)来查收…

【GitHub项目推荐--不错的 React 开源项目】【转载】

用 React Flow 连接你的想法 用 React Flow 连接你的想法,这是一个高度可定制的库,基于 React 用于构建基于节点的 交互式 UI、编辑器、流程图和图表。 开源地址:https://github.com/wbkd/react-flow Bulletproof React 一个简单、可扩展且…

PyTorch深度学习实战(33)——条件生成对抗网络(Conditional Generative Adversarial Network, CGAN)

PyTorch深度学习实战(33)——条件生成对抗网络 0. 前言1. 条件生成对抗网络1.1 模型介绍1.2 模型与数据集分析 2. 实现条件生成对抗网络小结系列链接 0. 前言 条件生成对抗网络 (Conditional Generative Adversarial Network, CGAN) 是一种生成对抗网络…

IP报文格式(全网最详细)

IP报文格式 报文格式 图1 IP头格式 表1 IP头字段解释 字段长度含义Version4比特 4:表示为IPV4;6:表示为IPV6。IHL4比特首部长度,如果不带Option字段,则为20,最长为60,该值限制了记录路由选项。…

AutoGen实战应用(二):多代理协作(Multi-Agent Collaboration)

AutoGen是微软推出的一个全新工具,它用来帮助开发者创建基于大语言模型(LLM)的复杂应用程序. AutoGen能让LLM在复杂工作流程启用多个角色代理来共同协作完成人类提出的任务。在我之前的一篇博客: AutoGen实战应用(一):代码生成、执行和调试 中我们通过一…

【RabbitMQ】交换机的概念及使用

一、引言 1、什么是交换机 RabbitMQ中,交换机是一个核心概念,主要用来将生产者生产出来的消息,传送到对应的队列中。实际上,生产者生产的消息从不会直接发送到队列,而是发送到交换机。交换机一方面接收来自生产者的消…

SpringBoot项目配置SSL后,WebSocket连接失败的解决方案

SpringBoot项目配置SSL后,WebSocket连接应使用wss协议,而不是ws协议。在前端配置WebSocket时,URL以wss://开头。

嵌入式学习第十二天

8.数组指针和指针数组(2): (1)指针数组: int *a[5]; char *str[5]; 指针数组主要用来操作字符串数组,通过将指针数组的每个元素存放字符串的首地址实现对多个字符串的操作 二维数组主要用来存储字符串数组…

Nodejs前端学习Day3_准备工作

妈的,这几天真tm冷,前天上午还下了一整天的雪,大雪 文章目录 前言一、Node.js简介1.1何为1.2有什么 二、Node.js可以做什么三、学习路线四、下载nodejs4.1小坑记录4.2LTS和Current版本的不同 五、什么是终端六、在nodejs中执行js代码七、powe…

Kubernetes(K8S)各种攻击方法

1. 准备工作 1.1. metarget使用 项目地址(教程):https://github.com/Metarget/metarget/blob/master/README-zh.md 注意:推荐在Ubuntu 18.04(推荐)安装。 1.1.1. 安装metarget git clone https://github.com/Metarget/metarget.git cd metarget/ sudo apt install pyt…

[BUUCTF]-PWN:hitcon2014_stkof解析

又是一道堆题,先看保护 关键信息,64位,没开pie。再看ida 大致就是alloc创建堆块,free释放堆块,fill填充堆块内容,以及一个看起来没啥用的函数,当然我也没利用这个函数去解题 这里有两种解法 解…

【VB测绘程序设计】案例8——IF选择结构练习排序(附源代码)

【VB测绘程序设计】案例6——IF选择结构练习排序(附源代码) 文章目录 前言一、界面显示二、程序说明三、程序代码四、数据演示总结前言 本文主要掌握Val()函数转换,inputBox函数、IF条件句的练习,输入3个数,按大到小排序并打印。 一、界面显示 二、程序说明 利用inpu…

[BJDCTF2020]The mystery of ip

hint 猜测ip和XFF有关 加一个XFF 下面这一步是看了wp出来的:存在ssti 这里尝试用jinja的注入方法,页面回显了是php的smarty框架 查了一下smarty的注入方法,发现可以直接执行php命令 在根目录找到flag

RPC教程 6.负载均衡

1.负载均衡策略 假设有多个服务实例,而每个实例都提供相同的功能,为了提高整个系统的吞吐量,每个实例部署在不同的机器上。客户端可以选择任意一个实例进行调用,获取想要的结果。那如何选择呢?取决于负载均衡的策略。…

Visual Studio如何修改成英文版

1、打开 Visual Studio Installer 2、点击修改 3、找到语言包,选择需要的语言包,而后点击修改 4、等待下载 5、 安装完成后启动Visual Studio 6、在工具-->选项-->环境-->区域设置-->English并确定 7、重启 Visual Studio,配置…

数据结构与算法教程,数据结构C语言版教程!(第六部分、数据结构树,树存储结构详解)三

第六部分、数据结构树,树存储结构详解 数据结构的树存储结构,常用于存储逻辑关系为 "一对多" 的数据。 树存储结构中,最常用的还是二叉树,本章就二叉树的存储结构、二叉树的前序、中序、后序以及层次遍历、线索二叉树、…

QT实现USB摄像头接入显示

一、UVC协议简介 UVC全称是USB Video Class(USB视频类),是一种标准化的USB视频设备通信协议,它定义了摄像头与主机之间的数据传输协议和格式。 UVC协议的出现,解决了摄像头厂商之间互不兼容,以及摄像头应…