UAG CMS : Test de sécurité - Version imprimable +- N-PN White-Hat Project (https://dev.n-pn.fr/forum) +-- Forum : Communauté (https://dev.n-pn.fr/forum/forumdisplay.php?fid=10) +--- Forum : Faites tester vos sites (https://dev.n-pn.fr/forum/forumdisplay.php?fid=21) +--- Sujet : UAG CMS : Test de sécurité (/showthread.php?tid=2392) |
UAG CMS : Test de sécurité - ThibauT - 12-11-2012 Salut les amis, J'ai un ami de ServerFight qui un codé un petit cms, qui vise plus des petits sites avec des petits hébergeurs sans base de données. J'aimerai que vous le testiez pour lui, enfin, vu qu'il ne fais pas partit des membres de cet board, je comprendrais votre refus. J'ai déjà fait une petite vérification, et je lui ai signalé que son script d'upload n'est pas vraiment sécurisé, ce n'est donc pas la peine de revenir dessus, il va corrigé ça. Vous pouvez télécharger le cms ici : http://julien-et-nel.be/UAG/ J'ai également upload son cms pour que vous puissiez le tester directement. http://uag.ostreaming.net Compte admin : id : test mdp : admin Je vous remercie d'avance, je lui enverrai votre bilan par mail. RE: UAG CMS : Test de sécurité - Drku - 13-11-2012 http://uag.ostreaming.net/admin/configuration.txt normal ? RE: UAG CMS : Test de sécurité - ThibauT - 13-11-2012 (13-11-2012, 00h06)Drku a écrit : http://uag.ostreaming.net/admin/configuration.txt normal ? Non, je viens de lui faire remarquer il y a peine 5 minutes :p RE: UAG CMS : Test de sécurité - Drku - 13-11-2012 Il devrait plutôt se connecter sur son espace d'administration avec l'aide d'une base de donnée. RE: UAG CMS : Test de sécurité - Swissky - 13-11-2012 En regardant rapidement: dans la source de http://uag.ostreaming.net/admin/ajouter_news.php on a : <script type="text/javascript">addEvt(window,'load',whizzywig);</script> et le body avec la fonction onload='whizzy..." bref c'est un peu useless ? Apparemment la page deconnexion est pas super sécure, imaginons que la mette en iframe dans un site quelconque , tu seras déconnecté directement (après c'est pas d'une réelle utilité ^^') Critique: http://uag.ostreaming.net/admin/configuration.txt Identifiant admin et autres données :Test pour n pn-fr-ThibauT--https://www.google.fr/-defaut1.css-test-admin- De base stocker des info en clair c'est pas bon , alors sois tu mets un .htaccess ou alors tu cryptes les données avec un algo de ta création, tu peux aussi faire un mix, je te conseille aussi de chiffrer le mot de passe en MD5. Le script d'upload , déjà dit mais je le redit , il est pas sécurisé contre la faille upload en général. Concernant la favicon et le logo j'ai l'impression qu'on peut inclure n'importe quelle page, j'ai pas testé , mais cela vaudrait le coup d'inclure une page php qui renvoi une image et script malveillant(enfin un fake pour le test) Je n'ai pas non plus eu le temps de vérifier le code si quelqu'un à le courage , il faudrait vérifier si des tokens sont utilisés sinon n'importe qui peut faire une CSRF et ainsi modifier ton configuration.txt Certains on été plus rapide ^^" @Drku, il a surement du faire ça pour simplifier la tache des utilisateurs RE: UAG CMS : Test de sécurité - ThibauT - 13-11-2012 Merci de vos réponses, je lui ai transmit RE: UAG CMS : Test de sécurité - JulienetNel - 16-11-2012 (13-11-2012, 00h13)Swissky a écrit : De base stocker des info en clair c'est pas bon , alors sois tu mets un .htaccess ou alors tu cryptes les données avec un algo de ta création, tu peux aussi faire un mix, je te conseille aussi de chiffrer le mot de passe en MD5. Pour le code, je faisais déjà un hashage. Cependant, je ne le faisais pas au bon endroit, donc il ne servait à rien. Le mot de passe dans le fichier n'est plus en clair normalement. Pour hasher, j'utilise sha1 et un petit salt. Voilà comment j'ai résolu le probléme, j'ai directement mis le hashage et le salt sur la requête post du mot de passe. Au lieu de mettre celui-ci dans le config, comme je le faisais précédemment. Par sécurité, je ne remplis pas non plus le formulaire du mot de passe sur la page de configuration ... il faut donc rentrer le code à chaque modification. Je fais aussi un str_replace sur "php". Les modifications ont été faites aussi sur le script d'installation. Il me restera à faire un truc pour chiffrer le reste des données. En ce qui concerne le script d'upload, j'utilise "uniqid()" à la place du nom du fichier. Ça permet d'avoir identifiant unique, si j'ai bien compris. Avec timestamp, j'aurais peut être eu un petit problème. Les fichiers avec une extension php sont déjà interdit, mais je me dis que ça pouvait éviter un truc du genre "test.php.jpg". Je ne suis pas sûr que ça soit suffisant. Pour éviter l'inclusion d'une page php, je remplace simplement php dans l'administration par un smiley avec str_replace. Il y avait déjà htmlentities. J'ai rajouté une protection anti-CSRF. Normalement, il y a un token différent à chaque connexion sur l'administration. Celui-ci est vérifié dans l'administration en + du mot de passe et du login. Je ne sais pas, si je me suis bien prit étant donner que c'est la premiere fois que j'utilise les tokens. Il faudra que je pense à faire expirer un token en fonction de 5 ou 10 min. Oui,j'ai fait ça pour simplifier l'installation du script. Je pense néanmoins à utiliser un jour sqlite, quand j'aurais apprit à gérer correctement "Php". Merci pour le retour qui ma été utile . Les modifications sont sur la 1.82. RE: UAG CMS : Test de sécurité - InstinctHack - 24-11-2012 Pour la trop longue liste de défine dans les fichiers lang : fichier lang.txt Code : test@-@ceci est un test@-@This is a test Code PHP : $lang_user='fr';//lettres qui défine la langue utilisé par l'utilisateur des fichiers de install n'ont pas de doctype ni de head ni de body et puis pourquoi les faire en plusieurs fichiers ? fait plutot install.php?page=1 avec un formulaire qui passe à install.php?page=2 Code PHP : function initOutputFilter() { "error_reporting(0);" déjà c'est mal, mieux vaut les logger dans un fichier derrière un htaccess, et puis plutot que la mettre plusieurs fois (et devoir changer chacune) mieux vaut faire un include il se connecte, puis il voit le lien, pas avant |