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

PHPCMS divers correctifs de vulnérabilité d'injection

爱喝马黛茶的安东尼
Libérer: 2019-11-21 10:24:52
avant
6085 Les gens l'ont consulté

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']);
Copier après la connexion

est remplacé par

$payment = $this->get_by_code(mysql_real_escape_string($_GET['code']));
Copier après la connexion

2. Vulnérabilité d'injection phpcms

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

if ($_GET['group']) {
Copier après la connexion

, puis ajoutez

$_GET['group'] = preg_replace('#`#', '', $_GET['group']);
Copier après la connexion

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);
Copier après la connexion
Copier après la connexion

par

$a_k = safe_replace($a_k); parse_str($a_k);
Copier après la connexion
Copier après la connexion

(2) Ligne 89

parse_str($a_k);
Copier après la connexion
Copier après la connexion

Remplacer par

$a_k = safe_replace($a_k); parse_str($a_k);
Copier après la connexion
Copier après la connexion

(3) Ajouter

$filename = date('Ymd_his').random(3).'.'.$ext;
Copier après la connexion

après la ligne 120 de

$fileurl = str_replace(array(&#39;<&#39;,&#39;>&#39;), &#39;&#39;,$fileurl);
Copier après la connexion

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);
Copier après la connexion

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);
Copier après la connexion

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;
Copier après la connexion

est remplacé par

$value = isset($_COOKIE[$var])?addslashes(sys_auth($_COOKIE[$var],&#39;DECODE&#39;)):$default;
Copier après la connexion

(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;
Copier après la connexion

est remplacé par

return isset($_COOKIE[$var]) ? addslashes(sys_auth($_COOKIE[$var],&#39;DECODE&#39;)) : $default;
Copier après la connexion

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;){
Copier après la connexion

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 
         } 
      }
Copier après la connexion

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;];
Copier après la connexion

avec, code deux-en-un

$phpssouid = intval($arr[&#39;uid&#39;]);
Copier après la connexion

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; 
?>
Copier après la connexion
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!

Étiquettes associées:
source:aliyun.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal