# SECURITY-04 — Vecteur d'entrée & nettoyage spam SEO

**Date** : 2026-06-24

## 1. Vecteur d'entrée (forensic — confiance moyenne-élevée)
**Infection : nuit du 1er août 2024, 01:33→01:47 UTC** (14 min, automatisé, tout par `www-data` UID 33).

| Heure UTC | Évènement |
|-----------|-----------|
| 01:33-01:37 | Modif fichiers **core WPML** par www-data |
| 01:40:07 | Dropper RCE `https_redirection-ru.php` (vendor WPML) |
| 01:41:15 | Webshell `uploads/2018/12/index.php` |
| 01:41:52 | Unzipper `validationEngine.jquery.php` |
| 01:47:02 | Kit zzna.ru `jquery.fitvids.php` |

**Vecteur : WPML `sitepress-multilingual-cms` v4.5.14 → CVE-2024-6386** (RCE via SSTI Twig dans `[wpml_language_switcher]`, divulguée fin août 2024, exploitée in-the-wild). Tous les backdoors résident dans/autour de WPML ; fichiers core WPML modifiés juste avant.
**Limite** : aucun log d'août 2024 (rétention Apache ~3 mois) → pas de preuve directe par log. IOC absents des logs conservés (l'attaquant n'est pas revenu via ces backdoors récemment).

## 2. Spam SEO (2ᵉ campagne, distincte) — ✅ NETTOYÉ
- **Auteur fantôme `post_author=13`** (utilisateur inexistant) = injection directe en base.
- Pages doorway casino/paris (Pinco, Mostbet, Plinko, Frumzi…) multilingues, liens cachés CSS vers `ckuvjtwp2.top` + domaines `.ru`. Fenêtre 2025-09-02→09-10.
- **Supprimé** : 98 (1ʳᵉ passe) + 23 (corbeille/révisions ratées par `--post_status=any`) = **121 entrées + révisions**. `author=13` → **0** (SQL direct). Orphelins meta/term nettoyés. Cache flush.
- **Vérifié non régénéré** : recount 0, aucun cron de régénération (seuls hooks WPML légitimes), aucun autre auteur fantôme, 6 users légitimes (5,11,27,28,29,30).

## 3. Reste à faire (actions hors agent)
- 🔴 **METTRE À JOUR WPML** (sitepress + acfml + wp-seo-multilingual + wpml-string-translation) → **ferme la CVE-2024-6386**. **Impossible via wp-cli** (premium, `update: none`) → à faire via le **compte/licence WPML (OTGS)**. **PRIORITÉ ABSOLUE.**
- ✅ **Plugins inutiles/à risque supprimés (2026-06-24)** : `worker`, `wp-time-capsule`, `acf-content-analysis-for-yoast-seo`, `all-in-one-wp-security-and-firewall`, `wordpress-seo` (Yoast) + mu-plugin `0-mu-wp-time-capsule.php`. Doublon ACF réglé : `advanced-custom-fields` (free) **désactivé**, ACF Pro reste actif. Liste avant : `/root/plugin-list.before-20260624.txt`. Vérifié : ACF rend toujours, site 200 (~18 ms cache).
  - Restant optionnel : `ultimate-social-media-plus` (abandonware) — laissé en place.
- 🟡 **Désindexer** les URLs spam dans Google Search Console.
- 🟡 **Étendre la rétention des logs** Apache (≥12 mois) + monitoring d'intégrité de fichiers (Wordfence/aide).

## Statut : ✅ vecteur identifié + spam nettoyé. WPML update = action utilisateur (critique).
