>  기사  >  CMS 튜토리얼  >  phpcms 보안 취약점 수집

phpcms 보안 취약점 수집

coldplay.xixi
coldplay.xixi앞으로
2020-12-04 16:53:1814251검색

phpcms 튜토리얼일반적인 phpcms 보안 취약점 소개

phpcms 보안 취약점 수집

권장(무료): phpcms 튜토리얼

1.

/phpcms/modules 위치 /pay/respond.php는 약 16줄입니다.

원래 코드

$payment = $this->get_by_code($_GET['code']);

$payment = $this->get_by_code(mysql_real_escape_string($_GET['code']));

2로 대체되었으며, phpcms 주입 취약점

/phpcms/modules/poster/ 포스터 .php 위치 정보 221

if ($_GET['group']) {

$_GET['group'] = preg_replace('#`#', '', $_GET['group']);

3 뒤에 추가되었습니다. phpcms 프런트 엔드 주입으로 인해 임의 파일 읽기 취약점 패치

/phpcms/modules/content/down.php

이 발생합니다.

(1) 약 17행의 위치

parse_str($a_k);

$a_k = safe_replace($a_k); parse_str($a_k);

로 대체됩니다. (2) 약 89행의

parse_str($a_k);

위치가

$a_k = safe_replace($a_k); parse_str($a_k);

로 대체됩니다. 위의 버전 6.3에서는 두 가지 문제가 수정되었습니다.

(3) 위치는 약 120줄입니다.

$filename = date('Ymd_his').random(3).'.'.$ext;

다음에

$fileurl = str_replace(array(&#39;<&#39;,&#39;>&#39;), &#39;&#39;,$fileurl);

4가 이어집니다. phpcms 주입 취약점

/phpcms/module 초/ member/index.php는 약 615줄입니다

원래 코드:

$password = isset($_POST[&#39;password&#39;]) && trim($_POST[&#39;password&#39;]) ? trim($_POST[&#39;password&#39;]) : showmessage(L(&#39;password_empty&#39;),HTTP_REFERER);

다음으로 대체됨:

$password = isset($_POST[&#39;password&#39;]) && trim($_POST[&#39;password&#39;]) ? addslashes(urldecode(trim($_POST[&#39;password&#39;]))) : showmessage(L(&#39;password_empty&#39;), HTTP_REFERER);

5, PHPCMS V9.6.2 SQL 주입 취약점

(1) php cms/libs /classes/param.class.php는 약 109행에 위치합니다.

원본 코드

$value = isset($_COOKIE[$var]) ? sys_auth($_COOKIE[$var], &#39;DECODE&#39;) : $default;

$value = isset($_COOKIE[$var])?addslashes(sys_auth($_COOKIE[$var],&#39;DECODE&#39;)):$default;

(2)/phpsso_server/phpcms/libs/classes/param.class로 대체됩니다. 약 108행

원본 코드

return isset($_COOKIE[$var]) ? sys_auth($_COOKIE[$var], &#39;DECODE&#39;) : $default;

return isset($_COOKIE[$var]) ? addslashes(sys_auth($_COOKIE[$var],&#39;DECODE&#39;)) : $default;

6으로 교체하세요. phpcms 어딘가에서 논리 문제로 인해 getshell

/phpcms/libs/classes/attachment이 발생했습니다. .class. phpcms 주입 취약점

/api/phpsso.php는 약 128라인

Orig에 있습니다. 최종 코드

function download($field, $value,$watermark = &#39;0&#39;,$ext = &#39;gif|jpg|jpeg|bmp|png&#39;, $absurl = &#39;&#39;, $basehref = &#39;&#39;){
투인원 코드로 대체

// 此处增加类型的判断
         if($ext !== &#39;gif|jpg|jpeg|bmp|png&#39;){
             if(!in_array(strtoupper($ext),array(&#39;JPG&#39;,&#39;GIF&#39;,&#39;BMP&#39;,&#39;PNG&#39;,&#39;JPEG&#39;))) exit(&#39;附加扩展名必须为gif、jpg、jpeg、bmp、png&#39;);
         }
8.phpcms authkey 생성 알고리즘 문제로 인해 authkey 누출

1 /caches/configs/system.php에서 첫 번째 매개변수 를 추가합니다.

'alivulfix' => 'yes',

수정 후 코드 스크린샷은 다음과 같습니다.

2. 20자리 문자열인 auth_key를 찾아서 수정하세요.

$arr[&#39;uid&#39;] = intval($arr[&#39;uid&#39;]);
$phpssouid = $arr[&#39;uid&#39;];

3. 32비트 문자열인 auth_key를 찾아 수정하세요. 작성한 내용을 맞춤설정하세요.

$phpssouid = intval($arr[&#39;uid&#39;]);

참고: 이 단계는 Alibaba Cloud의 Cloud Knight 원클릭 복구와 동일합니다.
웹사이트 사용자는 당분간 로그인할 수 없습니다. 가장 중요한 단계가 남아 있습니다.

4. 백그라운드에서 phpsso 관리 센터에 로그인합니다. 탐색 메뉴 phpsso ——> 애플리케이션 관리 ——> 편집에서 "통신 키"를 3단계에서 설정한 'phpsso_auth_key' 값으로 편집합니다. 제출을 클릭하세요.

주요 단계의 스크린샷은 다음과 같습니다.


제출 후 페이지에는 아래와 같이 성공적인 통신이 표시됩니다.



프로그래밍에 대해 더 자세히 알고 싶다면 php training 칼럼을 주목해주세요!

위 내용은 phpcms 보안 취약점 수집의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제