Limpieza WordPress local — backdoor reset.php + scripts migración + updraft (2026-05-26) #68

Closed
opened 2026-06-28 19:14:02 +00:00 by rafa · 0 comments
Owner

Labels: area:infra, security

Limpieza WordPress local — 2026-05-26

Continuación de #50 (reorganización backups/copias). Aquí se limpia wordpress/ del WP local Docker.

🚨 Hallazgo de seguridad

wordpress/reset.php (80 B) era una utilidad creada por nosotros para resetear la contraseña del admin:

<?php include("/var/www/html/wp-load.php"); wp_set_password("Logan1234", 1); ?>

Si esto se hubiera sincronizado a producción y quedado accesible vía web, cualquiera con la URL podría tomar el control del sitio. Borrado el 2026-05-26.

Verificación: este fichero no existe en producción (feadulta.com es Joomla, no WP).

Resumen

Categoría Antes Después Ahorro
wordpress/ total 7.8 GB 5.7 GB −2.1 GB
Raíz WP — ficheros no estándar 30 (.php/.sh/.csv) 0
wp-content/updraft/ 2.9 GB (67 backups + 32 logs) 787 MB (15 backups) −2.1 GB
wp-content/themes/ 6 (54 MB) 2 (35 MB) −19 MB
Dirs vacíos 3 0
Plugins (basura) hello.php + .zip 1.9 MB 0 −1.9 MB

Cambios aplicados

1. Raíz WP

Movidos a archive/wp-migration-scripts/ (25 ficheros, ~280 KB) — scripts PHP/Bash de Feb-Mar 2026 que se usaron durante la migración K2 → WP. Inventario detallado en archive/README.md (FileBird folders, importación masiva, migración de metadatos, fixes).

Borrados:

  • reset.php (backdoor — ver arriba)
  • wp-config-docker.php (plantilla original del Docker WP, sin uso)
  • clasificacion_articulos.csv (duplicado del que ya está en archive/logs-migracion/)

2. wp-content/updraft/

Política de retención aplicada (de 67 backups → 15):

  • Backup completo Feb-02: 5 zips (db + others + plugins + themes + uploads), 227 MB
  • 1 db por mes: Feb-28, Mar-15, Abr-30
  • Últimos 7 días: May 20–26 (db diarios)
  • Borrados: 47 backups intermedios + 32 logs log.*.txt

updraft/plugins-old/ (98 MB) se conserva por referencia — son los plugins del WP antiguo de feadulta.org pre-migración (advanced-ads, gspeech, text-to-audio, wordfence, wp-super-cache, wordpress-seo, etc.).

3. wp-content/themes/

Borrados (no usados):

  • generatepress, kadence, twentytwentythree, twentytwentyfour

Conservados:

  • astra — tema activo
  • twentytwentyfive — necesario para FSE single post template (wp_posts ID 42359)

4. wp-content/plugins/

Borrados:

  • hello.php (Hello Dolly de WP por defecto)
  • delete-duplicate-posts.zip (instalador antiguo, 1.9 MB — el plugin sigue extraído en su carpeta)

Plugins FG Joomla to WordPress (3 carpetas, ~10 MB) se conservan — decisión del usuario por si vuelve a haber un delta.

5. Dirs vacíos

Borrados: wp-content/plugins-old/, wp-content/upgrade/, wp-content/upgrade-temp-backup/.

Verificación de seguridad

  • uploads/: 0 ficheros .php (no hay webshells)
  • plugins-old/: vacío (no hay residuales)
  • Sin .ico/.gif/.bak sospechosos disfrazados de imagen
  • Raíz WP: solo los 17 ficheros estándar de WordPress + wp-config.php + symlink fea → /var/www/html (necesario para servir en /fea/)

Commits

  • 587d718 chore(wp): limpieza wordpress/
  • e2ea90d chore(wp): registrar borrado de scripts de raíz WP

Notas

  • Cambios sin commitear en working tree: docker-compose.yml, wordpress/license.txt, readme.html, wp-*.php (varios) — son anteriores a esta sesión.
  • wp-content/uploads/ (4.7 GB) no se ha tocado — contenido legítimo de la migración.
**Labels:** area:infra, security # Limpieza WordPress local — 2026-05-26 Continuación de #50 (reorganización backups/copias). Aquí se limpia `wordpress/` del WP local Docker. ## 🚨 Hallazgo de seguridad `wordpress/reset.php` (80 B) era una utilidad creada por nosotros para resetear la contraseña del admin: ```php <?php include("/var/www/html/wp-load.php"); wp_set_password("Logan1234", 1); ?> ``` Si esto se hubiera sincronizado a producción y quedado accesible vía web, cualquiera con la URL podría tomar el control del sitio. **Borrado el 2026-05-26.** Verificación: este fichero **no existe** en producción (`feadulta.com` es Joomla, no WP). ## Resumen | Categoría | Antes | Después | Ahorro | |-----------|-------|---------|--------| | **wordpress/ total** | 7.8 GB | **5.7 GB** | **−2.1 GB** | | Raíz WP — ficheros no estándar | 30 (.php/.sh/.csv) | 0 | — | | `wp-content/updraft/` | 2.9 GB (67 backups + 32 logs) | 787 MB (15 backups) | −2.1 GB | | `wp-content/themes/` | 6 (54 MB) | 2 (35 MB) | −19 MB | | Dirs vacíos | 3 | 0 | — | | Plugins (basura) | hello.php + .zip 1.9 MB | 0 | −1.9 MB | ## Cambios aplicados ### 1. Raíz WP Movidos a `archive/wp-migration-scripts/` (25 ficheros, ~280 KB) — scripts PHP/Bash de Feb-Mar 2026 que se usaron durante la migración K2 → WP. Inventario detallado en [`archive/README.md`](../wiki/Archive) (FileBird folders, importación masiva, migración de metadatos, fixes). Borrados: - `reset.php` (backdoor — ver arriba) - `wp-config-docker.php` (plantilla original del Docker WP, sin uso) - `clasificacion_articulos.csv` (duplicado del que ya está en `archive/logs-migracion/`) ### 2. wp-content/updraft/ Política de retención aplicada (de 67 backups → 15): - **Backup completo Feb-02**: 5 zips (db + others + plugins + themes + uploads), 227 MB - **1 db por mes**: Feb-28, Mar-15, Abr-30 - **Últimos 7 días**: May 20–26 (db diarios) - Borrados: 47 backups intermedios + 32 logs `log.*.txt` `updraft/plugins-old/` (98 MB) **se conserva** por referencia — son los plugins del WP antiguo de feadulta.org pre-migración (advanced-ads, gspeech, text-to-audio, wordfence, wp-super-cache, wordpress-seo, etc.). ### 3. wp-content/themes/ Borrados (no usados): - `generatepress`, `kadence`, `twentytwentythree`, `twentytwentyfour` Conservados: - `astra` — tema activo - `twentytwentyfive` — necesario para FSE single post template (wp_posts ID 42359) ### 4. wp-content/plugins/ Borrados: - `hello.php` (Hello Dolly de WP por defecto) - `delete-duplicate-posts.zip` (instalador antiguo, 1.9 MB — el plugin sigue extraído en su carpeta) Plugins FG Joomla to WordPress (3 carpetas, ~10 MB) **se conservan** — decisión del usuario por si vuelve a haber un delta. ### 5. Dirs vacíos Borrados: `wp-content/plugins-old/`, `wp-content/upgrade/`, `wp-content/upgrade-temp-backup/`. ## Verificación de seguridad - ✅ `uploads/`: 0 ficheros .php (no hay webshells) - ✅ `plugins-old/`: vacío (no hay residuales) - ✅ Sin .ico/.gif/.bak sospechosos disfrazados de imagen - ✅ Raíz WP: solo los 17 ficheros estándar de WordPress + `wp-config.php` + symlink `fea → /var/www/html` (necesario para servir en `/fea/`) ## Commits - [`587d718`](../commit/587d718) `chore(wp): limpieza wordpress/` - [`e2ea90d`](../commit/e2ea90d) `chore(wp): registrar borrado de scripts de raíz WP` ## Notas - Cambios sin commitear en working tree: `docker-compose.yml`, `wordpress/license.txt`, `readme.html`, `wp-*.php` (varios) — son anteriores a esta sesión. - `wp-content/uploads/` (4.7 GB) no se ha tocado — contenido legítimo de la migración.
rafa closed this issue 2026-06-28 19:14:02 +00:00
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: rafa/feadulta#68