Joomla piraté : extensions, Super User et /images
Sur Joomla, l'entrée passe souvent par une extension abandonnée, un Super User fantôme ou un PHP déposé dans `/images`. Réinstaller le cœur sans les chercher recommence le cycle. Interdire l'exécution PHP dans les médias après le nettoyage évite la récidive la plus simple.
Extension abandonnée, Super User fantôme, PHP dans /images. Réinstaller le cœur sans les chercher recommence le cycle. Interdire le PHP dans les médias après.
Joomla se pirate rarement « tout seul »
Le cœur Joomla, tenu à jour, n'est pas une cible plus fragile qu'un autre CMS. Ce qui revient dans les constats : un composant oublié (formulaire, galerie, constructeur), un compte Super User créé à une heure étrange, un fichier PHP dans `/images` avec un nom anodin. Le guide Joomla piraté pose le cadre ; ici on détaille où regarder, dans quel ordre.
Réinstaller le paquet officiel par-dessus un site encore ouvert laisse l'extension sale, le Super User, le PHP médias. Le site « a l'air du cœur neuf ». L'attaquant n'a pas besoin du cœur. C'est le motif n°1 des Joomla que nous reprenons.
L'ordre reste celui des premiers gestes : constater, copier (même infecté), mot de passe du panel d'hébergement, puis seulement l'admin Joomla. Inverser laisse une session panel recréer le fichier que vous venez de retirer.
Extensions et cœur : lister avant de réinstaller
Dans l'administrateur : Extensions → Gérer. Notez ce qui n'a plus de mise à jour, ce qui n'est plus sur le site de l'éditeur, ce qui a un avis d'incompatibilité. Désactiver ne retire pas le dossier dans `/components`, `/modules`, `/plugins`. Les bots tapent des chemins connus. Extensions abandonnées.
Comparez le cœur au zip officiel de votre branche (4.x, 5.x), fichier à fichier, après copie. Une maj du cœur sur un site encore infecté casse parfois l'admin (erreur 500) et ne retire pas `/images/shell.php`. Maj sans casser : on rattrape les versions une fois propre.
Un ticket d'abus o2switch ou OVH cite souvent un chemin. Partez de ce chemin, puis listez tout `/images`, la racine, `tmp`, les overrides. La porte est ailleurs plus souvent qu'à l'endroit signalé. Compte suspendu.
- Inventaire des paquets, dates de dernière version.
- Dossiers encore présents après « désactivation ».
- Cœur comparé au zip éditeur, pas à une archive « found on the web ».
Le Super User fantôme et les groupes trop ouverts
Utilisateurs : un second Super User, e-mail jetable, nom générique (`admin2`, `sys`). Exportez la liste avant de supprimer : la date de création date l'entrée. Puis retirez, changez votre mot de passe, révoquez les sessions. Un Manager avec des droits d'installer des extensions est un Super User déguisé.
Les groupes Joomla se cumulent. Un compte « Traducteur » trop généreux suffit. Après incident, appliquez le moindre privilège : un ou deux Super User nominatifs, le reste en dessous.
Si l'admin Joomla est fermé, passez par la base (`#__users`) ou le panel. Ne recréez pas un Super User « temporaire » sans date de fin. L'hébergeur peut fournir une archive si le FTP est coupé. Archive déjà infectée : preuve, pas source de restauration.
PHP dans /images et fichiers à la racine
Joomla sert souvent de dépôt : PHP dans `/images`, double extension, fichiers à la racine au nom de cache ou de « restore ». Notez les dates, ne supprimez pas au hasard un `index.php` légitime. Isolez les suspects, comparez. Fichiers PHP inconnus à la racine.
Après nettoyage, interdisez l'exécution PHP dans les dossiers médias (règle serveur). C'est le correctif le moins cher contre la récidive « on upload un PHP en se faisant passer pour une image ». On ne publie pas ici la recette d'attaque ; votre hébergeur ou un prestataire pose la règle.
`tmp` et `cache` : parfois un PHP oublié. Videz le cache Joomla après, pas comme seul geste. Un cache qui ressert une page défigurée n'est pas une backdoor, mais il fausse les tests visiteurs.
Overrides de template et configuration.php
Les overrides dans `templates/votre-template/html` survivent à une maj du cœur. Un JS ou un PHP ajouté là tient. Comparez à une copie saine du template, pas seulement au core. Un template « premium gratuit » se traite comme un thème hors circuit.
`configuration.php` : mot de passe de base, parfois SMTP. Si le panel ou ce fichier a fuité, changez la base, le panel, l'admin — secrets distincts. Permissions strictes ensuite, pas 777 « pour que l'install marche ».
Un second `configuration.php` ou un backup `configuration.php.bak` joignable en HTTP est une fuite. Retirez-le du web après copie hors serveur.
Nettoyer sans perdre articles et modules
La base porte articles, menus, modules. On ne « réinstalle Joomla à neuf » que si plus rien n'est récupérable. On retire les ajouts, on conserve le contenu. Une sauvegarde Akeeba récente peut déjà contenir le Super User et le PHP images : on remonte à un point propre, on ne restaure pas « la dernière » par réflexe.
Les modules de la home sont parfois le seul endroit où un script a été collé (custom HTML). Lisez-les. Ce n'est pas une extension abandonnée ; c'est un champ texte. Ça survit à toutes les maj.
Multilingue, sh404SEF, overrides SEO : un piratage s'accompagne parfois de redirections. Vérifiez les composants de redirection avant de republier. Site qui redirige.
Après : PHP interdit dans les médias, moins de Super User
Règle médias, revue des comptes, liste des extensions à remplacer à froid, maj du cœur une fois propre, mot de passe panel distinct. Un WAF ensuite, pas pendant. WAF après piratage.
Si plusieurs sites Joomla / WordPress partagent le compte, nettoyez le compte. Isolation. Un Joomla 3 abandonné à côté d'un Joomla 5 « propre » est une porte.
Surveillez trente jours : `site:`, Super User, dates dans `/images`. Garantie 30 jours.
Quand le dossier dépasse un dimanche soir
Si vous ne savez pas comparer un fichier au zip Joomla, lire un access.log, ou si un formulaire collecte des données d'adhérents, déléguez. Association, mairie, école : le constat compte plus que la « petite structure ».
Un prestataire sérieux demande un accès révocable, fournit un écrit, ne vend pas une réinstall cœur comme un nettoyage. Choisir un prestataire.
Créer un espace : prix avant accès. En attendant : copie, panel, ticket factuel, pas de suppression au jugé dans `/images`.