Maison  >  Article  >  Tutoriel CMS  >  PHPCMS divers correctifs de vulnérabilité d'injection

PHPCMS divers correctifs de vulnérabilité d'injection

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼avant
2019-11-21 10:24:526007parcourir

PHPCMS divers correctifs de vulnérabilité d'injection

1. Vulnérabilité d'injection d'octets larges

/phpcms/modules/pay/respond.php à environ 16 lignes

le code original

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

est remplacé par

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

2. Vulnérabilité d'injection phpcms

/phpcms/modules/poster/poster .php se trouve à environ la ligne 221 de

if ($_GET['group']) {

, puis ajoutez

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

3 Patch pour la vulnérabilité de lecture de fichiers arbitraire causée par l'injection frontale de phpcms

.

/phpcms/ modules/content/down.php

(1) Remplacez la ligne 17

parse_str($a_k);

par

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

(2) Ligne 89

parse_str($a_k);

Remplacer par

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

(3) Ajouter

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

après la ligne 120 de

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

4. Vulnérabilité d'injection phpcms

/phpcms/ modules/member/index.php se trouve à la ligne 615

Code original :

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

Remplacé par :

$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 Vulnérabilité d'injection SQL PHPCMS V9.6.2.

(1) phpcms/libs/classes/param.class.php se trouve à peu près à la ligne 109

Le code original

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

est remplacé par

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

(2)/phpsso_server/phpcms/libs/classes/param.class.php se trouve à environ 108 lignes

Le code original

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

est remplacé par

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

6. Un problème logique quelque part dans phpcms a fait que getshell

/phpcms/libs/classes/attachment.class.php se trouvait à environ la ligne 143 après

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

et ajoutez

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

De cette façon, ajoutez un jugement. Si les formats de fichiers autorisés sont 'gif', 'jpg', 'jpeg', 'bmp', 'png', continuez, sinon il va sauter. Bien sûr, les formats ici peuvent être augmentés selon les besoins.

7. La vulnérabilité d'injection phpcms

/api/phpsso.php se situe à environ 128 lignes

Remplacer le code d'origine

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

avec, code deux-en-un

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

8. Des problèmes avec l'algorithme de génération de clé d'authentification phpcms entraînent une fuite de clé d'authentification

Régénérez la valeur de la clé selon la fonction suivante. , puis recherchez les caches/configs Remplacez simplement les deux paramètres dans /system.php et tout ira bien

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

Site Web PHP chinois, un grand nombre de

Tutoriels PHPCMS gratuits, bienvenue pour apprendre en ligne!

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer