温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

ThinkPHP5.0.远程命令执行的漏洞分析及修复方法

发布时间:2021-09-03 23:08:31 来源:亿速云 阅读:648 作者:chen 栏目:安全技术
# ThinkPHP5.0远程命令执行漏洞分析及修复方法 ## 一、漏洞概述 ThinkPHP作为国内广泛使用的PHP开发框架,其5.0版本曾曝出高危远程命令执行漏洞(CVE-2018-20062)。该漏洞允许攻击者在特定条件下通过构造恶意请求,在目标服务器上执行任意系统命令,导致服务器被完全控制。 ## 二、漏洞影响范围 - 受影响版本:ThinkPHP 5.0.x < 5.0.23 - 风险等级:高危(CVSS 3.0评分9.8) - 攻击复杂度:低(无需认证) ## 三、漏洞原理分析 ### 1. 漏洞触发点 漏洞核心存在于框架的`Request`类中,当使用`method()`方法获取请求类型时: ```php // application/library/think/Request.php public function method() { if (isset($_POST[Config::get('var_method')])) { $method = strtolower($_POST[Config::get('var_method')]); if (in_array($method, ['get','post','put','delete','patch'])) { return $method; } } //...其他代码 } 

2. 攻击向量

攻击者可通过以下方式利用: 1. 构造特殊POST请求:_method=__construct 2. 注入过滤参数:filter[]=system 3. 传递执行命令:server[REQUEST_METHOD]=whoami

3. 漏洞执行流程

恶意请求 → 方法覆盖 → 参数注入 → 命令执行 ↓ ↓ __construct filter=system 

四、漏洞复现演示

攻击Payload示例

POST /index.php?s=index/index HTTP/1.1 Host: target.com Content-Type: application/x-www-form-urlencoded _method=__construct&filter[]=system&server[REQUEST_METHOD]=whoami 

预期响应

服务器将返回当前系统用户信息(如www-data),证明命令执行成功。

五、修复方案

1. 官方补丁(推荐)

升级到ThinkPHP 5.0.23或更高版本:

composer update topthink/framework 

2. 临时缓解措施

若无法立即升级,可修改核心文件:

// 修改Request类的method方法 if (isset($_POST[Config::get('var_method')])) { $method = strtolower($_POST[Config::get('var_method')]); // 增加严格类型检查 if (!is_string($method) || !in_array($method, ['get','post','put','delete','patch'])) { throw new \InvalidArgumentException('Invalid request method'); } return $method; } 

3. 安全配置建议

// config.php 增加安全配置 return [ 'var_method' => '_method_secured', // 修改默认参数名 'disable_method_var' => true, // 禁用方法覆盖功能 'filter_param' => true, // 强制参数过滤 ]; 

六、深度防御措施

  1. 输入验证

    // 对所有输入参数进行白名单验证 $input = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); 
  2. WAF规则

    # Nginx防护规则 if ($request_method !~ ^(GET|POST|PUT|DELETE)$ ) { return 403; } 
  3. 系统加固

    • 禁用危险函数:system, exec, shell_exec
    • 设置PHP open_basedir限制
    • 使用非root用户运行Web服务

七、漏洞启示

  1. 开发框架的安全审计需要关注:

    • 动态方法调用
    • 参数过滤机制
    • 请求处理流程
  2. 建议建立持续的安全更新机制,框架漏洞平均修复周期应控制在72小时内。

  3. 使用自动化工具进行漏洞扫描:

    php security-checker security:check 

八、总结

ThinkPHP5.0的RCE漏洞揭示了参数过滤不严导致的严重后果。开发者应当: - 及时更新框架版本 - 实施深度防御策略 - 建立安全开发生命周期(SDLC) - 定期进行安全审计

注:本文仅用于安全研究,未经授权测试他人系统属于违法行为。 “`

(全文共计约1050字,符合MD格式要求)

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI