N-PN White-Hat Project
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 Wink


RE: UAG CMS : Test de sécurité - ThibauT - 13-11-2012

Merci de vos réponses, je lui ai transmit Smile


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.

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 Wink

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 Smile. 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
$lang=>array('fr'=>1,'en'=>2);//définie un numéro, en fonction de la langue
$data=file('lang.txt');//récupère le contenu du fichier dans un array
foreach(file('lang.txt') as $key=>$value)//on le parcours
{
$a=explode('@-@',$value);//on explode chaque ligne selon le séparateur @-@
define($a[0],$a[$lang[$lettre_language]);//on définie la constante "test" par la variable "ceci est un test"
//avec $lang_user='en' la constante vaudras "This is a test"


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() {
ob_start('ob_gzhandler');
register_shutdown_function('ob_end_flush');
}
initOutputFilter(); 
utilité ? zéro. fait un fichier fonctions.fonc.php dans lequel tu met tes fonctions

"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 Smile
il se connecte, puis il voit le lien, pas avant