Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
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.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
postgres-basebackup-symlink — PostgreSQL 18.6 - Alta - Remota - Scrittura di file - pg_basebackup segue un symlink tar assoluto residuo di CVE-2026-6475 | Kitploit
Strumenti/GitHubGitHub/abraxas/postgres-basebackup-symlink
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingPaper e RicercaSicurezza dei DatabaseLab e Pratica
GitHub
abraxas/postgres-basebackup-symlink

postgres-basebackup-symlink

PostgreSQL 18.6 - Alta - Remota - Scrittura di file - pg_basebackup segue un symlink tar assoluto residuo di CVE-2026-6475

Vedi Repository
63 giorni 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

Abraxas Labs - postgres-basebackup-symlink

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  postgres-basebackup-symlink

postgres-basebackup-symlink

Classe: Scrittura di file Portata: Remota

PostgreSQL 18.6 (724edf9) - PostgreSQL Global Development Group

CVE-2026-6475 ha aggiunto path_is_safe_for_extraction per i nomi dei membri tar. I target dei symlink assoluti saltano ancora quel controllo, così i tablespace funzionano. astreamer_file.c esegue poi symlink() sul target e successivamente fopen(..., "wb") lo segue. Il formato predefinito di pg_basebackup è plain (-F p). pg_rewind create_target_symlink controlla il percorso e non crea mai il link.

Una sorgente ostile che parla BASE_BACKUP può piantare un symlink assoluto e sovrascrivere qualsiasi file che l'UID del backup può scrivere. Stesso modello di vittima del 6475. Non è una ri-segnalazione dei controlli sui nomi dei membri.

IDnessuna CVE al momento
ClasseScrittura di file (residuo del symlink tar assoluto di CVE-2026-6475)
PortataRemota (UI:R client vs PostgreSQL ostile)
CWECWE-59, CWE-22
CVSSAlto: 8.8 CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
ProdottoPostgreSQL
Affettotag 18.6 REL_18_6 (724edf9bde9d356724ad384a2e196edc3c9f80f7), pg_basebackup / pg_rewind in-tree
Authla vittima esegue il default pg_basebackup -D <dir> contro una sorgente dell'attaccante
LicenzaGNU Affero GPL v3.0
Labsolo 127.0.0.1

Cosa può fare un attaccante

Chi riesce a far eseguire a un operatore pg_basebackup -D contro il proprio PostgreSQL (lo stesso modello UI:R di CVE-2026-6475) può scrivere fuori da -D.

PrivilegioMetodo / sinkProvato in lab o dedotto
Integrità: scrivere un file fuori da -DTar BASE_BACKUP ostile: membro con typeflag '2' con un nome relativo sicuro (pg_tblspc/16384) e un link target assoluto, poi un membro regolare sotto quel nome. extract_link quindi create_file_for_extract fopen(..., "wb") senza O_NOFOLLOWProvato in lab. Ha scritto POSTGRES-BASEBACKUP-SYMLINK-WITNESS in /work/oracle/. La destinazione contiene il symlink. Il tar di controllo (senza symlink) ha lasciato l'oracle vuoto e ha scritto solo PG_VERSION dentro -D
Integrità: sovrascrivere shell rc, authorized_keys, una unit systemd utente o crontabStesso sink, qualsiasi percorso scrivibile dall'UID del clientDedotto. Questo lab non tocca quei file
Disponibilità: distruggere la config o le chiavi del clientStessa scritturaDedotto. Non dimostrato
Ricognizione del disco del clientl'estrazione è scrittura, non letturaChiuso
Attraversare .. o nomi di membri assolutipath_is_safe_for_extractionChiuso. Quello è CVE-2026-6475
SQL non privilegiato lato server / protocollo non autenticatoserver predefinito 18.6Chiuso. Questo residuo è il client
Backup solo tarpg_basebackup -F t memorizza il tar senza estrarloChiuso
RCE dentro postgresnon questo sinkChiuso

pg_rewind ha lo stesso residuo create_target_symlink / open(). Questo lab pilota solo pg_basebackup.

Come l'ho trovato

Ho fissato postgres/postgres REL_18_6 dopo l'ondata 18.6 (28 CVE, più il set 18.4/18.2 già presente su questo albero). Ventidue ricerche. Server predefinito, SQL non privilegiato, protocollo non autenticato: nessuno a questo livello. CVE-2026-6475 era il fratello da rileggere.

I nomi dei membri sono controllati. I target dei symlink assoluti no:

if (!is_absolute_path(linktarget) &&
    !path_is_safe_for_extraction(member->linktarget))
{
    pg_fatal("link target has unsafe path name: \"%s\"",
             member->linktarget);
}
extract_link(mystreamer->filename, linktarget);

create_file_for_extract è ancora fopen(filename, "wb"). Il commento in astreamer_file.c:351-356 dice che la mappatura viene applicata senza verificare che il link sia dentro pg_tblspc.

Vicoli ciechi già registrati: considerare il 6475 chiuso e andare avanti; puntare -D a una directory dati attiva; sovrascrivere shell rc per scena. Un server 18.6 onesto emette solo symlink pg_tblspc/<oid> e mette il contenuto dei tablespace in un archivio separato. Una sorgente malevola che parla BASE_BACKUP può mettere il membro regolare successivo nello stesso tar. Questo è il residuo.

Lab

python3 postgres-basebackup-symlink-Abraxas-Labs.py

oppure

cd lab
./run.sh

postgres:18.6 come immagine sorgente, che esegue un parlatore BASE_BACKUP. Il client è pg_basebackup in-tree dallo stesso tag (pg_basebackup (PostgreSQL) 18.6). Loopback 127.0.0.1:19370. Progetto compose postgres-basebackup-symlink. Non puntare -D a una directory dati attiva.

SUCCESS postgres-basebackup-symlink control-inside=yes oracle-outside=yes dest-is-symlink=yes image=postgres:18.6 how=pg_basebackup POSTGRES-BASEBACKUP-SYMLINK-WITNESS

La correzione

Trattare i target dei symlink assoluti come non sicuri a meno che non vengano riscritti da --tablespace-mapping. Aprire i file di estrazione con O_NOFOLLOW / lstat in modo che un link piantato non possa essere seguito. Applicare path_is_safe_for_extraction anche a link di rewind oltre che a path. Rifiutare un membro regolare il cui percorso attraversa un symlink che è uscito da -D.

Riferimenti

  • github.com/postgres/postgres tag REL_18_6 (724edf9bde9d356724ad384a2e196edc3c9f80f7)
  • src/fe_utils/astreamer_file.c · src/fe_utils/astreamer_tar.c
  • src/bin/pg_rewind/file_ops.c
  • Vicino patchato (nomi dei membri, non questo target): CVE-2026-6475
  • CWE-59 · CWE-22

Licenza

GNU Affero GPL v3.0. Vedi LICENSE. Solo lab su loopback. Nessuna garanzia.

Scarica lo strumento