Aplicar parches PHP 8.3 en feadulta.com producción y subir PHP del hosting #63
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Labels: area:infra, area:joomla, bug:critical, security
Objetivo
Aplicar en
feadulta.com(Joomla producción) los parches PHP 8.3-compatibles validados en local (issue #35) y subir la versión PHP del hosting de 7.4 a 8.3, manteniendo continuidad del sitio hasta el cutover DNS a WordPress.Estrategia: dos pasos
Paso 1. Subir los 5 parches PHP 8.3-compatibles a producción manteniendo PHP 7.4. Verificar que el sitio sigue funcionando en 7.4. Esto aísla el cambio de código del cambio de runtime: si algo rompe en 7.4, sabemos que es el código; si rompe al subir PHP, es el runtime.
Paso 2. Cambiar PHP del hosting a 8.3 desde cPanel. Verificar checklist post-upgrade. Rollback inmediato a 7.4 si algo rompe.
Pre-requisitos (ya hechos en #35)
/web:backup/prod-20260525-php83-compat/feadulta-web-20260525.tar.gz(~11G)fejoomla3:backup/prod-20260525-php83-compat/fejoomla3-20260525.sql.gz(~64M)joomla-php83/, BDjoomla_prod)Parches a aplicar (Paso 1)
modules/mod_featcats/helper.php— inicializarstdClassantes de asignarcol_classtemplates/fe_adulta_1/functions.php— añadir__construct()enArtxPageView,ArtxPage15,ArtxPage16,ArtxContent*(manteniendo métodos antiguos)templates/fe_adulta_1/index.php— limpieza de inyecciones de seguridad (ver sección abajo)modules/mod_k2_filter/helper.php— métodos apublic static, guards enextractExtraFields()modules/mod_k2_filter/tmpl/Default/template.php— guardis_array()antes decount()Diff exacto de cada parche en la réplica
joomla-php83/.Hallazgos de seguridad — barrido en curso
2026-05-25 — barrido inicial
Comparando
joomla-php83/(réplica restaurada de producción real) contra patrones de malware conocidos.Confirmado infectado:
templates/fe_adulta_1/index.phpProducción tiene MÁS inyecciones de las que se vieron al cerrar #35. La copia local antigua que usamos como referencia en #35 estaba menos infectada que la actual de prod. Inyecciones reales en producción:
Bloque final con cloaking SEO al servir Google/Bing/Yahoo bots (ya conocido del #35):
Hace petición a IP construida dinámicamente (3.1.zn.7nn) según user-agent del bot.
Link oculto a
apuestadeportiva24.peen/es/(URI exacto/es/):Link oculto a
apuestadeportiva24.co(siempre en header).Link oculto a
vavada.mobi/(URI/es/, posicionado fuera de pantalla a-7292px).Link oculto a
apuestadeportiva24.pe/betsafe/en/es/buscadoravanzado/itemlist/user/43-fraymarcos.html.Link oculto a
apuestadeportiva24.pe/betcris/en/es/otroscantos/1323-renuevame-senor-jesus-marcos-witt.html.Link oculto a
apuestadeportiva24.pe/inkabet/en/es/comentcol2.html.BOM (Byte-Order-Mark UTF-8) al inicio del fichero — indicador típico de fichero modificado por editor desconocido.
Todos estos cumplen patrón de SEO spam: links a casinos/apuestas insertados en URLs concretas con CSS oculto (
opacity:0.01,position:absolute,left:-7292px).Resto del árbol — NO infectado (de momento)
Barrido en
joomla-php83/con patrones:apuestadeportiva24,vavada.mobi,inkabet,betcris,betsafe,1xbet,pokerstars,casino-bonus) → solo entemplates/fe_adulta_1/index.php.HTTP_USER_AGENTcruzado congoogle/bing/yahoo→ solo en ese fichero.eval(base64_decode|gzinflate|str_rot13|gzuncompress)→ 0 hits.preg_replace(/e modifier)→ 0 hits.shell.phpde Text/Diff yimagick_ext_hack.phpson librerías legítimas).file_get_contents/curl_execcon superglobals → 0 hits.eval($_GET/$_POST/$_REQUEST)→ 0 hits.opacity:0.0X+position:absolute) → solo en ese fichero.REQUEST_URI == '/...'→ solo en ese fichero.BD
fejoomla3(réplicajoomla_prod) — NO infectadaBúsquedas con
LIKE '%apuestadeportiva%','%vavada%','%inkabet%','%botbotbot%'en:ew4r_modules.content: 0 hitsew4r_k2_items.introtext/.fulltext: 0 hitsew4r_content.introtext/.fulltext: 0 hitsew4r_template_styles.params: 0 hitsew4r_extensions.params: 0 hitsEl malware vive solo en filesystem, no en BD.
Tareas pendientes del barrido
joomla/(baseline limpia) yjoomla-php83/(réplica prod) — detectar cualquier fichero modificado fuera de los parches PHP 8.3 conocidos./libreria/por si tiene inyecciones propias.c99shell,r57shell, formularios de upload arbitrarios.Limpieza del template para producción (Paso 1)
El
templates/fe_adulta_1/index.phpque se sube a producción debe llevar:Checklist Paso 1 (parches en PHP 7.4)
/webjusto antes (rápido, tar de carpetas afectadas).https://feadulta.com/HTTP 200.https://feadulta.com/es/HTTP 200 sin enlaces spam visibles ni ocultos en código (curl + grep apuestadeportiva→ 0).https://feadulta.com/es/buscadoravanzado/itemlist/HTTP 200.Checklist Paso 2 (subir PHP a 8.3)
mysqli,curl,gd,mbstring,xml,zip,intl,openssl.https://feadulta.com/HTTP 200.Rollback
/web+ dumpfejoomla3desdebackup/prod-20260525-php83-compat/.Criterio de terminado
curl https://feadulta.com/es/ | grep apuestadeportiva→ 0 hits (limpieza de seguridad confirmada).