Heim  >  Artikel  >  CMS-Tutorial  >  Verschiedene Patches für PHPCMS-Injection-Schwachstellen

Verschiedene Patches für PHPCMS-Injection-Schwachstellen

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼nach vorne
2019-11-21 10:24:525800Durchsuche

Verschiedene Patches für PHPCMS-Injection-Schwachstellen

1. Wide-Byte-Injection-Schwachstelle

/phpcms/modules/pay/respond.php bei etwa 16 Zeile

Originalcode

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

wird ersetzt durch

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

2. phpcms-Injection-Schwachstelle

/phpcms/modules/poster/poster .php befindet sich ungefähr in Zeile 221 von

if ($_GET['group']) {

und fügen Sie dann

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

3 hinzu. Patch für die Schwachstelle beim Lesen willkürlicher Dateien, die durch die PHPCMS-Frontend-Injection verursacht wird

/phpcms/ module/content/down.php

(1) Ersetzen Sie Zeile 17

parse_str($a_k);

durch

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

(2) Zeile 89

parse_str($a_k);

Ersetzen Sie durch

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

(3) Fügen Sie

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

nach Zeile 120 von

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

hinzu. 4. phpcms-Injection-Schwachstelle

/phpcms/ module/member/index.php befindet sich in Zeile 615

Originalcode:

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

Ersetzt durch:

$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-Injection-Schwachstelle

(1) phpcms/libs/classes/param.class.php befindet sich ungefähr in Zeile 109

Der ursprüngliche Code

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

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

(2)/phpsso_server/phpcms/libs/classes/param.class.php befindet sich in etwa 108 Zeilen

Der ursprüngliche Code

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

wird durch

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

6. Ein logisches Problem irgendwo in phpcms führte dazu, dass sich getshell

/phpcms/libs/classes/attachment.class.php ungefähr in Zeile 143 nach

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

und fügen Sie

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

hinzu. Fügen Sie auf diese Weise ein Urteil hinzu. Wenn die zulässigen Dateiformate „gif“, „jpg“, „jpeg“, „bmp“, „png“ sind, fahren Sie fort, andernfalls Natürlich können die Formate hier beliebig erweitert werden.

7. phpcms-Injection-Schwachstelle

/api/phpsso.php befindet sich in etwa 128 Zeilen

Ersetzen Sie den ursprünglichen Code

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

mit , Two-in-One-Code

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

8. Probleme mit dem phpcms-Authentifizierungsschlüssel-Generierungsalgorithmus führen zu Authkey-Lecks

Generieren Sie den Schlüsselwert gemäß der folgenden Funktion neu , und dann Caches/Konfigurationen finden Ersetzen Sie einfach die beiden Parameter in /system.php und es wird gut sein

<?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 Chinesische Website, eine große Anzahl kostenloser

PHPCMS-Tutorials

, willkommen zum Lernen online!

Das obige ist der detaillierte Inhalt vonVerschiedene Patches für PHPCMS-Injection-Schwachstellen. 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