samedi 30 juillet 2011

Piratage 'classique' d'un site web

   Le rêve tunisien c’est devenir un hacker… Les photos de profils sur les réseaux sociaux regorgent des masques de Guy Fawkes en référence à anonymous –bien qu’anonymous ne sont pas des pirates dans le vrai sens du terme-. 
   J’ai toujours respecté les hackers. Des gens ingénieux et serviables... et je serai ravie de vous mettre sur le droit chemin afin de réaliser votre rêve.
   Je pratique le développement web depuis 3 ans. Viser un site tunisien est la tâche la plus simple à faire : Mon ancien employeur, par exemple utilise le même login, le même mot de passe et la même adresse url pour se connecter en backoffice sur tous ses sites et depuis 10 ans déjà. Très astucieux pour se protéger... Aucun de ses clients ne pensera qu’il est aussi bête pour se faire avoir de cette manière. 
   Bon, commençons notre premier cours : pirater un site en devinant son mot de passe.
  Pour un site drupal c’est carrément impossible de deviner le mot passe de l’administrateur puisque le backoffice n’est pas assemblé dans un sous-domaine à part comme celui de joomla ou prestashop. Et de façon générale, l’intégrateur web ne laisse pas la main au client pour ce genre site à cause de la complexité de sa manipulation. Moi, en tout cas, je n’ai jamais réussi à pénétrer un site drupal.
  Pour un site réalisé sous prestashop le plus dur est de deviner le sous domaine de backoffice puisque l’intégrateur le renomme lors de l’installation. Donc essayez dans un premier temps de le deviner. Généralement on utilise admin, backup ou console. Reste à connaitre maintenant l’adresse mail du développeur. On peut facilement l’avoir avec une petite recherche sur google ou parfois en commentaire sur le code source du projet. A 90% le mot de passe est 123456.
  Le plus simple à pirater chez nous est un site réalisé sous joomla et le plus agréable est que les tunisiens utilisent rarement un CMS autre que celui-là. Le sous-domaine du backoffice est administrator, le login c’est admin et le mot passe est soit admin, soit 123456. Ce coup marche pour 50% des sites. Donc essayez toujours.

dimanche 17 juillet 2011

Le reCAPTCHA - un projet de capitalisation des connaissances

  60 millions captchas sont résolus tous les jours, représentant 150 000 heures de travail. Un travail effectué en pure perte, puisque le test est immédiatement supprimé.

  En 2009, New York Times a eut l'idée de numériser ses archives à l'aide du projet reCAPTCHA. Les OCR (Optical Character Recognition, Reconnaissance Optique de Caractères) restent moins habiles à lire des textes que les humains. En faisant lire un texte numérisé par un être humain dans le cadre d'un CAPTCHA, ce dernier prouvera qu'il n'est pas un robot et transformer son effort en travail utile. Les CAPTCHA fournissent une armée de volontaires... involontaires. Ahhh!! J’ai toujours adoré les initiatives pour la capitalisation des connaissances.

   La grosse différence avec les CAPTCHA est que dans ces derniers, il faut connaître la valeur de la chaîne pour savoir si la réponse fournie par l'utilisateur est correcte. Justement, en OCR, on cherche à numériser un texte inconnu. ReCAPTCHA propose alors des CAPTCHA à 2 textes : l'un est déjà résolu, et l'autre n'est pas encore résolu. Au passage, reCAPTCHA.com collecte les numérisations et s'en sert dans le cadre de projets de bibliothèque virtuelle.

Utilisation de Recatcha en PHP

  L'utilisation de reCaptcha se fait via un service Web. Pour pouvoir utiliser ce service, il faut s'inscrire sur le site de http://www.recaptcha.com/, à l'aide d'une simple adresse courriel. A partir de la, il faut ajouter une liste de site Web : pour des raisons de sécurité, il n'est pas possible de partager une clé entre plusieurs domaines. Il y au une clé publique et une clé privée.
  Recaptcha.com propose une bibliothèque PHP avec des fonctions qui simplifient l'utilisation de recaptcha, et les limite à 2 appels de fonctions.
<?php
  echo recaptcha_get_html($publickey, $error);
?>


<?php
    $resp = recaptcha_check_answer ($privatekey,
                                        $_SERVER["REMOTE_ADDR"],
                                        $_POST["recaptcha_challenge_field"],
                                        $_POST["recaptcha_response_field"]);
//    $resp->is_valid : succes du test
//    $resp->error    : message d'erreur retourn&eacute;
?>