Maison > Article > Tutoriel CMS > 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('<','>'), '',$fileurl);
4. Vulnérabilité d'injection phpcms
/phpcms/ modules/member/index.php se trouve à la ligne 615 Code original :$password = isset($_POST['password']) && trim($_POST['password']) ? trim($_POST['password']) : showmessage(L('password_empty'),HTTP_REFERER);Remplacé par :
$password = isset($_POST['password']) && trim($_POST['password']) ? addslashes(urldecode(trim($_POST['password'] ))) : showmessage(L('password_empty'), 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], 'DECODE') : $default;est remplacé par
$value = isset($_COOKIE[$var])?addslashes(sys_auth($_COOKIE[$var],'DECODE')):$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], 'DECODE') : $default;est remplacé par
return isset($_COOKIE[$var]) ? addslashes(sys_auth($_COOKIE[$var],'DECODE')) : $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èsfunction download($field, $value,$watermark = '0',$ext = 'gif|jpg|jpeg|bmp|png', $absurl = '', $basehref = ''){et ajoutez
$extArray=explode('|',$ext); if(!empty($extArray) && is_array($extArray)){ foreach($extArray as $k => $v){ if(!in_array(strtolower($v), array('gif','jpg','jpeg','bmp','png'))); exit('0');//循环判断如果 有一个不符合,直接返回 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['uid'] = intval($arr['uid']); $phpssouid = $arr['uid'];avec, code deux-en-un
$phpssouid = intval($arr['uid']);
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 = '0123456789') { $hash = ''; $max = strlen($chars) - 1; for($i = 0; $i < $length; $i++) { $hash .= $chars[mt_rand(0, $max)]; } return $hash; } echo random(20, 'authkey').'<br/>'; echo random(32, 'phpssoauthkey');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!