Heim >Backend-Entwicklung >PHP-Tutorial >ThinkPHP < 5.0.24 Reparaturplan für hochriskante Sicherheitslücke bei Remotecodeausführung

ThinkPHP < 5.0.24 Reparaturplan für hochriskante Sicherheitslücke bei Remotecodeausführung

藏色散人
藏色散人nach vorne
2019-04-29 09:08:168546Durchsuche

Dieser Artikel stellt Ihnen hauptsächlich den Reparaturplan für die Sicherheitslücke mit hohem Risiko in ThinkPHP < 5.0.24 vor. Ich hoffe, dass er für Freunde in Not hilfreich sein wird!

ThinkPHP < 5.0.24 Reparaturplan für hochriskante Sicherheitslücke bei Remotecodeausführung

Beschreibung der Sicherheitslücke
Aufgrund von Fehlern in der Methodenverarbeitung der Request-Klasse des ThinkPHP5.0-Frameworks konstruieren Hacker Spezifische Anfragen können direkt an GetWebShell gestellt werden.

Schwachstellenbewertung
Kritisch

Betroffene Versionen
ThinkPHP 5.0 Series< 5.0.24

Sichere Version
ThinkPHP 5.0 Serie 5.0.24
ThinkPHP 5.1 Serie 5.1.31

Sicherheitsempfehlungen
ThinkPHP auf eine sichere Version aktualisieren

Reparaturmethode 1. Öffnen Sie

thinkphplibrarythinkRequest.php

Suchen Sie nach

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;
    }

Ändern Sie zu:

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;
    }

Speichern und overwrite Der Test ist korrekt und die Schwachstellenbehebung ist abgeschlossen.

Das obige ist der detaillierte Inhalt vonThinkPHP < 5.0.24 Reparaturplan für hochriskante Sicherheitslücke bei Remotecodeausführung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:aliyun.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen