El archivo /wp-content/uploads/ es el directorio donde WordPress almacena los archivos subidos por los usuarios.
¿Qué contiene?
Normalmente encontrarás:
- Imágenes (JPG, PNG, WebP, GIF)
- Documentos (PDF, DOCX)
- Vídeos
- Archivos de audio
- Archivos generados por plugins (copias de seguridad, exportaciones, miniaturas, etc.)
¿Es una vulnerabilidad?
No por sí misma. Es una carpeta necesaria para el funcionamiento de WordPress.
Sin embargo, puede convertirse en un riesgo si está mal configurada.
Ejecución de archivos PHP (riesgo crítico)
El mayor problema es permitir que se ejecuten archivos PHP dentro de uploads.
Si un atacante consigue subir un archivo como:
shell.php
y el servidor lo ejecuta, podría tomar el control del sitio.
Como proteger este archivo:
Bloquea la ejecución de PHP en uploads y para ello puedes elegir entre estas tres vías principales:
Método 1: Editando el archivo .htaccess (Para servidores Apache)
Esta es la forma más directa y común. Debes crear o editar el archivo .htaccess que se encuentra dentro de la carpeta /wp-content/uploads/ y añadir el siguiente bloque de código.
Para deshabilitar el listado de archivos y bloquear la ejecución de PHP:
O, si usas una versión antigua de Apache:
Método 2: Usando un Plugin de Seguridad (Recomendado para la mayoría)
Si prefieres no tocar código, los plugins ofrecen una interfaz amigable y gestionan la complejidad por ti. Muchos plugins de seguridad incluyen esta funcionalidad en sus herramientas de "endurecimiento" ("hardening").
- Plugins de seguridad general: Herramientas como Sucuri Security, iThemes Security o All In One WP Security suelen tener una opción en sus ajustes para "Bloquear archivos PHP en el directorio de uploads" y "Deshabilitar el listado de directorios".
- Plugins especializados: Existen plugins como Protect Uploads o Media Library Folders que se centran específicamente en proteger esta carpeta. "Protect Uploads" añade un archivo index.php o configura el .htaccess por ti para ocultar el contenido y también ofrece funciones adicionales como marcas de agua en imágenes.
Para servidores Nginx
Si tu hosting usa Nginx (en lugar de Apache), el archivo .htaccess no funciona. En su lugar, deberás añadir una regla en la configuración del servidor. Si no te sientes cómodo haciéndolo, tu proveedor de hosting puede ayudarte. La regla a añadir es la siguiente:
¿Es recomendable incluirlo en un escáner de seguridad?
Sí. Un escáner de seguridad puede comprobar aspectos como:
- Si el listado de directorios está habilitado.
- Si es posible acceder a archivos sensibles.
- Si existen archivos PHP u otros ejecutables en uploads.
- Si hay copias de seguridad expuestas.
- Si la configuración del servidor permite la ejecución de scripts en esa carpeta.
En resumen, /wp-content/uploads/ no es una vulnerabilidad en sí, pero es una de las ubicaciones más importantes para revisar durante una auditoría de seguridad, ya que una mala configuración o un plugin vulnerable pueden convertirla en un punto de entrada para un atacante.