负载均衡下的webshell连接

一、环境配置

1.在Ubuntu上配置docker环境

我们选择用Xshell来将环境资源上传到Ubuntu虚拟机上(比较简单)

我们选择在root模式下进行环境配置,先将资源文件复制到root下(如果你一开始就传输到root下就不用理会这个)

2.安装docker

apt-get install docker.io

3.解压缩资源

unzip AntSword-Labs-master.zip

4.把AntSword-Labs-master 改下名(方便),进入该目录。安装Docker Compose,

Docker Compose是一个用于定义和运行多容器Docker应用程序的工具。Docker Compose将所管理的容器分为三层,分别是工程(project)、服务(service)以及容器(container)。通过Docker Compose,可以在单机上编排容器,实现多个服务的定义、依赖关系和按顺序启动服务等功能。

这里选择用使用包管理工具安装

apt-get update

apt-get install docker-compose

5.抓取docker-compose.yml

docker compose up -d

6.抓取运行成功

二、蚁剑连接

我们假定在真实的业务系统上,存在一个 RCE 漏洞,可以让我们获取 WebShell。

在蚁剑上进行连接测试

四个难点

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

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

新建一个hello文件一刷新就会不再,在一刷新就会出现

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

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

我们执行 ip addr 查看当前执行机器的 ip 时,可以看到一直在飘,因为我们用的是轮询的方式,还算能确定,一旦涉及了权重等其它指标,就让你好好体验一波什么叫飘乎不定。

3.当我们需要上传一些工具时,麻烦来了

由于 antSword 上传文件时,采用的分片上传方式,把一个文件分成了多次HTTP请求发送给了目标,所以尴尬的事情来了,两台节点上,各一半,而且这一半到底是怎么组合的,取决于 LBS 算法。

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

解决方法:

1.关机

是的,首先想到的第一个方案是关机/停服,只保留一台机器,因为健康检查机制的存在,很快其它的节点就会被 nginx 从池子里踢出去,那么妥妥的就能继续了。

这个方案实在是,影响业务,还会造成灾难,直接 Pass 不考虑。(实验环境下,权限够的时候是可以测试可行性的)。

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

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

3.在Web 层做一次 HTTP 流量转发

没错,我们用 AntSword 没法直接访问 LBSNode1 内网IP(172.23.0.2)的 8080 端口,但是有人能访问呀,除了 nginx 能访问之外,LBSNode2 这台机器也是可以访问 Node1 这台机器的 8080 端口的。

原理图如下:

首先创造脚本

不要使用上传功能,上传功能会分片上传,导致分散在不同 Node 上。

然后修改 Shell 配置, 将 URL 部分填写为 antproxy.jsp 的地址

查看ip

然后就解决了。

相关推荐
阿里云云原生14 小时前
深入内核:拆解 OpenTelemetry eBPF 探针如何优雅地“透视”多语言微服务?
云原生
JLWcai2025100918 小时前
铸造领域树脂砂轮|金利威多场景解决方案,20 + 配方覆盖全需求
mongodb·zookeeper·eureka·spark·rabbitmq·memcached·storm
java_cj19 小时前
深入kube-apiserver认证机制:从Bearer Token到mTLS的完整认证链解析
linux·运维·服务器·云原生·容器·kubernetes
互联网推荐官1 天前
上海软件定制开发公司推荐:从PaaS工程化路径看D-coding的技术取舍
云原生·云计算·paas·软件开发·开发经验·上海
sbjdhjd1 天前
从零搭建企业级 CI/CD(下):Jenkins+GitLab+Harbor 全链路实战指南
git·servlet·ci/cd·云原生·云计算·gitlab·jenkins
java_cj2 天前
深入kubectl create源码:从YAML到Pod的完整链路拆解
运维·云原生·容器·kubernetes
步步为营DotNet2 天前
基于.NET Aspire 实现云原生应用的高效监控与可观测性
云原生·.net·wpf
牛奶咖啡132 天前
KVM虚拟化与企业应用实践——给远端主机创建虚拟机
云原生·qemu·kvm·给远端主机创建虚拟机·创建uefi模式的虚拟机·安装openeulersp2·vnc与虚拟机环境搭建
一勺菠萝丶2 天前
宝塔 Docker 安装 Ubuntu 及启动失败解决流程
ubuntu·docker·eureka
java_cj2 天前
从kubectl学Visitor模式:如何优雅处理多态数据结构的遍历
云原生·golang·k8s·访问者模式