负载均衡下的 WebShell 连接

文章介绍了Nginx的负载均衡算法,包括轮询、weight、IP_hash、URL_hash等,并在实验环境中搭建了两个节点的Tomcat8服务器。此外,还讨论了如何通过异或和取反运算在PHP7中绕过webshell限制。
摘要由CSDN通过智能技术生成

目录

一、Nginx的负载均衡

1、nginx的负载均衡算法

二、实验环境

1、实验架构

2、环境搭建

3、复现

三、 webshell的绕过

1、异或操作

2、取反运算绕过


一、Nginx的负载均衡

负载均衡(Load Balance) ,英文名称为Load Balance,其含义就是指将工作任务进行平衡、分摊到多个操作单元上进行运行,从而协同完成工作任务。
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器。

1、nginx的负载均衡算法

a. 轮询(默认)
每个请求按照时间顺序逐一分配到笔筒的后端
b. weight
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况下
c. ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session保持的问题。
d. url_hash
可以依据页面大小和加载时间长短智能的进行负载均衡,也就是根据后端服务器的响应时间来分配请求。
e. least_conn
根据连接数分配。
f. fair (第三方)
根据响应时间分配。

二、实验环境

1、实验架构

为了方便解释,我们只用两个节点,启动之后,看到有 3 个容器(你想像成有 3 台服务器)。

 Node1 和 Node2 均是 tomcat 8 ,在内网中开放了 8080 端口,我们在外部是没法直接访问到的。

2、环境搭建

systemctl start docker   //启动docker
docker-compose build 	 //建立环境

问题:

使用yum安装docker-compose时提示没有这个包
可以使用以下命令安装

更新yum源
sudo yum -y install epel-release
然后可以直接安装
yum install docker-compose

上传文件并压缩

 加载环境

docker compose up -d

 我们查看它的compose文件可以看到:

nginx的80端口被映射到主机的18080端口之上,访问http://192.168.2.169:18080
就可以访问到我们的web服务了。Node1 和 Node2 均是 tomcat 8 ,在内网中开放了 8080 端口,我们在外部是没法直接访问到的。 

查看

docker ps -a 查看所有进程,端口号为18080

3、复现

文件/etc/nginx/conf.d/default.conf如下:

 浏览器访问

连接测试

三、 webshell的绕过

在 PHP 5 中 assert() 是一个函数,我们可以通过$f='assert';$f(...);这样的方法来动态执行任意代码,此时它可以起到替代 eval() 的作用。但是在 PHP 7 中,assert() 不再是函数了,而是变成了一个和 eval() 一样的语言结构,此时便和 eval() 一样不能再作为函数名动态执行代码,所以利用起来稍微复杂一点。

1、异或操作

例:

    <?php
        echo "A"^"`";
    ?>

输出结果:

    因为代码中对字符"A"和字符"`"进行了异或操作。在PHP中,两个变量进行异或时,先会将字符串转换成ASCII值,再将ASCII值转换成二进制再进行异或,异或完,又将结果从二进制转换成了ASCII值,再将ASCII值转换成字符串。异或操作有时也被用来交换两个变量的值。

2、取反运算绕过

该方法和前面的方法绕过的方法有异曲同工之妙,唯一差异就是,这里使用的是位运算里的 “取反” 运算。利用的是 UTF-8 编码的某个汉字,将其中某个字符取出来,比如'和'{2}的结果是"\x8c",其再取反即可得到字母s:

    echo ~('瞰'{1});    // a
    echo ~('和'{2});    // s
    echo ~('和'{2});    // s
    echo ~('的'{1});    // e
    echo ~('半'{1});    // r
    echo ~('始'{2});    // t

运行结果如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值