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
DB_Audit_Research — Audit che si auto-sconfiggono: laboratorio riproducibile che mostra un ruolo PostgreSQL a bassi privilegi che acceca reversibilmente un auditor basato su trigger + avvelenamento dell'attribuzione (PG14/16), con difese. Dati sintetici; citate le primitive di CVE-2018-1058. | Kitploit
Strumenti/GitHubGitHub/mthamil107/db_audit_research
Strumenti DifensiviExploitPaper e RicercaConfigurazione ErrataSicurezza dei DatabaseAttacco AvversarioLab e Pratica
GitHubmthamil107/db_audit_research

DB_Audit_Research

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 →

Audit che si auto-sconfiggono: laboratorio riproducibile che mostra un ruolo PostgreSQL a bassi privilegi che acceca reversibilmente un auditor basato su trigger + avvelenamento dell'attribuzione (PG14/16), con difese. Dati sintetici; citate le primitive di CVE-2018-1058.

Vedi Repository
720 giorni faNon ancora revisionato
Condividi

Audit che si auto-sconfiggono — laboratorio riproducibile

DOI  Licenza: MIT (codice) / CC BY 4.0 (documentazione)

Ricerca sulla sicurezza difensiva che verifica se un ruolo di database a bassi privilegi, solo injection possa accecare reversibilmente un auditor basato su trigger e avvelenare l'attribuzione su PostgreSQL standard — e quali difese lo fermano davvero. Tutto viene eseguito in contenitori Docker locali e usa-e-getta con dati interamente sintetici (IP di documentazione RFC 5737, identità inventate). Non sono coinvolti sistemi, credenziali o dati reali.

Vedi il briefing del laboratorio in self-defeating-audits-lab.md.

Cosa fa

Costruisce la vittima "audit trigger" del wiki di PostgreSQL, ampiamente copiata, quindi elabora una matrice di fattibilità cella per cella su PostgreSQL 14 e 16, misurando — fuori banda — se ogni vettore d'attacco impedisce davvero la registrazione di una scrittura, se è reversibile senza lasciare tracce e quali difese lo neutralizzano.

Eseguirlo

root@kitploit:~
cd scripts
./00_up.sh 16          # bring up postgres:16-alpine on localhost:55432
./run_matrix.sh 16     # run every matrix cell + defenses -> ../results/RESULTS_pg16.md
docker rm -f sda_pg16  # free the port between versions
./00_up.sh 14
./run_matrix.sh 14     # -> ../results/RESULTS_pg14.md
./teardown.sh          # remove all lab containers

Richiede Docker. Utilizza le immagini -alpine (motore funzionalmente identico).

Cross-engine (famiglia MySQL + SQL Server)

Lo studio è riprodotto su altre due famiglie di motori. Famiglia MySQL (MariaDB, modello a trigger DEFINER) in scripts/mysql/:

root@kitploit:~
cd scripts/mysql
./00_up.sh 10.11 && ./run_matrix_mysql.sh 10.11   # -> results/RESULTS_mariadb_10.11.md
docker rm -f sda_maria_10_11 && ./00_up.sh 10.6 && ./run_matrix_mysql.sh 10.6

SQL Server (modello ownership-chaining) in scripts/mssql/ — viene eseguito su un'istanza LocalDB locale tramite sqlcmd dell'host (niente Docker; l'attaccante a bassi privilegi è modellato con l'impersonificazione EXECUTE AS USER):

root@kitploit:~
cd scripts/mssql
./run_matrix_mssql.sh        # -> results/RESULTS_mssql.md ; then ./teardown.sh

Avvertenza sulla riproducibilità (SQL Server). A differenza dei motori Docker, il terzo motore SQL Server ha una dipendenza dall'host: viene eseguito su un'istanza locale di SQL Server LocalDB tramite sqlcmd (percorso hardcoded in run_matrix_mssql.sh), quindi è solo Windows e non può essere ancorato a un digest di immagine. L'attaccante a bassi privilegi è modellato con l'impersonificazione EXECUTE AS USER (LocalDB supporta solo l'autenticazione Windows). I risultati sul comportamento del motore (DISABLE a residuo zero; la guardia DDL non intercetta DISABLE) sono indipendenti dal tipo di sessione e varrebbero per un login reale; i risultati sui privilegi sugli oggetti sono applicati fedelmente dall'impersonificazione. È il meno portabile dei tre motori — detto onestamente.

Risultato principale cross-engine: la classe shadow di search_path (1A/1B) non si trasferisce né a MySQL né a SQL Server (niente search_path), ma la sostituzione del trigger, il bypass dormiente e l'avvelenamento dell'attribuzione sì. Il binding dei privilegi DEFINER di MySQL rende l'accecamento più rilevabile; SQL Server, come PostgreSQL, consente un ripristino byte-perfetto e aggiunge una primitiva DISABLE TRIGGER a residuo zero che la sua stessa difesa DDL non intercetta. Confronto completo dei tre motori in FINDINGS.md.

Struttura

PercorsoDescrizione
scripts/00_up.shcontenitore usa-e-getta con versione bloccata (PostgreSQL)
scripts/mysql/vittima, attacchi, difese e orchestratore per la famiglia MySQL (MariaDB)
scripts/mssql/vittima, attacchi, difese e orchestratore per SQL Server (LocalDB)
results/RESULTS_mariadb_*.mdmatrici di fattibilità e difesa per la famiglia MySQL
results/RESULTS_mssql.mdmatrice di fattibilità e difesa per SQL Server
scripts/10_victim.sqlla vittima di audit secondo lo schema del wiki (trigger SECURITY DEFINER); parametri: pub_create, pin_path, app_owns
scripts/20_attacks.sqltutti i vettori d'attacco (1A/1B/1C, dormienza GUC, avvelenamento dell'attribuzione), una guardia \if per cella
scripts/30_defenses.sqlguardia con event trigger DDL + sink append-only con hash a catena
scripts/40_snapshot.sqlsnapshot del catalogo per l'object-diff di RQ2
scripts/run_matrix.shorchestratore: costruisce ogni cella, misura, scrive results/RESULTS_pg<VER>.md
scripts/teardown.shrimuove i contenitori
results/RESULTS_pg14.md, results/RESULTS_pg16.mdmatrici di fattibilità e difesa compilate per versione
results/_evidence_pg*.log, results/_snap_1C_*.txtprove grezze di comandi/output
FINDINGS.mdverdetto RQ1–RQ5 in linguaggio semplice, matrice difesa×attacco, posizionamento di novità, abstract

Risultato principale

  • 1A piantare uno shadow in uno schema nuovo — fallisce in fase di setup (un ruolo appena creato non può fare CREATE SCHEMA), non perché "pg_catalog vince". Piantarlo nel già scrivibile public fa shadow: 1S (stessa firma, ordinamento per schema) e 1T (l'overload esatto batte il built-in anche con pg_catalog per primo — isola la specificità di tipo) entrambi accecano (payload azzerato).
  • 1B overload esatto di row_to_json con tipo composito — acceca l'auditor quando public è scrivibile e il search_path del trigger non è fissato. Raggiungibile su PostgreSQL standard ≤14; condizionato da una cattiva configurazione su 15+. Fissare il search_path lo neutralizza ovunque.
  • 1C sostituire una funzione di audit di proprietà dell'app — acceca ed è reversibile con un object-diff pulito (replay verbatim della sorgente) — ma un canary scrittura-vs-audit e un event trigger DDL lo intercettano comunque.
  • La dormienza controllata da GUC e l'avvelenamento dell'attribuzione in-database funzionano entrambi sotto le loro precondizioni (di cattiva configurazione); la riga di audit fabbricata è indistinguibile dalla sola tabella di audit.
  • Il logging a livello di motore (pgaudit/log_statement) + il sink con hash a catena sono le difese che chiudono l'insieme.

Postura di divulgazione responsabile

Riprodotto su PostgreSQL standard in un laboratorio locale con dati anonimizzati/sintetici. L'SQL degli attacchi è limitato allo schema di laboratorio costruito qui; questo è uno studio di fattibilità/difesa, non un payload weaponizzato. Le primitive sottostanti sono già pubbliche (CVE-2018-1058; escalation del search_path di SECURITY DEFINER) — il contributo è la composizione e la valutazione delle difese. Nessun sistema reale è identificato.

Scarica lo strumento