
Docker-basiertes verwundbares Labor und detaillierter PoC-Bericht für CVE-2023-25157/25158 SQL-Injection in GeoServer & GeoTools, mit 4 verifizierten Angriffsvektoren und Analyse.
Übungsumgebung (Vulnerable Lab) und detaillierter Exploit-Analysebericht der SQL Injection (Error-based) -Sicherheitslücke in GeoServer (CVE-2023-25157) und der Bibliothek GeoTools (CVE-2023-25158).
Bitte lesen Sie das vollständige Analyse-Dokument mit PoC-Bildern für jede Schicht im offiziellen Bericht:
(Der Bericht umfasst: Fehlerursache auf der CQL-Parser- und SQL-Translator-Ebene, Erklärung des OGC-XML-Filterformats, detaillierte Analyse der 4 Angriffsvektoren, Payloads, tatsächliche SQL-Abfragen in der Datenbank und Abhilfeempfehlungen).
| Eigenschaft | Details |
|---|---|
| CVE ID | CVE-2023-25157 (GeoServer) & CVE-2023-25158 (GeoTools) |
| Typ der Sicherheitslücke | Error-based SQL Injection |
| Schweregrad | Kritisch — CVSS v3.1: 9.8 |
| Betroffene Produkte | GeoServer < 2.23.1, < 2.22.3, < 2.21.4 / GeoTools < 29.2, < 28.4, < 27.5 |
| Exploit-Protokoll | OGC Web Feature Service (WFS) v1.0.0 / v2.0.0 |
| Authentifizierungsanforderung | Nicht erforderlich (wenn der WFS-Dienst AccessConstraints: NONE konfiguriert hat) |
In diesem Labor wurden 4 reale Angriffsvektoren verifiziert und detailliert in REPORT.md analysiert:
strStartsWith): Ausnutzung über die String-Präfix-Prüfungsfunktion in CQL_FILTER (HTTP GET).strEndsWith): Ausnutzung über die String-Suffix-Prüfungsfunktion in CQL_FILTER (HTTP GET).PropertyIsLike): Ausnutzung über das Standard-OGC-XML-Filter-Tag durch Manipulation des Escape-Zeichens escape (HTTP POST) — Gefährlichster Vektor, der auf allen Standardkonfigurationen funktioniert.FeatureId): Ausnutzung über den Filterparameter nach Primary Key vom Typ String, wenn preparedStatements = false.Öffnen Sie im Stammverzeichnis des Projekts ein Terminal und führen Sie den Befehl aus:
docker compose up -d
Das System startet 2 Container:
vulhub mit den Tabellen example und example_str).Überprüfen Sie die GeoServer-Logs, um sicherzustellen, dass der Dienst vollständig gestartet ist:
docker compose logs -f geoserver
Wenn die Meldung CONFIGURATION COMPLETE erscheint, können Sie auf GeoServer unter folgender Adresse zugreifen:
http://localhost:8080/geoserver/web/admin / geoserverZum Stoppen der Container und Freigeben von Ressourcen:
# Tắt lab (giữ lại dữ liệu database)
docker compose down
# Tắt lab và xóa sạch toàn bộ dữ liệu volume
docker compose down -v
├── REPORT.md # Báo cáo phân tích kỹ thuật & PoC chi tiết
├── docker-compose.yml # Cấu hình khởi tạo môi trường lab GeoServer + PostgreSQL
├── init.sql # Script khởi tạo database và dữ liệu mẫu cho lab
├── startup.sh # Script cấu hình tự động GeoServer khi khởi chạy container
└── img/ # Thư mục chứa hình ảnh minh chứng PoC