Votre question

[sérieux!] Pourriez-vous hacker mon site?

Tags :
  • Cms
  • Programmation
Dernière réponse : dans Programmation
10 Décembre 2006 17:08:59

Salut!

Je suis en train de finir le développement d'un de mes projets (il s'agit d'un CMS open-source), et je passe donc à la partie "sécuritée". Je voudrais donc savoir si vous pourriez essayer de hacker mon CMS. Nonon, c'est tout à fait vrai (allez sur la page d'acceuil, je confirme mes dires).

Le site est à la page: http://maeloun.free.fr/darkness
Vous pouvez télécharger les sources du CMS pour étudier la structure à l'adresse suivante: http://maeloun.free.fr/darkness/sources.zip
Si vous trouvez des failles, merci de me les envoyer à l'adresse: maeloun@yahoo.fr.

Après, si vous le souhaitez, je mettrais votre nom/pseudo dans la liste des contributeurs au projet.

A+!

Maeloun

Autres pages sur : serieux pourriez hacker site

10 Décembre 2006 19:52:02

porc
Anonyme
10 Décembre 2006 19:58:42

comment je fait pour faire mon forums pliz sur IFDN? je sais qu il faut faire nouveau sujet mais apres je suis pardu!
Dsl je suis or sujet!!
Contenus similaires
10 Décembre 2006 20:00:27

@assat: pourquoi porc?

@linux772: euh...pas la bonne section, ici ;-)
Anonyme
10 Décembre 2006 20:01:54

oui je C C juste pour te demander stp!
10 Décembre 2006 20:05:08

peut-être, mais tu aurais pu créer un nouveau sujet pour demander (avec le bouton qui est tout en bas de la page, à coté d'ajouter un sondage). D'ailleurs, c'est ce que tu veux, non?

Si ce n'est pas le cas, écris-moi par MP ton problème en le détaillant plus précisemment (^v°)
10 Décembre 2006 20:35:12

la vérification des mots clef présents dans la requête est foireuse : tu testes les mots un par un. Et dans l'histoire tu en oublies un sacré paquet dont un très important : DELETE

delete * from darkness_users; ça passe
a c 232 L Programmation
11 Décembre 2006 10:10:04

  1. $dir_fonctions = opendir("./fonctions");
  2.  
  3. while($fonctions = readdir($dir_fonctions)) {
  4. if(is_file("./fonctions/".$fonctions)) {
  5. include("./fonctions/".$fonctions);
  6. }
  7. }
  8. closedir($dir_fonctions);


Ca me paraît un peu dangereux de faire ça... non ?
Si quelqu'un arrive à uploader un fichier dans le dossier fonctions, il est inclus directement dans la page...
a c 232 L Programmation
11 Décembre 2006 10:20:47

  1. if($_GET['action']=="login" && !empty($_POST['pseudo']) && !empty($_POST['password'])) {
  2. $requete = mysql_query("SELECT `rang` FROM `darkness_users` WHERE `pseudo`='".$_POST['pseudo']."' AND `password`='".$_POST['password']."'");
  3. $requete = mysql_tri_tableau($requete,"incrementation");
  4. $_SESSION['user']['rang'] = $requete[0];
  5. if($_SESSION['user']['rang'] != "") {
  6. for($t=1; $t <= 50; $t++) {
  7. $_SESSION['user']['id_session'] .= strtolower(chr(rand(65,90)));
  8. }
  9. }
  10. header("Location: index.php?id_session=".$_SESSION['user']['id_session']);
  11. }


Tu ne fais pas de vérifications sur les valeurs POST pour le pseudo et le password.
On peut alors facilement passer Administrateur, en entrant dans le champs Login : ' OR rang='Administrateur, et la même chose dans le champs password.
Ce qui fait que ça va retourner forcément "Administrateur" comme rang, et on passe alors admin :) 
11 Décembre 2006 11:00:38

Omar, ça ne saute pas aux yeux mais sa fonction securiser_var (ou qqch comme ça) qu'il appelle un peu avant se charge de repérer certains mots clef pour éviter les injections.
cette vérification n'est pas très efficace, il oublie des mots clefs (comme le delete), et on peut tout à fait passer O"."R à la place de OR
a c 232 L Programmation
11 Décembre 2006 12:37:10

non, il ne le fait qu'avec le tableau $_GET, pas avec le tableau $_POST (de mémoire, j'ai pas revérifié là)


Edith me signale qu'après vérification, il ne le fait que sur $_GET en effet :
  1. foreach($_GET as $nom => $valeur) {
  2. $_GET[$nom] = securiser_var($nom);
  3. }
11 Décembre 2006 15:35:49

J'ai mis à jour le fichier de sécurisation des variables: la fonction est maintenant:

  1. <?php
  2. function securiser_var($var)
  3. {
  4. $autorisees = array(
  5. "id_session",
  6. "option",
  7. "action",
  8. "name",
  9. "newname");
  10. $oui = 0;
  11. foreach($autorisees as $nom => $val) {
  12. if(eregi($val,$var)) { $oui++; }
  13. }
  14. if($oui == 0) {
  15. $_GET[$var] = bcmul($_GET[$var],1);
  16. }
  17. return $_GET[$var];
  18. }
  19. ?>


De plus, il faut maintenant que les fonctions qui sont incluses soit également présentes dans une liste txt (php et javascript).

Enfin, j'utilise le codage md5 avant d'envoyer les données pour le login. Rien ne transite en clair. Vous pensez que ça va enlever le problème du [' OR `rang`='administrateur']?
11 Décembre 2006 16:49:38

Pour info hier ton mot de passe était en clair sur ton serveur ... aujourd'hui c'est son MD5 qui est sur le serveur ...
Or comme tu passes le MD5 dans l'URL ... il suffit de le mettre dans le header pour se connecter.
Bien sûr cela n'a pas grand chose à voir avec la robustesse de ton CMS ... c'était juste en passant en te demandant de remettre à jour le lien avec les dernières sources. ;) 


12 Décembre 2006 13:38:30

le fichier ./ini/sql.ini n'est pas suffisamment protégé.
le htaccess peut avoir été désativé. il faut écrire du code php entre <? ?> à l'intérieur et pas simplement du texte.
29 Décembre 2006 09:44:11

Salut!
Et bah je prends bien note de toutes ces remarques!
comme promis, je vous citerais sur une page du site que je vais créer (avec mon cms ^^).
@+ les poteaux!
22 Janvier 2007 18:40:12

Salut!
Après un long moment d'absence, je suis revenu voir le nom des "debuggeur", et je me suis aperçu que j'avais sauté le post de Toam, qui signalait pourtant une faille importante.
Donc la faille est corrigée (tu parlais bien du fait qu'il était possible d'accéder au répertoire 'temp', ouvrir une sauvegarde de la base et en récupérer le contenu?).
Et je poste aussi le nouveau code (version quasi-finie). J'ai rajouté pas mal de fonctionnalitées (comme les langues).
http://darkcms.free.fr/downloads/darkness_v1.0.zip
Voilou.

@+!

ps: c'te fois-ci, j'active la notification de réponse ;-)
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS