Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2018-1058 — Dimostrazione riproducibile basata su Docker dell'escalation dei privilegi di PostgreSQL CVE-2018-1058 tramite percorso di ricerca non controllato, con confronto tra ambienti vulnerabili e corretti. | Kitploit
Strumenti/GitHubGitHub/ccchme/cve-2018-1058
Escalation di PrivilegiAnalisi delle VulnerabilitàExploitApprendimento e FormazioneSicurezza dei DatabaseLab e Pratica
GitHubccchme/cve-2018-1058

CVE-2018-1058

Dimostrazione riproducibile basata su Docker dell'escalation dei privilegi di PostgreSQL CVE-2018-1058 tramite percorso di ricerca non controllato, con confronto tra ambienti vulnerabili e corretti.

Vedi Repository
3 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2018-1058 — Dimostrazione del Percorso di Ricerca di PostgreSQL

Questo repository contiene il rapporto finale e gli artefatti di riproducibilità per:

CVE-2018-1058: Escalation dei Privilegi in PostgreSQL tramite Percorso di Ricerca Non Controllato

L'obiettivo è dimostrare il fallimento di fiducia del percorso di ricerca alla base di CVE-2018-1058 utilizzando un ambiente Docker locale sicuro.

La demo non riproduce l'esatto percorso di esecuzione storico di pg_dump. Riproduce invece la stessa causa principale descritta nella guida di PostgreSQL: uno schema scrivibile da un attaccante contiene un oggetto simile, e un'altra sessione risolve un nome non qualificato a quell'oggetto.


1. Contenuti

root@kitploit:~
.
├── report.pdf
├── docker-compose.yml
├── README.md
└── scripts/
    ├── init.sql
    ├── init_safe.sql
    ├── exploit.sql
    ├── victim_query.sql
    ├── verify_qualify.sql
    └── fix.sql

Il rapporto finale è report.pdf. Include l'analisi scritta e gli screenshot corrispondenti agli output attesi di seguito.

Non è richiesto alcun Dockerfile. Il progetto utilizza immagini ufficiali di postgres.

Gli screenshot sono incorporati direttamente in report.pdf, quindi non vengono forniti come file immagine separati.

2. Requisiti

Installa:

  • Docker
  • Docker Compose
  • cliente psql, opzionale ma raccomandato

La demo utilizza due contenitori PostgreSQL:

Assicurati che le porte 15432 e 15433 siano libere.

Panoramica di esecuzione rapida

L'ordine di esecuzione previsto è:

  1. Avvia il servizio PostgreSQL 10.2 vulnerabile.
  2. Esegui exploit.sql come attacker.
  3. Esegui victim_query.sql come victim e osserva il prefisso CVE-2018-1058 DEMO:.
  4. Esegui verify_qualify.sql come victim e osserva l'output normale in minuscolo.
  5. Esegui fix.sql come postgres.
  6. Riesegui victim_query.sql e osserva l'output normale in minuscolo.
  7. Avvia il servizio PostgreSQL 10.3 rinforzato.
  8. Riesegui exploit.sql sulla porta 15433 e osserva permission denied for schema public.

3. Avviare l'ambiente vulnerabile

root@kitploit:~
docker compose up -d pg_vulnerable
docker compose ps

Risultato atteso: il servizio pg_vulnerable dovrebbe essere in esecuzione e mappato sulla porta 15432.

Controlla la versione di PostgreSQL:

root@kitploit:~
docker exec -it cve1058_pg_vulnerable psql -U postgres -d demo_cve1058 -c "SELECT version();"

Risultato atteso: PostgreSQL 10.2.

4. Ispezionare i ruoli del database

root@kitploit:~
docker exec -it cve1058_pg_vulnerable psql -U postgres -d demo_cve1058 -c "\du"

Ruoli attesi:

  • postgres
  • attacker
  • victim

L'attaccante non è un superutente PostgreSQL.

5. Eseguire l'exploit

Esegui lo script dell'attaccante:

root@kitploit:~
PGPASSWORD='AttackerPw!ChangeMe' \
psql -h 127.0.0.1 -p 15432 -U attacker -d demo_cve1058 \
-v ON_ERROR_STOP=1 -f scripts/exploit.sql

Output atteso:

root@kitploit:~
CREATE TABLE
GRANT
GRANT
CREATE FUNCTION

Questo crea:

  • una tabella innocua public.exploit_log;
  • una funzione falsa public.lower(varchar).

6. Attivare il comportamento vulnerabile come victim

root@kitploit:~
PGPASSWORD='VictimPw!ChangeMe' \
psql -h 127.0.0.1 -p 15432 -U victim -d demo_cve1058 \
-v ON_ERROR_STOP=1 -f scripts/victim_query.sql

Output atteso:

root@kitploit:~
CVE-2018-1058 DEMO: Alice Demo
CVE-2018-1058 DEMO: Bob Demo

Questo mostra che la query normale della vittima ha risolto lower(...) nella funzione controllata dall'attaccante.

7. Confermare l'effetto collaterale

root@kitploit:~
PGPASSWORD='AttackerPw!ChangeMe' \
psql -h 127.0.0.1 -p 15432 -U attacker -d demo_cve1058 \
-c "TABLE public.exploit_log;"

Risultato atteso: almeno due righe in public.exploit_log, una per ogni riga elaborata dalla query della vittima.

8. Mostrare la qualificazione difensiva

root@kitploit:~
PGPASSWORD='VictimPw!ChangeMe' \
psql -h 127.0.0.1 -p 15432 -U victim -d demo_cve1058 \
-v ON_ERROR_STOP=1 -f scripts/verify_qualify.sql

Output atteso:

root@kitploit:~
alice demo
bob demo

Funziona perché pg_catalog.lower(...) forza PostgreSQL a usare la funzione integrata.

9. Applicare la correzione sul contenitore vulnerabile

root@kitploit:~
PGPASSWORD='postgres' \
psql -h 127.0.0.1 -p 15432 -U postgres -d demo_cve1058 \
-v ON_ERROR_STOP=1 -f scripts/fix.sql

L'output atteso può includere:

root@kitploit:~
DROP FUNCTION
DROP TABLE
REVOKE
REVOKE

Quindi riesegui la query della vittima:

root@kitploit:~
PGPASSWORD='VictimPw!ChangeMe' \
psql -h 127.0.0.1 -p 15432 -U victim -d demo_cve1058 \
-v ON_ERROR_STOP=1 -f scripts/victim_query.sql

Output atteso:

root@kitploit:~
alice demo
bob demo

La funzione controllata dall'attaccante è sparita e la query restituisce stringhe minuscole normali.

10. Avviare l'ambiente rinforzato

root@kitploit:~
docker compose up -d pg_fixed
docker compose ps

Controlla la versione:

root@kitploit:~
docker exec -it cve1058_pg_fixed psql -U postgres -d demo_cve1058 -c "SELECT version();"

Risultato atteso: PostgreSQL 10.3.

11. Verificare che l'exploit fallisca nell'ambiente rinforzato

root@kitploit:~
PGPASSWORD='AttackerPw!ChangeMe' \
psql -h 127.0.0.1 -p 15433 -U attacker -d demo_cve1058 \
-v ON_ERROR_STOP=1 -f scripts/exploit.sql

Output atteso:

root@kitploit:~
ERROR: permission denied for schema public

Ciò significa che l'attaccante non può creare la funzione falsa in public, quindi la catena di attacco si ferma prima della risoluzione del nome.

12. Pulizia

Per fermare i contenitori:

root@kitploit:~
docker compose down

Per rimuovere i volumi e resettare completamente il progetto:

root@kitploit:~
docker compose down -v

13. Note

Questa demo è intenzionalmente innocua. Non ruba dati, non accede a file e non esegue comandi del sistema operativo.

L'exploit utilizza un prefisso di stringa visibile e una tabella di log per dimostrare che PostgreSQL ha risolto un nome di funzione non qualificato in un oggetto controllato dall'attaccante.

La CVE ufficiale riguarda pg_dump e altre applicazioni client. Questo repository dimostra lo stesso fallimento di fiducia del percorso di ricerca in un contesto didattico sicuro e riproducibile.

14. Risoluzione dei problemi

Se una porta è già in uso, ferma qualsiasi servizio PostgreSQL locale o modifica le porte host in docker-compose.yml.

Se l'output non corrisponde ai risultati attesi, resetta l'ambiente con:

root@kitploit:~
docker compose down -v
docker compose up -d pg_vulnerable

Se psql non è installato localmente, i comandi di ispezione della versione e dei ruoli possono comunque essere eseguiti con docker exec all'interno dei contenitori.

Se l'exploit fallisce su pg_vulnerable, assicurati che il database sia stato resettato e che scripts/exploit.sql sia eseguito prima di scripts/fix.sql.

15. Riferimenti

  • Avviso PostgreSQL CVE-2018-1058: https://www.postgresql.org/support/security/CVE-2018-1058/
  • Wiki PostgreSQL, Una Guida a CVE-2018-1058: https://wiki.postgresql.org/wiki/A_Guide_to_CVE-2018-1058:_Protect_Your_Search_Path
  • Note di rilascio di PostgreSQL 10.3: https://www.postgresql.org/docs/release/10.3/
  • NVD CVE-2018-1058: https://nvd.nist.gov/vuln/detail/CVE-2018-1058
  • MITRE CVE-2018-1058: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1058
Scarica lo strumento
ServizioVersioneNome contenitorePorta hostScopo
pg_vulnerablePostgreSQL 10.2cve1058_pg_vulnerable15432dimostrazione vulnerabile
pg_fixedPostgreSQL 10.3cve1058_pg_fixed15433confronto corretto/rinforzato