nginx负载均衡

nginx负载均衡

首先安装好nginx后,修改(centos)nginx/conf下的nginx.conf文件
在这里插入图片描述
在这里插入图片描述
然后修改IP地址,第一个我设置的ubuntu虚拟机的地址192.168.106.140
第二个为本地nginx127.0.0.1,后面端口设置的8080,8090,weight为权重,一个100,一个200,数值越大权重越重,最大连接数为2,超时为30秒。

在这里插入图片描述
然后修改server模块下的location
在这里插入图片描述
这里配置的相当于反向代理给了nginx.php,然后nginx.php就代理给了上面两台服务器了
在这里插入图片描述
然后ubuntu作为服务器端,也需要搭建nginx服务器
没有的话可以 apt-get install nginx 直接安装
完成后看一下nginx启动没

在这里插入图片描述
本地测试一下 curl http://localhost

在这里插入图片描述
然后稍微修改一下前端页面方便区分到底请求的哪个
vi index.nginx-debian.html
在这里插入图片描述

再在本地搭建一台nginx服务器,
在这里插入图片描述
然后在192.168.106.138(centos)虚拟机下重启一下nginx
在这里插入图片描述
测试
我访问的地址是192.168.106.138(centos)
漂移到了140上了
正常再次刷新应该漂移到本地的,这里出现了点问题没飘移。。。
到此反向代理+负载均衡就配置好了。

在这里插入图片描述

漏洞复现

首先找到docker环境
在这里插入图片描述
然后docker-compose up -d
然后无语的给我报个啥错。。。
问了一下度娘 她说这个是我的docker版本太低了,
好,相信她,卸载旧版本docker,重新安装新版docker!!!
在这里插入图片描述
再重试:(度娘诚不欺我)docker环境好了
在这里插入图片描述
在这里插入图片描述

看一下18080端口,没问题
在这里插入图片描述
然后在docker exec -it 067382028d2f /bin/bash
下面的webapps下面的ROOT里面有一个ant.jsp文件
里面存放了一句话木马和连接密码ant

在这里插入图片描述
在这里插入图片描述
至此环境搭建好了
测试用蚁剑连接一下,连接成功了

在这里插入图片描述
在这里插入图片描述
难点一我们需要在每一台节点的相同位置都上传相同内容的 WebShell不然刷新会出现问题
一旦有一台机器上没有,那么在请求轮到这台机器上的时候,就会出现 404 错误,影响使用
在这里插入图片描述
解决方案很简单,多传几次就好了,保证每台服务器都有文件就可以了

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

我们执行 ip addr 查看当前执行机器的 ip 时,可以看到一直在飘,因为我们用的是轮询的方式,还算能确定,一旦涉及了权重等其它指标,就让你好好体验一波什么叫飘乎不定
可以很明显的看到ip在0.2和0.3之间来回飘移,很烦人,说明有两台服务器在处理,两台还好,假设有很多台,那我们的请求都不知道飘到哪里去了

在这里插入图片描述
这里很明显看到ip addr ifconfig都没有
那就去安装一下

在这里插入图片描述
在试一下
在这里插入图片描述
很奇怪为什么一次能查出来一次又不可以,这就是问题二,我们的安装请求只在一台服务器上生效了,还有一台没有生效,解决办法就是在另一台也安装,就可以了。要是有一百台,那就上脚本。。。

难点三:当我们需要上传一些工具时,麻烦来了
假如我们上传文件,文件稍微大一点, 由于 antSword 上传文件时,采用的分片上传方式,把一个文件分成了多次HTTP请求发送给了目标,所以尴尬的事情来了,两台节点上,各一半,而且这一半到底是怎么组合的,取决于 LBS 算法
这样我们的入侵行为就很难,用一个图片演示一下

在这里插入图片描述
上传了一个57k的图片
但是刷新一下就没了,在刷新就出现了

在这里插入图片描述
但是图片过大的话,因为ip地址会漂移,上传的文件会被拆分到不同的服务器,上传了一张700多k的图片111.jpg
在这里插入图片描述
在这里插入图片描述
很明显给我拆分成了一个400kb,一个370多kb。这就是问题3所在

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

解决办法:
Plan A 关掉其中一台机器 (作死)

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

这个方案实在是「老寿星上吊——活腻了」,影响业务,还会造成灾难,直接 Pass 不考虑。(实验环境下,权限够的时候是可以测试可行性的)。
真实环境肯定不能干!!!
真实环境肯定不能干!!!
真实环境肯定不能干!!!

Plan B 执行前先判断要不要执行
既然无法预测下一次是哪台机器去执行,那我们的 Shell 在执行 Payload 之前,先判断一下要不要执行就行了
以执行命令时 Bash 为例,在执行前判断一下 IP:

在这里插入图片描述

在这里插入图片描述
给他加上权限,零时文件权限不够
在这里插入图片描述
在这里插入图片描述
这样就固定在172.18.0.2上了,不是就直接not found

Plan C 在Web 层做一次 HTTP 流量转发

具体操作:
创建 antproxy.jsp 脚本****多创建几次,刷新
在这里插入图片描述
在这里插入图片描述

修改转发地址,转向目标 Node 的 内网IP的 目标脚本 访问地址。

在这里插入图片描述
注意:不仅仅是 WebShell ,还可以改成 reGeorg 等脚本的访问地址。

我们将 target 指向了 LBSNode1 的 ant.jsp
在这里插入图片描述

这样就再也不会ip漂移了,永远都是172.18.0.2了,
复现完成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值