ホームページ > バックエンド開発 > PHPチュートリアル > ThinkPHP < 5.0.24 高リスクのリモートコード実行の脆弱性に対する修復計画

ThinkPHP < 5.0.24 高リスクのリモートコード実行の脆弱性に対する修復計画

藏色散人
リリース: 2023-04-06 12:40:02
転載
8532 人が閲覧しました

この記事では主に、ThinkPHP

ThinkPHP < 5.0.24 高リスクのリモートコード実行の脆弱性に対する修復計画

脆弱性の説明
ThinkPHP5.0 フレームワークの Request クラスのメソッド処理に欠陥があるため、ハッカーは特定のリクエストは GetWebShell に対して直接行うことができます。

脆弱性評価
重大

影響を受けるバージョン
ThinkPHP 5.0シリーズ< 5.0.24

#安全なバージョンThinkPHP 5.0 シリーズ 5.0.24
ThinkPHP 5.1 シリーズ 5.1.31

セキュリティに関する推奨事項ThinkPHP を安全なバージョンにアップグレードする

修復方法 1.


thinkphplibrarythinkRequest.php


を開き、

public function method($method = false)
    {
        if (true === $method) {
            // 获取原始请求类型
            return $this->server(&#39;REQUEST_METHOD&#39;) ?: &#39;GET&#39;;
        } elseif (!$this->method) {
            if (isset($_POST[Config::get(&#39;var_method&#39;)])) {
                $this->method = strtoupper($_POST[Config::get(&#39;var_method&#39;)]);
                $this->{$this->method}($_POST);
            } elseif (isset($_SERVER[&#39;HTTP_X_HTTP_METHOD_OVERRIDE&#39;])) {
                $this->method = strtoupper($_SERVER[&#39;HTTP_X_HTTP_METHOD_OVERRIDE&#39;]);
            } else {
                $this->method = $this->server(&#39;REQUEST_METHOD&#39;) ?: &#39;GET&#39;;
            }
        }
        return $this->method;
    }
ログイン後にコピー

を検索します。

public function method($method = false)
    {
        if (true === $method) {
            // 获取原始请求类型
            return $this->server(&#39;REQUEST_METHOD&#39;) ?: &#39;GET&#39;;
        } elseif (!$this->method) {
            if (isset($_POST[Config::get(&#39;var_method&#39;)])) {
                $method = strtoupper($_POST[Config::get(&#39;var_method&#39;)]);
                if (in_array($method, [&#39;GET&#39;, &#39;POST&#39;, &#39;DELETE&#39;, &#39;PUT&#39;, &#39;PATCH&#39;])) {
                    $this->method = $method;
                    $this->{$this->method}($_POST);
                } else {
                    $this->method = &#39;POST&#39;;
                }
                unset($_POST[Config::get(&#39;var_method&#39;)]);
            } elseif (isset($_SERVER[&#39;HTTP_X_HTTP_METHOD_OVERRIDE&#39;])) {
                $this->method = strtoupper($_SERVER[&#39;HTTP_X_HTTP_METHOD_OVERRIDE&#39;]);
            } else {
                $this->method = $this->server(&#39;REQUEST_METHOD&#39;) ?: &#39;GET&#39;;
            }
        }
        return $this->method;
    }
ログイン後にコピー

に変更して上書き保存します。テストは正しく行われ、脆弱性の修正は完了しました。

以上がThinkPHP < 5.0.24 高リスクのリモートコード実行の脆弱性に対する修復計画の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:aliyun.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート