Les fonctions des programmes CGI sont puissantes, mais c'est précisément à cause de cela que si vous, en tant que développeur CGI ou administrateur système, ne faites pas attention à l'écriture et à la configuration des programmes CGI, votre système sera criblé de trous. Cet article traite des problèmes de sécurité de CGI.
3. Sécurité de CGI
La fonction du programme CGI est puissante. Il peut non seulement avoir les fonctions des programmes ordinaires, mais également publier les résultats du programme sur le WEB. Mais précisément parce que les fonctions des programmes CGI sont si puissantes, si vous, en tant que développeur CGI ou administrateur système, ne prêtez pas attention à l'écriture et à la configuration des programmes CGI, votre système sera criblé de failles, permettant à certains utilisateurs illégaux d'en profiter. d'eux.
La sécurité mentionnée ici n'est pas causée par la spécification CGI, mais par une programmation et des paramètres système incorrects. La spécification CGI permet aux utilisateurs de profiter de la puissance de calcul du serveur. Ce sont des calculs incorrects sur le serveur qui conduisent à des vulnérabilités de sécurité du système. Ci-dessous, je donne une vulnérabilité de sécurité CGI sur les systèmes UNIX. Cette vulnérabilité est très courante.
# !/usr/local/bin/perl
# formmail.cgi
nécessite "cgi.pl" ;
# Lancez l'application de messagerie "/bin/mail" avec l'en-tête Objet : depuis le champ "formname"
open (MAIL, "|/bin/mail -s '".$input{"formname"}."' webweave");
# Ajouter le champ d'envoi "formcontents" comme corps du message
PRint MAIL $input{"formcontents"};
fermer(MAIL);
sortie(0);
Dans cet exemple, le programme CGI soumet les informations du formulaire à /bin/mail et les envoie au serveur webveave. Dans la plupart des cas, ce programme CGI peut terminer la tâche normalement, mais ce programme CGI ne filtre pas les informations saisies par l'utilisateur dans le formulaire WEB, laissant ainsi des risques de sécurité. Lorsque des utilisateurs ou des personnes ayant des arrière-pensées saisissent des données incorrectes, cela peut provoquer des erreurs système ou obtenir des autorisations indues.
Par exemple, l'utilisateur renseigne le contenu suivant dans le "formname" du formulaire WEB :
"ls /etc/passwd '[email protected] #'
Le contenu de /etc/passwd sera affiché dans le navigateur WEB de l'utilisateur. Si le fichier passwd de ce système UNIX n'a pas d'ombre, l'utilisateur peut utiliser ce contenu pour tenter de déchiffrer le mot de passe en utilisant crack jack ou crack john !
Comme mentionné précédemment, la sécurité CGI relève de la responsabilité des programmeurs et des administrateurs système. Je vais maintenant parler des éléments auxquels les deux doivent prêter attention :
Le métier d'administrateur système :
1. Coopérer avec les programmeurs pour partager des informations sur la sécurité du serveur, vérifier les codes de chacun en même temps et découvrir les problèmes de sécurité dans le code en temps opportun.
2. Utilisez un bon logiciel serveur et visitez souvent le site WEB du logiciel serveur pour connaître les dernières informations.
3. Limitez les utilisateurs du serveur à des hôtes réseau spécifiques, utilisez la fonction de gestion de la sécurité du serveur, définissez le contrôle d'accès au routage, etc.
4. Restreindre les fonctions CGI, restreindre certains services avancés aux utilisateurs de confiance, limiter l'utilisation des programmes CGI testés aux développeurs et fournir uniquement aux utilisateurs des programmes CGI testés.
5. Lorsque vous utilisez les programmes CGI d'autres personnes, vérifiez soigneusement le code.
6. Limitez l'utilisation des programmes CGI à un environnement protégé, configurez le serveur sur un accès utilisateur non privilégié et configurez un compte ou un groupe en cours d'exécution spécifiquement pour les programmes CGI.
7. Configurez le serveur exécutant le programme CGI en dehors du pare-feu. Il convient de noter que le serveur exécutant le programme CGI doit être configuré en dehors du pare-feu s'il est configuré à l'intérieur du pare-feu, une fois que les utilisateurs illégaux ont découvert la vulnérabilité de sécurité de. le serveur du programme CGI, ils le feront. Vous pouvez contrôler tous les hôtes à l'intérieur du pare-feu !
8. Réduisez la priorité d'exécution des programmes CGI pour empêcher les utilisateurs d'exécuter de manière malveillante un grand nombre de programmes CGI provoquant une surcharge du serveur.
9. Abonnez-vous aux e-mails sur la sécurité du réseau et participez aux groupes de discussion sur la sécurité du réseau.
Emplois de programmeur CGI :
1. Coopérer avec l'administrateur système pour comprendre les informations de sécurité du système et vérifier les codes de chacun.
2. Utilisez des programmes de bibliothèque fiables et vérifiez le code source des programmes de bibliothèque.
3. Obtenez le nom du client auprès de REMOTE_HOST et limitez certaines fonctions avancées aux clients de confiance.
4. Si le serveur WEB fournit une confirmation du mot de passe HTTP, utilisez le mot de passe HTTP pour restreindre l'accès.
5. Filtrez les entrées de l'utilisateur et supprimez les données d'entrée illégales.
6. Limitez la taille des données d'entrée pour empêcher les utilisateurs malveillants de surcharger le serveur en saisissant de grandes quantités de données.
7. Évitez de transmettre les données utilisateur à d'autres applications pour empêcher les utilisateurs d'appeler l'interpréteur de commandes ou d'exploiter les vulnérabilités de sécurité d'autres applications.
8. Lorsque vous découvrez une vulnérabilité dans un programme CGI, n'en parlez à personne, et encore moins laissez des commentaires dans le programme. Ce que vous devez faire est de corriger la vulnérabilité immédiatement.
9. Apprenez à être un attaquant et découvrez les vulnérabilités de sécurité des programmes CGI.