From 0ee9a2eef52ed15679241c7c875a6e380e1c67ca Mon Sep 17 00:00:00 2001 From: rafa Date: Fri, 31 Jul 2026 19:34:12 -0400 Subject: [PATCH] cutover: retirar en cada import la inyeccion de SEO spam del #183 Buscando si Wordfence habia que reinstalarlo limpio (#183 comment-492) resulta que Wordfence NO esta instalado en produccion. Lo que si queda es una opcion llamada 'wordfence_core_options' que no es suya: es el payload del atacante, disfrazado con ese nombre para pasar por legitimo. Cifrado con un cesar de una letra (ejw->div, tuzmf->style, isfg->href). Una vez descifrado:
Un div fuera de pantalla con enlaces a un casino japones, con el campo output apuntando a wp_footer. Esto explica los "dos POST a wp-admin/options.php" del comment-492, que se habian atribuido a que el atacante toco la configuracion de Wordfence: lo que hacia era crear esta opcion. Hoy esta inerte porque quien la leia era el plugin wp-highlits, en cuarentena. Pero viaja dentro del dump, asi que CADA import la reintroduce en el servidor nuevo: por eso va aqui y no como limpieza manual de una vez. Se preserva el valor en /data/feadulta-migracion/evidencia-183/ antes de borrar. Barrido de la BD del destino: es la unica. 0 en post_content, 0 enlaces ocultos fuera de pantalla en el contenido, 0 referencias a las IPs del atacante. Nota sobre el escaneo previo del dump: lo di por limpio buscando --- scripts/cutover/post-import-seguridad.sh | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) mode change 100755 => 100644 scripts/cutover/post-import-seguridad.sh diff --git a/scripts/cutover/post-import-seguridad.sh b/scripts/cutover/post-import-seguridad.sh old mode 100755 new mode 100644 index 4d5973c..88e7288 --- a/scripts/cutover/post-import-seguridad.sh +++ b/scripts/cutover/post-import-seguridad.sh @@ -70,6 +70,28 @@ for hook in wpseo-reindex wpseo_permalink_structure_check wppb_review_check cozm fi done +echo "" +echo "=== 3b. Retirar la inyeccion de SEO spam del incidente #183 ===" +# La opcion 'wordfence_core_options' NO es de Wordfence (que ni siquiera esta instalado): +# es el payload que dejo el atacante, cifrado con un cesar de una letra, con un div oculto +# (left:-7585px) y enlaces a un casino japones, enganchado a wp_footer. Hoy esta inerte +# porque quien lo leia era el plugin wp-highlits, en cuarentena. Pero VIAJA EN EL DUMP, +# asi que cada import lo reintroduce. Se preserva antes de borrar (evidencia del #183). +SPAMOPT=wordfence_core_options +if [ $DRY -eq 1 ]; then + echo " [dry-run] preservaria y borraria la opcion $SPAMOPT" +else + ssh -o BatchMode=yes "$SRV" "bash -s" </dev/null; } + EV=/data/feadulta-migracion/evidencia-183; mkdir -p "\$EV" + m "SELECT option_value FROM wp_options WHERE option_name='$SPAMOPT';" > "\$EV/${SPAMOPT}.\$(date +%Y%m%d%H%M%S).txt" + m "DELETE FROM wp_options WHERE option_name='$SPAMOPT';" + n=\$(m "SELECT COUNT(*) FROM wp_options WHERE option_name='$SPAMOPT';") + echo " $SPAMOPT: preservada y borrada (quedan \$n)" +REMOTE +fi + echo "" echo "=== 4. Verificacion ===" echo " administradores que quedan:"