[RESOLU]Attention sujet pouvant heurter votre sensibilité

petitpouyopetitpouyo Member
novembre 2023 modifié dans Modifications

Hello hello à tous et toutes,
voila en tant que bidouilleur professionnel ;) je me suis posé une question sur la modification du nom d'utilisateur servant à se connecter à l'administration.

Seulement cela est-il possible ? J'ai regarder l'architecture de PluXml je suis bien tombé sur mon mot de passe qui est crypté donc logiquement décryptible ?

Attention je rassure les novices, lorsque je dis que j'ai regarder l'architecture ce n'est pas accessible en ligne mais en transférant le blog complet sur PC et le désosser.

Faisons un cas de figure:

Admettons demain je me fais "hacker" différents comptes sur divers sites et que je souhaites dans la hâte modifier mes identifiants PluXml cela est-il possible ou pas ?

Mots clés:

Réponses

  • Bonjour,

    pas d’inquiétude, ton mot de passe cryptée est justement crypté pour ne pas être utilisable, Le cryptage est fait avec md5 (mdp) et re-trifouiller en sha1() (avec un grain de sel) . Donc cryptées deux fois avec deux méthode et un grain de sel ..
    sha1() et md5() sont deux méthode de cryptage non réversible . Quasi impossible de retomber sur ton mdp en clair, même à partir d'un dictionnaire. Il n'y a pas d’inquiétude à avoir de ce coté.
    Le scénario que tu évoques est possible (sans avoir le mdp crypté) si ton mot de passe est facile à trouver et le même partout. Là tu peut t’inquiéter grave. Il te faut t'assurer d'avoir des mots de passe différent , de huit à douze caractères avec chiffres,majuscules,minuscules et caractères spéciaux. Il faut aussi t'assurer de ne pas les laisser trainé sur du papier ou une machine qui n'est pas la tienne ou laisser ouverte en public et ton absence.

    Pour te rassurer si tu estime que cela est pas encore assez, @bazooka à créer deux plugins pour sécuriser encore plus l'accés à l'admin :


    Sur un autre forum, j'avais laisser ce script pour voir si les cryptages natifs étaient efficaces et réversibles, PluXml n'a rien d'inquiétant:
    <?php  // NE pas utiliser en vrai - methode obsolete et codage à l'arrache, c'est juste une démo d'exemple / voir https://www.php.net/manual/fr/function.password-verify.php une fois l'intêret du stockage d'un mot passe crypté
    if(isset($_GET['monCompte'])) {
        $seeyou = base64_decode($_GET['monCompte']);
        header("location:  http://".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'].$seeyou );
    }
    ?>
    <!doctype html>
    <html lang="fr">
    <head>
      <meta charset="utf-8">
      <title>  test</title>
      <meta name="description" content=" test valid connexion ">
      <meta name="author" content="MyPc">
      <link rel="stylesheet" href="css/styles.css?v=1.0">
    </head>
    <style>
    body{display:grid;justify-content:center;}
    </style>
    <body>
        <h1 style="width:max-content;margin:1em auto;max-width:80%;">test generation lien connexion temporaire</h1>
    <?php
    
    if(isset($_POST['pwd1'])) {
        $mdp = $_POST['pwd1'];
        $mdp64         = base64_encode($mdp);
        $mdpdec64      = base64_decode($mdp64);
    
        $mdp_md5        = md5($mdp);
    
        $mdp_sha1       = sha1($mdp);
    
        $clef_de_sel   = 'UneChaineAuHasard'; // soit generation aléatoire ou par exemple prit dans les infos fournit par le membre (date d'inscription,pseudo,nbre de connexions,n] d'enregistrement , mail, etc  selon votre imagination)
    
    
        $mdp64_sel         = base64_encode($mdp.$clef_de_sel);
        $mdpdec64_sel      =str_replace($clef_de_sel, '',base64_decode( $mdp64_sel));
    
    
        $mdp_md5_sel    = md5($mdp.$clef_de_sel);
    
        $mdp_sha1_sel   = sha1($mdp.$clef_de_sel);  
    
        $mdp_sha1_md5_sel =sha1(md5($mdp).$clef_de_sel); // ou sha1($clef_de_sel.md5($mdp)) ou sha1($clef_de_sel.md5($mdp$clef_de_sel.)) ....
    
        $mdp_md5_sha1_sel =md5(sha1($mdp).$clef_de_sel); // ou md5($clef_de_sel.sha1($mdp)) ou md5($clef_de_sel.sha1($mdp$clef_de_sel.)) ....
        echo '<style>table,td ,th {border:solid 1px;text-align:center;padding:0.15em;} th {background:lightgray}.oups{color:crimson;background:yellow}</style>
        <p><b>Il n\'y a rien eu d\'enregistrer durant cette étape de l\'exemple</b>, mais voici quelques possibilités , <b>pour sécuriser un mot de passe il ne faut pas utiliser une méthode reversible</b>.</p>
        <table>
            <thead>
                <tr><th>   mot de passe</th>     <th> hachoir                       </th><th>chaine modifiée à stockée</th><th> decodage natif  disponible                       </th><th>résultat          </th><th>grain de sel                  </th></tr>
            </thead>
            <tbody>
                <tr><th rowspan="8">'.$mdp.'</td><td>base64_encode("pwd")           </td><td>'.$mdp64.'               </td><td> base64_decode()                                  </td><td class="oups">'.$mdpdec64.'     </td><td> non                          </td></tr>
                <tr>                             <td>base64_encode("pwd + sel" )    </td><td>'.$mdp64_sel.'           </td><td> str_replace(sel, "",base64_decode(chainee salée))</td><td class="oups">'.$mdpdec64_sel.' </td><td rowspan="  ">'.$clef_de_sel.' </td></tr>
                <tr>                             <td>md5("pwd")                     </td><td>'.$mdp_md5.'             </td><td>  non                                             </td><td>aucun sans hachage             </td><td rowspan="  ">non              </td></tr>
                <tr>                             <td>sha1("pwd")                    </td><td>'.$mdp_sha1.'            </td><td>  non                                             </td><td>aucun sans hachage             </td><td rowspan=" 5 ">'.$clef_de_sel.'</td></tr>
                <tr>                             <td>md5("pwd + sel")               </td><td>'.$mdp_md5_sel.'         </td><td>  non                                             </td><td>aucun sans hachage             </td>                                       </tr>
                <tr>                             <td>sha1("pwd + sel")              </td><td>'.$mdp_sha1_sel.'        </td><td>  non                                             </td><td>aucun sans hachage             </td>                                       </tr>
                <tr>                             <td>sha1(md5("pwd + sel")          </td><td>'.$mdp_sha1_md5_sel.'    </td><td>  non                                             </td><td>aucun sans hachage             </td>                                       </tr>
                <tr>                             <td>md5(sha1("pwd + sel")          </td><td>'.$mdp_md5_sha1_sel.'    </td><td>  non                                             </td><td>aucun sans hachage             </td>                                       </tr>
            </tbody>
        </table>
        <p>Si grain de sel, il vaut mieux que celui-ci soit unique à chaque enregistrement , il faut donc le stocker avec la chaine modifié</p>
        <p><a href="http://'.$_SERVER['SERVER_NAME'].$_SERVER['SCRIPT_NAME'].'">Retour au formulaire</a></p>
    </body>
    </html>';
    exit;
    }
    
    
    $date=date("Y-m-d");
    $duree ="+2day";
    if(isset($_POST['duree'])){$duree=$_POST['duree'];}
    $lastValidDate = strtotime($duree, strtotime($date));
    
    if(isset($_POST['name'])) { 
     echo '<p>demande enregistrée en attente d\'activation</p>';        
        $salt = '';
        $chaine = 'abcdefghijklmnpqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
        mt_srand((float)microtime()*1000000);
    
            for($i=0; $i<10; $i++) $salt .= $chaine[ mt_rand()%strlen($chaine) ];
    
        $limit=sha1($salt.md5($lastValidDate));
    
    
        $filelimit=$date;
        $nom =$_POST['name'];
        $prenom =$_POST['nickname'];
    
        $fileMember= $prenom.'.'.$nom.'.quand';
        $fileMemberContent= $salt.','.$date .','.$duree;
    
        $open = fopen($fileMember, "w") ;
        fwrite($open, $fileMemberContent);
        fclose($open);
    
        $lien = '?p='.$nom.'&pr='.$prenom.'&val='.$limit ;
        $secret=  base64_encode($lien);
    
        $lienValidationEnAttente = $_SERVER['SERVER_NAME'].$_SERVER['SCRIPT_NAME'].'?monCompte='.$secret  ;
    
        echo '<p> Pour finaliser votre inscription veuillez créer votre mot de passe en suivant ce lien:<br> <a href="http://'.$lienValidationEnAttente.'">Activer mon espace personnel</a>.</p>';
    
    
    
    }
    
    
    if(isset($_GET['p']) && isset($_GET['pr']) && isset($_GET['val']) ) {
        echo '<p>Bienvenue <b style="text-transform:uppercase">'.$_GET['pr'].' '.$_GET['p'].'</b>.</p>';
    
        if(@$open = fopen($_GET['pr'].'.'.$_GET['p'].'.quand', "r")) {
        while (($data = fgetcsv($open, 100, ",")) !== FALSE)     {        
          $array[] = $data; 
        }  
        fclose($open);
    
            foreach($array as $i => $line){ 
             $end = strtotime($line[2], strtotime($line[1]));
             $check=sha1($line[0].md5($end)); 
             //verif de la date de validité
                if ($check == $_GET['val']) {
                    // la date est elle dépasée ?
                    $dnow = strtotime($date);
                    if (($dnow < $end) || ($dnow == $end)) {
                        echo '<form action="" method="post"  style="display:grid;justify-content:center;">
                        <fieldset>
                            <legend style="text-transform:uppercase">Mise à jour du mot de passe</legend>
                                <div style="display:grid;grid-template-columns:auto auto;gap:0.5em;justify-content:center;">
                                    <label>Votre nouveau mot de passe</label>
                                    <input name="pwd1">
                                    <label>Retaper votre mot de passe</label>
                                    <input name="pwd2">
                                    <input type="submit">
                                </div>
                            </fieldset>
                        </form>';
                        unlink($_GET['pr'].'.'.$_GET['p'].'.quand');
                        }
                        else { echo 'Ce lien a expiré, veuillez renouveler votre demande d\'inscription';}
    
                }
            }
        }   else {      echo '<p style="color:orange">Il n`y a actuellement aucune demande au nom de <b style="text-transform:uppercase"> '.$_GET['pr'].' '.$_GET['p'].' </b> en attente de finalisation. </p>';    }
    }
    
    ?>
    <?php if((empty($_POST)) && (empty($_GET))) {?>
        <form action="" method="post"  style="display:grid;justify-content:center;">
            <fieldset>
                <legend style="text-transform:uppercase">Demande d'nscription</legend>
                <div style="display:grid;grid-template-columns:auto auto;gap:0.5em;justify-content:center;">
                <label for="name">Nom</label>
                <input type="text" name="name">
                <label for="nickname">Prénom</label>
                <input type="text" name="nickname">
                <label for="mail">Courriel</label>
                <input type="email" name="mail">
                <label for="duree">validité</label>
                <select name="duree">
                    <option value="-1 month">test date expirée</option>
                    <option value="+1 day">1 journée</option>
                    <option value="+2 day" selected>2 jours</option>
                    <option value="+10 day">10 jours</option>
                    <option value="+1 month">1 mois</option>
                    <option value="+1 year">1 ans</option>
                </select>
                <input type="submit">
                </div>
            </fieldset>
        </form>
    <?php } ?>
        <p><a href="http://<?php echo $_SERVER['SERVER_NAME'].$_SERVER['SCRIPT_NAME'].'">Retour au formulaire</a></p>'; ?>
    </body>
    </html>
    


    Cordialement,
    gcyrillus

    Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | demos sur free http://gcyrillus.free.fr/new | Thèmes: tester et télécharger @ https://pluxthemes.com
    Indiquez [RESOLU] dans le titre de votre question une fois le soucis réglè, Merci

  • novembre 2023 modifié

    Bonsoir,

    pour reprendre l'autre partie de ta question :

    Attention je rassure les novices, lorsque je dis que j'ai regarder l'architecture ce n'est pas accessible en ligne mais en transférant le blog complet sur PC et le désosser.

    En fait si , si:

    • tu as oublié de transférer tes fichier .htaccess sur ton hébergement apache
    • ou que htaccess n'est pas interprété par le serveur . exemple: un serveur Nginx

    Dans ces cas, le fichier users.xml s'affiche dans ton navigateur . mais pas d’inquiétude pour ton mdp.

    Pour refaire/modifier tes identifiants ,

    • il te suffit de le faire en local puis de transférer/écraser le fichier users.xml .
    • Pour l'oubli du mot de passe , tu as aussi la procédure dans la page de connexion de site ... si tu as bien une fonction mail fonctionnelle sur ton hébergement et indiqué une adresse mail valide à l'installation ou création de l'utilisateur.

    Ce sont des soucis qui ont était vus et solutionnés quasiment depuis les débuts de PluXml.

    Les failles proviennent généralement de

    • l'utilisateur (son mot de passe simple ou un stockage en clair facilement accessible ) ,
    • un plugin, ou un script embarqué(par un plugin) obsolète.

    Dernièrement , j'ai pus voir un site hacker via un vieux script en ligne et obsolète depuis quasi une décennie: lightneasy. mais d'autre comme archivarix plus récent, sont aussi des cibles recherchés par des hacker (via des robots) .

    Les failles recherché par les robots sont surtout celles des plugins de wordpress ou de script de test/configuration laissé sur un hébergement par un webmestre, logiciel, ou développeur qui aura oublié de les effacer.
    Cela concerne tout les CMS et scripts maison.

    Une seule ouverture permettant l'upload d'un fichier, ou le détournement d'un script pour modifier un fichier, et la porte est ouverte.

    cdt


    Cordialement,
    gcyrillus

    Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | demos sur free http://gcyrillus.free.fr/new | Thèmes: tester et télécharger @ https://pluxthemes.com
    Indiquez [RESOLU] dans le titre de votre question une fois le soucis réglè, Merci

  • Je t'attendais au tournant j'en étais sur que tu serais le premier à répondre. Merci pour ces explications claires qui va en rassurer plus d'un !

    Pour mes MDP j'utilise toujours des caractères alphanum inviolables ^^

Connectez-vous ou Inscrivez-vous pour répondre.