【无标题】

概述
首先负载均衡与反向代理都是C/S 或者B/S系统后端架构方面的知识。那么什么是负载均衡,什么又是反向代理呢?二者有什么异同,他们用来解决什么问题?具体如何搭建?(本文不会涉及,因为我目前没有实际的搭建经验,希望以后可以学习相关技术)

负载均衡( Load Balancing)
那负载均衡是干什么用的呢?这个涉及到了分布式系统的设计。例如我们现在有两台服务器(Server1和Server2)为用户提供服务,如果没有负载均衡就有可能出现95%的用户都去访问Server1,而只有5%的用户访问Server2。那样不就出现Server1快被压死了,而Server2工作负荷完全不满的情况吗。我们当然希望将用户的访问均衡的分配到这两天服务器上,那样对我们的系统是最有利的,这就是负载均衡最大的意义。

负载均衡:将客户端的请求按照一定的规则分配到一群服务器上,并将处理结果返回给相应的客户端。

所以如果我们现在访问百度服务器,请求首先是发到了是其负载均衡上面,Ip地址也是负载均衡的,我们对其后台的服务器集群一无所知。

负载均衡实现方式
单独的专门做负载均衡的硬件设备,例如F5。
软件方式,不需要特定的设备,例如Nginx。
负载均衡的作用
负责调度客户端请求,使其按照最优方式分配到不同的服务器上执行,避免其中某台服务器过载。
消除单点失败,这个比较好理解,因为我们有多台服务器,如果其中某一台发生了错误,可以由其他服务器完成请求。
通过减少错误返回结果提升用户体验,因为负载均衡可以检查某一台服务器是否存在问题,如果发现存在问题,它就会将请求安排到其他运行良好的服务器上执行,所以用户很少会接到返回失败的错误。
session持久化( session persistence),这个名词的意思就是在一个session有效期内,将某一个客户端的所有请求都交给同一个服务器执行。这有什么意义呢?假设我们在淘宝上购物,好不容易花了两小时选了两件心仪的宝贝放到了购物车里面,发现添加第三件的时候前两件不见了,那你是不是想问候一下阿里程序员老妈?为什么会这样,因为Http是无状态的,我们使用session维护状态,那假设前两件商品的操作是在Server1上完成的,而第三件商品是在Server2上完成的,那么这种糟糕的情况就出现了,因为Server2第一次接到这个session。
反向代理(Reverse Proxy)
首先应该明白什么是代理和正向代理,代理应该不用多解释了,理解成中间人就可以了。什么是正向代理,正向代理是内网通过代理访问外网,这个代理就是正向代理。而反向代理是指,外网通过代理访问内网,那这个代理就是反向代理。
假设把你公司的网看成是内网,那么你从公司里面的一台电脑上访问你家里的电脑上的服务,那就的通过正向代理,而你从你家电脑访问公司的这台电脑,就要通过反向代理。

反向代理与负载均衡一样,也是位于客户端与服务器之间,客户端向服务器发起的请求都是先经过反向代理,然后分发到服务器上,然后服务器将返回结果交给反向代理,反向代理在交给客户端。

反向代理的作用
增强了安全性。首先,你背后的服务器是在反向代理后面的,其不会暴露任何信息到网络上,所以可以防止恶意攻击。第二可以防止**DDoS( distributed denial-of-service)**攻击,例如通过限制某一IP访问,限制每个客户端的访问次数等。
增强了可伸缩性与灵活性。因为客户端只能看到反向代理的Ip地址,所以我们就可以灵活的改变其后面服务器的配置。
加速Web访问速度。第一:将返回结果压缩后交给客户端,这样就会节省网络带宽,从而加快速度。第二:将请求的加密解密操作放在反向代理服务器上行执行。第三:在反向代理服务器上做缓存。

漏洞复现
我们假定在真实的业务系统上,存在一个 RCE 漏洞,可以让我们获取 WebShell。
安装后运行:
docker-compose build 建立环境
docker-compose up -d 运行
docker ps -a 查看所有的进程,端口号为18080
打开浏览器查看下:
在这里插入图片描述
打开中国蚁剑工具进行连接;
在这里插入图片描述
然后连接目标,因为两台节点都在相同的位置存在 ant.jsp,所以连接的时候也没出现什么异常。

连接后打开我们的虚拟终端:

查看IP地址,发现我们的IP进行了漂移;
难点一:
我们需要在每一台节点的相同位置都上传相同内容的 WebShell

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

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

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

难点三:
当我们需要上传一些工具时,麻烦来了:

由于 antSword 上传文件时,采用的分片上传方式,把一个文件分成了多次HTTP请求发送给了目标,所以尴尬的事情来了,两台节点上,各一半,而且这一半到底是怎么组合的,取决于 LBS 算法
难点四:
由于目标机器不能出外网,想进一步深入,只能使用 reGeorg/HTTPAbs 等 HTTP Tunnel,可在这个场景下,这些 tunnel 脚本全部都失灵了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值