ホームページ  >  記事  >  CMS チュートリアル  >  PHPCMS のさまざまなインジェクション脆弱性パッチ

PHPCMS のさまざまなインジェクション脆弱性パッチ

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼転載
2019-11-21 10:24:526007ブラウズ

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 の位置は、

if ($_GET['group']) {

の約 221 行後にあり、

$_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);

(3) に置き換え、位置 3 の 120 行目に

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

# を追加します。

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

4、phpcms インジェクションの脆弱性

/phpcms/modules/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) phpcms/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.php は約 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.php が次の行に配置されました。 143 of

function download($field, $value,$watermark = &#39;0&#39;,$ext = &#39;gif|jpg|jpeg|bmp|png&#39;, $absurl = &#39;&#39;, $basehref = &#39;&#39;){

の後に

   $extArray=explode(&#39;|&#39;,$ext); 
     if(!empty($extArray) && is_array($extArray)){ 
         foreach($extArray as $k => $v){ 
           if(!in_array(strtolower($v), array(&#39;gif&#39;,&#39;jpg&#39;,&#39;jpeg&#39;,&#39;bmp&#39;,&#39;png&#39;))); exit(&#39;0&#39;);//循环判断如果
           有一个不符合,直接返回 0 
         } 
      }

このように判定を追加します 使用可能なファイル形式が 'gif'、'jpg'、'jpeg'、'bmp'、'png の場合もちろん、ここでの形式は必要に応じて増やすことができます。

7. phpcms インジェクションの脆弱性

/api/phpsso.php は約 128 行にあります

元のコード

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

は、ツーインワン コード

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

8 に置き換えられます。phpcms 認証キー生成アルゴリズムの問​​題により認証キー漏洩が発生します

次の関数に従ってキー値を再生成します、そして、キャッシュ/構成を見つけます。 /system.php の 2 つのパラメーターを置き換えるだけで問題ありません。

<?php 
     function random($length, $chars = &#39;0123456789&#39;) { 
       
        $hash = &#39;&#39;; 
        $max = strlen($chars) - 1; 
        for($i = 0; $i < $length; $i++) { 
            $hash .= $chars[mt_rand(0, $max)]; 
        } 
        return $hash; 
    }
    
    echo random(20, &#39;authkey&#39;).&#39;<br/>&#39;;    
    echo random(32, &#39;phpssoauthkey&#39;);exit; 
?>

PHP 中国語の Web サイト、多数の無料の

PHPCMS チュートリアル

、学習へようこそオンライン!

以上がPHPCMS のさまざまなインジェクション脆弱性パッチの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はaliyun.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。