Maison >Tutoriel CMS >PHPCMS >Collection de vulnérabilités de sécurité phpcms

Collection de vulnérabilités de sécurité phpcms

coldplay.xixi
coldplay.xixiavant
2020-12-04 16:53:1814256parcourir

Tutoriel phpcmsIntroduction aux vulnérabilités de sécurité courantes de phpcms

Collection de vulnérabilités de sécurité phpcms

Recommandé (gratuit) : phpcms Tutoriel

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

/phpcms/modules/pay / répond.php se trouve à environ 16 lignes

Remplacez le code d'origine

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

par

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

2. La vulnérabilité d'injection phpcms

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

if ($_GET['group']) {

Ajoutez ensuite

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

3. Injection frontale phpcms conduisant à un correctif de vulnérabilité de lecture de fichiers arbitraire

/phpcms/modules /content/down.php

(1) La position d'environ 17 lignes

parse_str($a_k);

est remplacée par

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

(2) La position d'environ 89 lignes

parse_str($a_k);

est remplacée par

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

[Les deux problèmes ci-dessus ont été corrigé dans la version 6.3]

(3) Environ 120 lignes après

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

ajouter

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

4. La vulnérabilité d'injection phpcms

/phpcms/modules/member/index.php se trouve à environ 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);

est 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 est situé à environ la ligne 109

Code original

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

Remplacé par

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

(2)/phpsso_server/phpcms/libs/classes/param.class.php à la ligne 108

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 de logique quelque part dans phpcms provoque getshell

/phpcms/libs/classes/attachment.class.php se trouve à la ligne 143 de

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

puis ajoutez

// 此处增加类型的判断
         if($ext !== &#39;gif|jpg|jpeg|bmp|png&#39;){
             if(!in_array(strtoupper($ext),array(&#39;JPG&#39;,&#39;GIF&#39;,&#39;BMP&#39;,&#39;PNG&#39;,&#39;JPEG&#39;))) exit(&#39;附加扩展名必须为gif、jpg、jpeg、bmp、png&#39;);
         }

7. La vulnérabilité d'injection phpcms

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

Le code original

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

est remplacé par un code deux-en-un

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

8. Un problème d'algorithme de génération de clé d'authentification phpcms entraîne une fuite de clé d'authentification

1. Dans /caches/configs/system.php, ajoutez le premier paramètre :

'alivulfix' => 'yes',


Après modification, la capture d'écran du code est la suivante :

2. Recherchez et modifiez auth_key, une chaîne de 20 chiffres ;

&#39;auth_key&#39; => &#39;2qKYgs0PgHWWtaFVb3KP&#39;, //密钥

3. Recherchez et modifiez auth_key, une chaîne de 32 bits ; personnalisez simplement ce que vous écrivez.


&#39;phpsso_auth_key&#39; => &#39;hjor66pewop_3qooeamtbiprooteqein&#39;, //加密密钥

Remarque : à cette étape, c'est la même chose que la réparation en un clic Cloud Knight d'Alibaba Cloud.

C'est juste que les utilisateurs du site Web ne peuvent pas se connecter pour le moment. L'étape la plus importante reste.
4. Connectez-vous au centre de gestion phpsso en arrière-plan. Dans le menu de navigation phpsso ——> Gestion des applications ——> Modifier la "clé de communication" à la valeur de 'phpsso_auth_key' définie à l'étape 3, puis cliquez sur Soumettre.

Les captures d'écran des étapes clés sont les suivantes :


Après la soumission, la page affiche une communication réussie, comme indiqué ci-dessous.



Pour plus d'apprentissage en programmation, veuillez prêter attention à la formation php colonne !

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