WordPress hacked & spam injections
May 19, 2008 on 8:52 pm | In General, Google, Python, actu informatique, developpement |Les spammers n’ont décidément plus de limite dans leur imagination
C’est ce que j’ai découvert en éditant un de mes articles sur ce blog. En regardant de près le code d’un de mes posts, je me suis rendu compte qu’a la fin du post, il y avait du spam ajouté en toute discretion…
Le spammer comence par injecter quelques tags :
puis insère une div cachée, non visible dans un navigateur :
puis insère tout un tas de liens sur le vi4gr4 et compagnie… Ceci est possible grâce à l’exploitation d’une faille de sécurité dans WordPress, qui permet au hacker de se créer facilement un compte administrateur. Cette faille a depuis été corrigée d’ou l’importance de toujours bien mettre à jour wordpress et tout logiciel en général.
Si en plus le serveur est mal configuré, le hacker peut alors prendre le controle total de la machine en uploadant le parfait kit du pirate PHP. Un outil de crackage a apparemment été développé pour automatiser la tache, polluer à la chaine des milliers de blogs, certainement pour longtemps, et ainsi gonfler au maximum la popularité des sites cibles aux yeux des moteurs de recherche.
L’origine de l’attaque provient apparemment de Pologne et Russie. Le resultat de cette attaque a engendré un blacklistage de l’index de google et j’ai donc crée un script Python qui répare les dégats en supprimant les spams :
import MySQLdb
#example spam tags to remove :
# …<!–1f195247aee1eba914f252716a78efba–><!–b845738c6a171d114ceaa35493a4f0dc–><div id=wp_internal style=position:absolute;left:-9112px><a href=http://www.eeeeee/zefzef/wp-content/themes/default/zefezff/eeeeee.html>…
cursor=db.cursor()
cursor.execute(“SELECT ID, POST_CONTENT FROM wp_posts ORDER BY ID DESC”)
posts = cursor.fetchall()
log=[]
for post in posts:
parts = re.split(r“<\!–\w{32}–>”, post[1])
if len(parts)>1:
clean_post = parts[0].replace(“‘”, “””)
sql = “update wp_posts set POST_CONTENT=’%s’ where ID=%s;” % (clean_post, post[0])
log.append(sql)
cursor.execute(sql)
print “updating post %s” % post[0]
db.close()
f=open(“wp_out.sql”, “w”)
f.write(“\n“.join(log))
f.close()
Attention à bien sauvegarder votre base de données avant d’executer ce script ! Si vous ne comprennez pas le script, ne l’executez pas !
J’attends impatiemment le retour du traffic si google veut bien me réindexer !
EDIT :Deux jours après application du script + demande de réexamen dans Google webmaster tools le traffic est revenu à la normale…
2 Comments »
RSS feed for comments on this post. TrackBack URI
Leave a comment
Powered by WordPress with Pool theme design by Borja Fernandez.
Entries and comments feeds.
Valid XHTML and CSS. ^Top^
Gloups…
et comment on fait quand on ne parle pas le Python dans le texte? Comment savoir si on été spammé?
Comment by lorran — 19 May 2008 #
lorran : pour ce hack la, il te suffit d’editer plusieurs de tes posts (anciens si possible) et de regarder en bas de chaque post dans le code HTML si rien n’a été ajouté.
Si tu as les logs de ton serveur, le mieux est encore de les regarder de pres, notamment tout ce qui est wp-admin : cat log | grep wp-admin
sinon cherches viagra dans MySQL
Comment by Juju — 20 May 2008 #