Annonce

Réduire
Aucune annonce.

Formulaire de contact

Réduire
X
 
  • Filtre
  • Heure
  • Afficher
Tout nettoyer
nouveaux messages

  • Formulaire de contact

    Les failles des scripts PHP peuvent causer de grands dommage a un site voire a un serveur. On craint souvent ,les failles aux variables GET aisement modifiables via l'URL, mais on connait moins souvent des failles semblables, dues aux POST. Il s'agit de modifier des variables POST d'un formulaire pour accéder a des informations ou des actions cachés, ou faire diverse injections de code.


    Avant d'exposer en détails la marche a suivre , il faut tout d'abord installer l'extension Firefox web Developper (http://addons.mozilla.org/fr/firefox/addon/60), après l'avoir installer cliquer sur formulaires ,puis sur Afficher les infos de formulaires , ce qui vous fait apparaître tous les champs hidden du formulaire, et également la possibilité de les modifier ...

    Exemple 1

    Soit un script mail.php chargée d'envoyer des emails et le formulaire HTML suivant :


    Code:
    <?php
    // ... code d'envoi de l'email ...
    ?>
    <form action="mail.php" method="post">
    <input name="to" type="hidden" value="[email protected]" />
    Votre adresse email: <input name="from" type="text" value="" /><br />
    Votre message: <textarea name="message"></textarea><br />
    <input type="submit" value="Envoyer" />
    </form>
    Ensuite sur ce formulaire html ,avec web developer , en cliquant sur la fonctionnalité Formulaires - Afficher les infos de formulaires on decouvre

    Code:

    Code:
    <input name="to"> |[email protected]|

    ce champ "to" étant devenu modifiable ,il devient alors possible de le transformer en



    Code:
    <input name="to"> |[email protected]|

    il ne reste plus a l'attaquant qu'a cliquer sur "envoyer" et si mail.php ne vérifie pas le champ to, c'est fait le mail est envoyer a [email protected]


    exemple 2 :


    formulaire html:

    Code:
    <form name="my_form" id="my_form" method="post" action="contact.php" onsubmit="return valid_form();">
                <table border='0' cellspacing="0" cellpadding="0" style="background-color:#F0F0F0;width:100%; border:none;">
            <tr>
                <td style="width:15; height:8; vertical-align:top;" align="left"><img height="8" width="8" alt="bloc_hg_F0F0F0.gif" src="../../images/bloc_hg_F0F0F0.gif" /></td>
                <td style="height:8;">&nbsp;</td>
                  <td style="width:15; height:8; vertical-align:top;" align="right"><img height="8" width="8" alt="bloc_hd_F0F0F0.gif" src="../../images/bloc_hd_F0F0F0.gif" /></td>
            </tr>
            <tr>
                <td colspan="3">
                    <table style="width:100%; text-align:left">        
          
                    <tr>
                    <td colspan="2"><input type="hidden" name="fok" id="fok" value="0" />&nbsp;</td>
                </tr>
                <tr>
                    <td style="width:25%;" align="right"><p><b>Votre nom:&nbsp;</b></p></td>
                    <td>&nbsp;&nbsp;<input type="text" size="30" name="cont_nom" value=" " />
                    </td>
                </tr>
                <tr>
                    <td style="width:25%;" align="right"><p><b>Votre email:&nbsp;</b></p></td>
                    <td>&nbsp;&nbsp;<input type="text" size="30" name="cont_email" value=" " onchange="check_Mail(this.value);" /></td>
                </tr>
                <tr>
                <td align="right"><p><b>
                Pays:&nbsp;</b></p></td>
                    <td>&nbsp;&nbsp;<select name="cont_pays" id="cont_pays">
                                                    <option id='sub_country57' value="57"
                                 selected="selected"
                                >
                                France</option>
                                                </select>
                    </td>
                </tr>
                <tr>
                    <td style="width:25%;" align="right"><p>Votre téléphone:&nbsp;</p></td>
                    <td>
                        &nbsp;&nbsp;<input type="text" size="30" maxlength="19" name="cont_phone" value="" onchange="this.value=format_Tel(this.value);check_Tel(this.value);" />
                    </td>
                </tr>
                <tr>
                    <td align="right"><p><b>Sujet:&nbsp;</b></p></td>
                    <td>&nbsp;&nbsp;<select name="cont_subject">
                        <option  value='[email protected]'>Information</option> <option  value='[email protected]'>Badge</option> <option  value='[email protected]'>Support&nbsp;technique</option> <option  value='[email protected]'>Paie&nbsp;&amp;&nbsp;Contrat</option> <option  value='[email protected]'>Problème&nbsp;de&nbsp;Compte</option>                     </select>
                    </td>
                </tr>
                <tr>
                    <td style="width:25%; vertical-align:top" align="right">
                        <p><b>Message:&nbsp;</b></p>
                    </td>
                    <td>
                        &nbsp;&nbsp;<textarea name='cont_msg' rows="7" id="cont_msg" cols="50"></textarea>
                    </td>
                </tr>
                <tr>
                    <td colspan="2">
                        <p align="center"><button class="bouton_vert" type="submit" alt="Valider">Valider</button></p>
                    </td>
                </tr>
            
        
                    </table>
            </td>
            </tr>  
            <tr style="background-color:#F0F0F0;">
              <td style="width:15; height:8; vertical-align:top;"  align="left"><img height="8" alt="bloc_bg_F0F0F0.gif" width="8" src="../../images/bloc_bg_F0F0F0.gif" /></td>
              <td style="height:8;"></td>
              <td style="width:15; height:8; vertical-align:top;"  align="right"><img height="8" alt="bloc_bd_F0F0F0.gif" width="8" src="../../images/bloc_bd_F0F0F0.gif" /></td>
            </tr>
        </table>
            </form>
    On remarque bien que c'est la méthode POST qui est utilisé, ensuite comme vous pouvez le remarquer pour l'adresse mail, ce n'est pas une zone de texte monoligne avec la balise <input> mais bien une balise <select> qui est utilisé:


    Code:
    <select name="cont_subject">
     <option  value='[email protected]'>Information</option> <option  value='[email protected]'>Badge</option> <option  value='[email protected]'>Support&nbsp;technique</option> <option  value='[email protected]'>Paie&nbsp;&amp;&nbsp;Contrat</option> <option  value='[email protected]'>Problème&nbsp;de&nbsp;Compte</option>                     </select>
    Donc comment faire pour modifier le select et le rendre éditable ??? rien de plus simple, il faut convertir le select en input type=text toujours avec l'extension web developper, vous sélectionnez (formulaires - convertir les éléments select en input type=text ) et c'est terminé



    Dans cet exemple imaginons que le fichier contact.php vérifie que l'adresse mail correspond bien à une des adresses mail disponible dans le select et la redirection sera donc impossible, mais ce n'est pas toujours le cas sur les formulaires disponible sur le web...

    Le but ici est bien évidement d'expliquer le principe et non pas de l'utiliser a des fins malveillantes, on est bien d'accord.

    Quel est l'interet de cette manipulation ? social engineering...


    Example 3 :

    Et si le script mail.php contient par exemple la ligne de code suivante :


    Code:
    <?php
     echo "Mail envoyé à : ".stripslashes($_POST['to']);
    ?>
    alors des injections xss deviennent possibles

    toujours avec l'extension web developer et la fonctionnalité formulaires ,puis Afficher les infos de formulaires on découvre

    Code:
    <input name="to"> |[email protected]|
    devenue modifiable, mais cette fois , on va pouvoir y injecter du javascript



    Code:
    <input name="to"> |<script>alert('pl3x')</script>|
    Je pense que ce n'est pas nécessaire d'aller plus loin, vous avez compris le principe

    voila c'est aussi simple que ça.

    @+
    Dernière modification par pl3x, 14 décembre 2016, 22h32.
Chargement...
X