Se connecter avec
S'enregistrer | Connectez-vous

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

Dernière réponse : dans Programmation

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

Lassé par la pub ? Créez un compte

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°)
Expert Programmation

  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...
Expert Programmation

  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 :) 

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
Expert Programmation

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. }

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']?

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. ;) 


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 ;-)
Lassé par la pub ? Créez un compte
  • Contenus similaires :
Tags :
Tom's guide dans le monde