WordPress - Introducción y Arquitectura

🎯 Objetivo

Comprender la arquitectura básica, estructura de archivos, roles de usuario y los componentes clave de WordPress, el CMS más popular del mundo.


🧩 ¿Qué es WordPress?

WordPress es un CMS (Content Management System) de código abierto escrito en PHP que utiliza MySQL como base de datos y normalmente corre sobre un servidor Apache.
Es usado por más del 30% de los sitios web del mundo, desde blogs hasta e-commerce.

⚙️ Usos comunes

💡 Características

Categoría Descripción
🔧 Altamente personalizable Miles de plugins y temas disponibles
🧱 SEO Friendly Estructura y metadatos optimizados
👥 Gran comunidad Constante desarrollo y soporte
🔐 Riesgos Vulnerabilidades en plugins/temas de terceros

🧩 Ejemplos de plugins populares


💡 ¿Qué es un CMS?

Un Content Management System permite crear y gestionar sitios web sin escribir código directamente.
Separa el contenido de la estructura del sitio, simplificando el mantenimiento y la edición.

🧱 Componentes Clave

Componente Descripción
CMA (Content Management Application) Interfaz donde el usuario crea, edita y organiza contenido (WYSIWYG).
CDA (Content Delivery Application) Parte backend que ensambla y sirve el contenido al usuario final.

⚙️ Funcionalidades de un buen CMS


🧱 Estructura por Defecto de WordPress

WordPress puede instalarse en Linux, Windows o macOS.
En Linux, su ruta por defecto es:
📁 /var/www/html

🗂️ Árbol de directorios principal

gorosolea@htb[/htb]$ tree -L 1 /var/www/html
.
├── index.php
├── license.txt
├── readme.html
├── wp-activate.php
├── wp-admin
├── wp-blog-header.php
├── wp-comments-post.php
├── wp-config.php
├── wp-config-sample.php
├── wp-content
├── wp-cron.php
├── wp-includes
├── wp-login.php
├── wp-settings.php
└── xmlrpc.php

🧩 Archivos Clave

Archivo Descripción
index.php Página principal (home) del sitio.
license.txt Información de versión y licencia.
wp-activate.php Maneja la activación de usuarios nuevos.
wp-admin/ Interfaz administrativa y dashboard.
wp-login.php Página de autenticación de usuarios.
xmlrpc.php Mecanismo antiguo de comunicación remota (reemplazado por REST API).
wp-config.php Archivo de configuración principal (base de datos, claves, prefijos, etc.).
⚠️ Nota de seguridad:

Si wp-config.php es accesible públicamente, puede exponer credenciales del servidor.
Debe tener permisos restringidos (600 o 640) y no estar accesible desde el navegador.


🧠 Archivo de Configuración: wp-config.php

/** Database connection */
define( 'DB_NAME', 'database_name_here' );
define( 'DB_USER', 'username_here' );
define( 'DB_PASSWORD', 'password_here' );
define( 'DB_HOST', 'localhost' );

/** Authentication Keys and Salts */
define( 'AUTH_KEY',         'put your unique phrase here' );
define( 'SECURE_AUTH_KEY',  'put your unique phrase here' );
define( 'LOGGED_IN_KEY',    'put your unique phrase here' );
define( 'NONCE_KEY',        'put your unique phrase here' );

/** Table Prefix */
$table_prefix = 'wp_';

/** Debug Mode */
define( 'WP_DEBUG', false );

🔐 Claves y Salts → Usadas para proteger cookies y sesiones.
🧱 Prefix (wp_) → Puede cambiarse por seguridad para evitar SQL injection genérica.


📁 Directorios Importantes

wp-content/

Contiene:

gorosolea@htb[/htb]$ tree -L 1 /var/www/html/wp-content
.
├── index.php
├── plugins
└── themes
🚨 Riesgo:

Plugins mal configurados o con fallos pueden permitir RCE (Remote Code Execution) o file upload arbitrario.


wp-includes/

Contiene los archivos núcleo del CMS, que no deberían modificarse manualmente.

gorosolea@htb[/htb]$ tree -L 1 /var/www/html/wp-includes
.
├── theme.php
├── update.php
├── user.php
├── vars.php
├── version.php
├── widgets/
└── wp-db.php

Incluye funciones esenciales, librerías y componentes internos (JS, PHP, fuentes, etc.).


👥 Roles de Usuario en WordPress

Rol Descripción
👑 Administrator Control total: gestiona usuarios, plugins, temas y código.
✏️ Editor Puede publicar y gestionar posts (propios y ajenos).
🧑‍💻 Author Publica y gestiona solo sus propios posts.
🗒️ Contributor Puede escribir, pero no publicar contenido.
👀 Subscriber Usuario básico: solo puede leer y editar su perfil.
💡

Escalar privilegios de Author → Admin suele ser el objetivo de un atacante, ya que desde un usuario administrador se puede lograr ejecución remota de código (RCE).


🧩 Resumen

Concepto Clave
CMS Permite crear contenido sin escribir código directamente.
WordPress stack PHP + MySQL + Apache (LAMP).
Archivo crítico wp-config.php (contiene credenciales y configuración).
Directorio clave wp-content/ (plugins, temas y uploads).
Usuarios Roles jerárquicos con diferentes niveles de acceso.