Maison > Article > Opération et maintenance > Quelles sont les cinq injections sql de piwigo v2.9.5 ?
0x0 Introduction au projet
Adresse du projet : https://github.com/Piwigo/Piwigo
Introduction au projet : piwigo est un logiciel de studio photo open source pour Internet. Conçu pour les organisations, les équipes et les individus pour gérer votre photothèque.
Adresse officielle du site : piwigo.org
Télécharger sous Linux https://github.com/Piwigo/Piwigo/archive/2.9.5.zip Décompressez, responsabilisez, entrez dans le répertoire et installez à l'aide de docker :
docker run -d --name piwigo_mysql -e MYSQL_DATABASE=piwigo -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7 docker run -d -p 3000:80 -v $(pwd)/:/var/www/html/ --link piwigo_mysql:mysql --name piwigo nimmis/apache-php5
Vous pouvez voir l'interface de démarrage
Injection des paramètres de sélection et parents dans admin/group_perm.php:
la valeur de sélection est entrée dans la fonction move_categories sans vérification
En traçant la fonction move_categories, vous pouvez voir que la fonction décompose la valeur et la connecte directement à l'instruction SQL
Vous pouvez trouver la vulnérabilité après avoir testé
Le paramètre group_selection dans admin/group_list. .php existe une injection SQL :
Vous pouvez voir sur l'image que la valeur group_selection est mise dans $groups, et la valeur selectAction est mise dans $action
Dans le code, $action correspond à plusieurs actions, mais dans plusieurs actions Ici, $group est directement collé dans l'instruction sql Ici, je vais jeter un œil à la méthode delete :
Ici, il est très intuitif de voir qu'il est mis dans l'instruction sql.
三admin/ Injection SQL du paramètre cat_false dans user_perm.php :
Vous pouvez voir sur l'image que cat_false est mis dans la fonction, Nous suivons cette fonction et trouvons la fonction dans admin/include/functions.php, la valeur de $cat_false devient $category et est placée dans la fonction get_uppercat_ids pour traitement après avoir jugé s'il s'agit d'un tableau et jugé la quantité continue de suivre la fonction get_uppercat_ids. Le paramètre avec la vulnérabilité ci-dessus devient $cat_ids. Vous pouvez voir le $ dans l'image. Après un simple jugement, cat_ids est mis dans l'instruction SQL et la requête démarre Ce type de fonction vulnérable saute beaucoup, et il n'y a pas d'endroit évident pour voir l'écho. Cette situation est particulièrement adaptée à l'injection de temps. Nous utilisons La vérification peut trouver le retard dans l'ouverture de la page Web, prouvant l'existence de la vulnérabilité. 1 and if(ascii(substr(database(),1,1))>97,1,sleep(5))
Cette vulnérabilité est similaire aux trois vulnérabilités admin/user_perm ci-dessus. Les vulnérabilités php sont les mêmes, la même fonction est appelée, la seule différence est. l'utilisateur et le groupe, regardez l'image d'entrée pour comprendre :
sqlmap run
5 paramètre filter_category dans admin/batch_manager.php Injection existante :Regardons le code spécifique : Lorsque la clé 'filter_category_use' existe dans le package de publication, définissez la valeur 'filter_category' sur xx['category']
Descendez et trouvez xx['category'] Là où il est appelé, vous pouvez voir que la valeur est placée directement dans l'instruction SQL sans être filtrée.
Il convient de noter que ce lien de demande n'est pas trouvé dans la page Web et doit être ajouté manuellement dans le package de publicationfilter_category_use=on&filter_category=1
sqlmap et exécutez-le
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!