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

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

coldplay.xixi
Libérer: 2020-12-04 16:53:18
avant
14267 Les gens l'ont consulté

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

par

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

2. La vulnérabilité d'injection phpcms

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

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

Ajoutez ensuite

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

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

est remplacée par

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

(2) La position d'environ 89 lignes

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

est remplacée par

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

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

ajouter

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

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

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

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

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 à la ligne 108

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

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

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

est remplacé par un code deux-en-un

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

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;, //密钥
Copier après la connexion

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;, //加密密钥
Copier après la connexion
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!

Étiquettes associées:
source:csdn.net
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