이 글은 ThinkPHP < 5.0.24의 고위험 원격 코드 실행 취약점에 대한 복구 계획을 주로 소개합니다.
취약점 설명
ThinkPHP5.0 프레임워크의 요청 클래스 메서드 처리 결함으로 인해 해커가 특정 요청을 구성하고 직접 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('REQUEST_METHOD') ?: 'GET'; } elseif (!$this->method) { if (isset($_POST[Config::get('var_method')])) { $this->method = strtoupper($_POST[Config::get('var_method')]); $this->{$this->method}($_POST); } elseif (isset($_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE'])) { $this->method = strtoupper($_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE']); } else { $this->method = $this->server('REQUEST_METHOD') ?: 'GET'; } } return $this->method; }
로 변경:
public function method($method = false) { if (true === $method) { // 获取原始请求类型 return $this->server('REQUEST_METHOD') ?: 'GET'; } elseif (!$this->method) { if (isset($_POST[Config::get('var_method')])) { $method = strtoupper($_POST[Config::get('var_method')]); if (in_array($method, ['GET', 'POST', 'DELETE', 'PUT', 'PATCH'])) { $this->method = $method; $this->{$this->method}($_POST); } else { $this->method = 'POST'; } unset($_POST[Config::get('var_method')]); } elseif (isset($_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE'])) { $this->method = strtoupper($_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE']); } else { $this->method = $this->server('REQUEST_METHOD') ?: 'GET'; } } return $this->method; }
저장하면 커버리지 테스트가 정확하고 취약점 복구가 완료됩니다.
위 내용은 ThinkPHP < 5.0.24 고위험 원격 코드 실행 취약점에 대한 복구 계획의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!