
Autorisiertes SQL-Injection-Exploitation-Framework für CVE-2020-5504 in phpMyAdmin, mit automatisierter Datenbank-Enumeration, Blind-Injection, Proxy-Unterstützung und strukturierter Berichterstattung für Penetrationstests und Sicherheitsforschung.
Autorisiertes Sicherheitstest- und Forschungsframework zur Identifizierung und Validierung von CVE-2020-5504 in phpMyAdmin-Bereitstellungen
Überblick · Funktionen · Installation · Verwendung · Berichte · Architektur · Mitwirken
Hinweis zur verantwortungsvollen Nutzung: Dieses Projekt ist ausschließlich für Systeme gedacht, die Ihnen gehören oder für die Sie ausdrücklich zur Bewertung autorisiert sind. Verwenden Sie es nicht gegen öffentliche, Drittanbieter- oder Produktionssysteme ohne schriftliche Genehmigung und einen definierten Testumfang.
| CLI-Ausgabe | Verwendung |
|---|---|
![]() | ![]() |
CVE-2020-5504 ist eine SQL-Injection-Schwachstelle, die die Benutzerkontenseite von phpMyAdmin betrifft. Laut dem offiziellen phpMyAdmin-Advisory sind phpMyAdmin 4.x-Versionen vor 4.9.4 und phpMyAdmin 5.0.0 betroffen; das Advisory empfiehlt ein Upgrade auf 4.9.4 oder neuer für die 4.x-Linie und 5.0.1 oder neuer für die 5.x-Linie.[1] Die National Vulnerability Database verzeichnet, dass die Ausnutzung ein gültiges MySQL-Konto für den Zugriff auf den Server erfordert.[2]
Dieses Projekt bietet einen strukturierten Arbeitsablauf für autorisiertes Penetrationstesting, kontrollierte Validierung und Sicherheitsforschung. Es wurde entwickelt, um Prüfern zu helfen, ein Ziel zu identifizieren, zu verifizieren, ob das Ziel betroffen erscheint, Beweise zu dokumentieren und strukturierte Berichte für die Behebung von Schwachstellen zu erstellen.
Das Framework ist um vier Ziele organisiert:
Identifizieren von phpMyAdmin-Installationen und Sammeln versionsbezogener Indikatoren.
Validieren vermuteter Exposition mithilfe kontrollierter, möglichst nicht-destruktiver Prüfungen.
Bewerten autorisierter Ziele mithilfe konfigurierbarer Grenzwerte, Wiederholungsverhalten und optionaler Proxy-Nutzung.
Berichten von Ergebnissen in Formaten, die leicht zu überprüfen, zu archivieren und in Arbeitsabläufe zu integrieren sind.
Dieses Projekt ist kein Ersatz für Patchen, Herstelleranweisungen, sichere Konfiguration oder einen formellen Autorisierungsprozess für Penetrationstests. Es garantiert nicht die Erkennung jeder Bereitstellung, Konfiguration, Version oder Netzwerkbedingung. Alle Ergebnisse sollten manuell überprüft und als Bewertungsnachweis behandelt werden, nicht als automatisches Sicherheitsurteil.
Führen Sie dieses Tool nur gegen ein Asset aus, wenn Sie eine klare Autorisierung vom Asset-Eigentümer haben. Die Autorisierung sollte das Ziel, das zulässige Testfenster, erlaubte Techniken, Quell-IPs, Anforderungen an die Datenverarbeitung, Eskalationskontakte und Abbruchbedingungen definieren.
Testen Sie niemals internetfähige Systeme nur, weil sie erreichbar sind. Erreichbarkeit ist keine Berechtigung.
Bewertungsmodi können Informationen über Datenbanken, Tabellen, Spalten oder Datensätze erzeugen. Behandeln Sie alle Ausgaben als potenziell sensibel. Speichern Sie Berichte mit geeigneten Zugriffskontrollen, vermeiden Sie Geheimnisse in der Shell-Historie, verschlüsseln Sie Berichte, wenn es Ihre Engagement-Regeln erfordern, und löschen Sie temporäre Daten nach dem Engagement sicher.
Bevor Sie eine Bewertung starten, stellen Sie sicher, dass Sie über ein bekanntes gutes Backup- oder Wiederherstellungsverfahren, einen Kommunikationskanal mit dem Systemeigentümer und einen dokumentierten Rollback- oder Stoppplan verfügen. Bevorzugen Sie nach Möglichkeit eine isolierte Testumgebung. Verwenden Sie den am wenigsten invasiven Modus, der die Bewertungsfrage beantwortet.
Der empfohlene Arbeitsablauf ist bewusst stufenweise aufgebaut, sodass Prüfer mit der Aktivität mit der geringsten Auswirkung beginnen und den Umfang nur bei Autorisierung erweitern können.``` ┌──────────────────┐ │ Define scope │ Confirm written authorization and test boundaries └────────┬─────────┘ │ ▼ ┌──────────────────┐ │ Detect │ Identify phpMyAdmin and collect version indicators └────────┬─────────┘ │ ▼ ┌──────────────────┐ │ Verify │ Perform controlled vulnerability checks └────────┬─────────┘ │ ▼ ┌──────────────────┐ │ Assess, if │ Continue only when explicitly authorized │ approved │ └────────┬─────────┘ │ ▼ ┌──────────────────┐ │ Report │ Preserve evidence, limits, timestamps, and conclusions └──────────────────┘
Ein positives Ergebnis sollte gegen die Zielversion, den Authentifizierungskontext, die Anfragebelege und den Umfang des Engagements geprüft werden. Ein negatives Ergebnis beweist nicht, dass die Bereitstellung sicher ist; es kann auf Versionsunterschiede, Zugriffskontrollen, Routing, Anwendungsanpassungen, Ratenbegrenzung oder unzureichende Sichtbarkeit zurückzuführen sein.
---
## Anforderungen
### Laufzeitanforderungen
| Anforderung | Unterstützte Basis |
| --- | --- |
| Betriebssystem | Linux, macOS oder Windows |
| Python | 3.6 oder neuer, abhängig von der Kompatibilität der Abhängigkeiten |
| Paketmanager | `pip` |
| Versionskontrolle | Git, bei Installation aus dem Repository |
| Netzwerkzugriff | Konnektivität zu einem ausdrücklich autorisierten Bewertungsziel |
### Python-Abhängigkeiten
Das Projekt erwartet derzeit die folgenden Pakete:```
requests>=2.31.0
rich>=13.7.0
colorama>=0.4.6
dataclasses>=0.6; python_version < "3.7"
Für reproduzierbare Installationen bevorzugen Sie die requirements.txt-Datei des Repositorys gegenüber der individuellen Installation von Paketen.
git clone https://github.com/CerberusMrXi/phpMyAdmin-CVE-2020-5504-Exploit cd phpMyAdmin-CVE-2020-5504-Exploit
python3 -m venv .venv source .venv/bin/activate python -m pip install --upgrade pip python -m pip install -r requirements.txt
chmod +x start.sh quick.sh exploit.py
Starte die geführte Oberfläche mit:```bash
./start.sh
git clone https://github.com/CerberusMrXi/phpMyAdmin-CVE-2020-5504-Exploit Set-Location phpMyAdmin-CVE-2020-5504-Exploit
py -m venv .venv ..venv\Scripts\Activate.ps1 python -m pip install --upgrade pip python -m pip install -r requirements.txt
.\start.bat
Wenn die PowerShell-Ausführungsrichtlinie das Ausführen des Starters verhindert, verwenden Sie den dokumentierten PowerShell-Einstiegspunkt des Repositorys in einer autorisierten Umgebung:```
powershell -ExecutionPolicy Bypass -File .\start.ps1
Verwenden Sie dies nur, wenn requirements.txt nicht verfügbar ist oder wenn Sie die Abhängigkeiten absichtlich selbst verwalten:```bash
python -m pip install "requests>=2.31.0" "rich>=13.7.0" "colorama>=0.4.6"
---
## Verwendung
Die folgenden Beispiele verwenden `https://authorized.example/phpmyadmin` als Platzhalter. Ersetzen Sie ihn nur durch ein Ziel, das ausdrücklich in Ihrem genehmigten Umfang liegt.
### Erkennungsmodus
Der Erkennungsmodus ist der empfohlene Ausgangspunkt. Er dient dazu, die Anwendung zu identifizieren und Versionsindikatoren zu sammeln, ohne einen Exploit zu versuchen.```bash
python exploit.py \
--url https://authorized.example/phpmyadmin \
--mode detect
Die Kurzform-Flags aus der ursprünglichen Oberfläche werden ebenfalls unterstützt, sofern zutreffend:```bash python exploit.py -u https://authorized.example/phpmyadmin -m detect
### Verifikationsmodus
Der Verifikationsmodus ist für kontrollierte Schwachstellentests vorgesehen. Verwenden Sie ihn nur, wenn der Auftrag ausdrücklich Validierungsaktivitäten erlaubt und die erforderlichen Anmeldedaten über eine genehmigte Methode bereitgestellt wurden.```bash
python exploit.py \
--url https://authorized.example/phpmyadmin \
--mode verify \
--username "$PMADB_USERNAME" \
--password "$PMADB_PASSWORD"
Vermeiden Sie es, echte Passwörter direkt in Befehlen zu platzieren, da Befehlszeilen im Shell-Verlauf gespeichert oder durch lokale Prozessprüfungen offengelegt werden können.
Der Forschungsmodus kann umfassendere autorisierte Bewertungsaktivitäten und Datenerfassung durchführen. Er sollte auf dedizierte Testumgebungen oder Engagements mit ausdrücklicher schriftlicher Genehmigung für den angeforderten Umfang beschränkt werden.```bash
python exploit.py
--url https://authorized.example/phpmyadmin
--mode research
--username "$PMADB_USERNAME"
--password "$PMADB_PASSWORD"
--max-databases 20
--max-tables 50
### Trockenlauf-Modus
Der Trockenlauf-Modus ist nützlich, um die Befehlskonstruktion zu validieren, das Workflow-Verhalten zu überprüfen und die Konfiguration zu testen, ohne invasive Aktionen durchzuführen.```bash
python exploit.py \
--url https://authorized.example/phpmyadmin \
--dry-run
Leiten Sie den Datenverkehr durch einen autorisierten Abfang-Proxy, wenn Sie während eines Tests Anfragen und Antworten untersuchen müssen:```bash
python exploit.py
--url https://authorized.example/phpmyadmin
--mode verify
--proxy http://127.0.0.1:8080
Nutzen Sie einen Proxy nur, wenn dies durch die Regeln des Auftrags erlaubt ist und er so konfiguriert ist, dass keine unnötigen sensiblen Daten erfasst oder gespeichert werden.
### Gezielte Datenbankbewertung
Wenn das Scope-Dokument eine bestimmte Datenbank identifiziert, beschränken Sie die Bewertung auf diese Datenbank, sofern die Implementierung dies unterstützt:```bash
python exploit.py \
--url https://authorized.example/phpmyadmin \
--mode research \
--database target_database \
--max-tables 25
Aktivieren Sie die ausführliche Ausgabe, wenn Sie eine fehlgeschlagene Verbindung, eine unerwartete Antwort oder ein Konfigurationsproblem untersuchen:```bash
python exploit.py
--url https://authorized.example/phpmyadmin
--mode verify
--verbose
### Interaktive Oberfläche
Der interaktive Launcher wird Erstbenutzern empfohlen, da er geführte Eingabeaufforderungen, Modusauswahl, Fortschrittsanzeigen und farbcodierte Statusausgaben bietet.```bash
# Linux/macOS
./start.sh
# Windows
start.bat
Die Modusnamen beschreiben den beabsichtigten Workflow, keine Garantie für das Verhalten unter jeder Konfiguration. Überprüfen Sie die Implementierung und die Engagement-Regeln, bevor Sie einen Modus gegen ein Live-System verwenden.
Die folgenden Optionen werden durch die aktuelle Projektschnittstelle repräsentiert. Führen Sie python exploit.py --help aus, um die genauen Optionsnamen in Ihrem Checkout zu bestätigen.
Wichtig: Das Deaktivieren der TLS-Zertifikatsprüfung schwächt die Transportsicherheit und sollte auf kontrollierte Testbedingungen beschränkt bleiben. Behandeln Sie dies niemals als Produktionslösung.
Das Tool kann standardmäßige Proxy-Variablen verwenden, wenn der Datenverkehr über einen genehmigten Proxy geleitet werden muss:```bash export HTTP_PROXY=http://127.0.0.1:8080 export HTTPS_PROXY=http://127.0.0.1:8080
Speichere keine Zugangsdaten in einer eingecheckten `.env`-Datei. Wenn Umgebungsvariablen für Test-Zugangsdaten verwendet werden, schütze die Shell-Sitzung und lösche sie nach dem Einsatz:```bash
export PMADB_USERNAME='authorized-test-user'
export PMADB_PASSWORD='use-an-approved-secret-source'
# Remove them when finished
unset PMADB_USERNAME PMADB_PASSWORD
Erstelle config.yaml für dauerhafte, nicht geheime Bewertungseinstellungen:```yaml
scan:
timeout: 10
retries: 3
max_databases: 50
max_tables: 100
max_columns: 50
max_rows: 100
delay_between_requests: 0.5
report: format: json output: report.json include_sensitive: false
Bewahre Anmeldedaten aus dieser Datei fern, es sei denn, die Datei ist durch den von deiner Organisation genehmigten Prozess zur Verwaltung geheimer Daten geschützt. Füge lokale Konfigurationsdateien mit sensiblen Werten zu `.gitignore` hinzu.
---
## Berichte
Das Framework unterstützt JSON-, HTML- und TXT-Ausgabe. Wähle das Format, das den Zielgruppen- und Aufbewahrungsanforderungen des Engagements entspricht.
### JSON-Bericht
JSON eignet sich für Automatisierung, Archivierung und die Aufnahme in Bewertungspipelines. Eine repräsentative Berichtsstruktur ist unten dargestellt; die genauen Felder können je nach Version und Modus variieren.```json
{
"scan_info": {
"target": "https://authorized.example/phpmyadmin",
"timestamp": "2024-01-15T10:30:00Z",
"mode": "verify",
"scanner": "CVE-2020-5504 Security Assessment Tool v1.2",
"author": "Sudeepa Wanigarathna"
},
"fingerprint": {
"is_phpmyadmin": true,
"version": "5.0.0",
"confidence": "CONFIRMED"
},
"verification": {
"vulnerable": true,
"confidence": "CONFIRMED",
"status": "VULNERABLE_CONFIRMED"
},
"authentication": {
"authenticated": true,
"user": "authorized-test-user",
"score": 8
},
"extracted_data": {
"databases": ["information_schema", "mysql", "test"]
}
}
Die HTML-Ausgabe ist für die menschliche Überprüfung gedacht. Sie kann gestaltete Abschnitte, Statusindikatoren, Beweisübersichten, Metadaten und druckbare Layouts enthalten. Speichern Sie generierte Berichte an einem zugriffskontrollierten Ort.
Die TXT-Ausgabe ist nützlich für die Terminalüberprüfung, Protokollerfassung, Ticket-Anhänge und Umgebungen, in denen umfangreiche Formatierung nicht erwünscht ist.
Bevor Sie einen Bericht teilen, bestätigen Sie, dass er nur Informationen enthält, die durch das Engagement gestattet sind. Überprüfen Sie URLs, Benutzernamen, Datenbanknamen, Datensatzwerte, Cookies, Tokens, Anfrage-Header und Debug-Ausgaben auf Geheimnisse oder personenbezogene Daten. Schwärzen oder entfernen Sie sensible Inhalte, wenn sie nicht zur Untermauerung des Befunds erforderlich sind.
Das Projekt ist als eine stufenweise Bewertungspipeline organisiert:``` Target │ ├── Fingerprinting │ ├── Version detection │ └── Path discovery │ ├── Vulnerability checks │ ├── Controlled verification │ └── Confidence analysis │ ├── Authentication │ ├── CSRF token extraction │ ├── Multi-signal validation │ └── Session management │ ├── Authorized assessment │ ├── Database enumeration │ ├── Table extraction │ └── Scoped data requests │ └── Reporting ├── JSON ├── HTML └── TXT
### Antwortanalyse-Ebene
Die Antwortanalyse-Ebene zentralisiert die Interpretation von HTTP-Antworten und dem Anwendungsverhalten. Die folgende konzeptionelle Schnittstelle veranschaulicht die vorgesehenen Zuständigkeiten:```
ResponseAnalyzer
├── status_code( )
├── content_type()
├── authenticated()
├── error_detected()
├── verification_result()
└── extract_metadata()
Centralizing these checks helps keep the fingerprinting, authentication, verification, and reporting stages consistent.
Login request │ ▼ CSRF token extraction │ ▼ Login submission │ ▼ Cookie and session validation │ ▼ Authenticated-page access test │ ▼ Expected-content verification │ ▼ Authenticated result
## Fehlerbehebung
### SSL-Zertifikatsfehler
Wenn eine kontrollierte Testumgebung ein internes oder selbstsigniertes Zertifikat verwendet, nutzen Sie die TLS-Option des Projekts nur, wenn das Risiko verstanden wird und der Auftrag dies zulässt:```bash
python exploit.py \
--url https://authorized.example/phpmyadmin \
--mode detect \
--no-verify-ssl
Die bevorzugte Lösung besteht darin, die Zertifikatskette oder die Vertrauenskonfiguration zu korrigieren, anstatt die Verifizierung zu deaktivieren.
Erhöhen Sie das Timeout erst, nachdem Sie Routing, DNS, Proxy-Konfiguration und die Verfügbarkeit des Ziels geprüft haben:```bash
python exploit.py
--url https://authorized.example/phpmyadmin
--mode detect
--timeout 30
Verwende konservative Anfrageraten und Verzögerungen, um unnötige Last auf das Ziel zu vermeiden.
### Authentifizierungsfehler
Bestätige, dass das Testkonto gültig ist, dass das Konto auf das Ziel zugreifen darf und dass die angegebene URL auf die korrekte phpMyAdmin-Installation verweist. Überprüfe die ausführliche Ausgabe auf CSRF-, Cookie-, Redirect- und Content-Type-Indikatoren, ohne Anmeldedaten oder Sitzungswerte weiterzugeben.
### Fehlendes `rich`-Paket
Installiere die Abhängigkeiten des Projekts innerhalb der aktiven virtuellen Umgebung:```bash
python -m pip install -r requirements.txt
Wenn von der aktuellen Version unterstützt, deaktiviere die erweiterte Formatierung für eine minimale Terminal-Erfahrung:```bash
python exploit.py
--url https://authorized.example/phpmyadmin
--mode detect
--no-rich
### Berechtigungsfehler unter Linux oder macOS
Machen Sie den Launcher ausführbar:```bash
chmod +x start.sh exploit.py
Behandeln Sie unerwartete Ergebnisse als Grund, anzuhalten und zu untersuchen. Prüfen Sie die Zielversion, das Verhalten des Reverse-Proxys, den Authentifizierungsstatus, die Anfrage-/Antwort-Beweise, konfigurierte Limits, das Wiederholungsverhalten und ob eine andere Sicherheitskontrolle die Antwort verändert hat. Führen Sie einen Modus mit hoher Auswirkung nicht wiederholt erneut aus, nur um ein bevorzugtes Ergebnis zu erzielen.
Die maßgebliche phpMyAdmin-Sicherheitsempfehlung rät, betroffene Installationen wie folgt zu aktualisieren:[1]
| Betroffene Linie | Betroffene Versionen | Empfohlene Maßnahme |
|---|---|---|
| phpMyAdmin 4.x | Vor 4.9.4 | Upgrade auf 4.9.4 oder neuer. |
| phpMyAdmin 5.x | 5.0.0 | Upgrade auf 5.0.1 oder neuer. |
Organisationen sollten außerdem die MySQL-Kontoberechtigungen überprüfen, administrative Schnittstellen einschränken, eine starke Authentifizierung durchsetzen, die Netzwerkexposition begrenzen, administrative Aktivitäten überwachen und die aktuellen Veröffentlichungs- und Sicherheitshinweise des Anbieters befolgen. Diese Maßnahmen ergänzen das Patchen; sie ersetzen es nicht.
Nach der Behebung wiederholen Sie die Validierung in einer genehmigten Umgebung und bewahren Sie Beweise auf, die die installierte Version, den Bereitstellungspfad, das Testdatum und das Ergebnis zeigen. Vermeiden Sie Tests an Produktionssystemen, es sei denn, die Autorisierung umfasst ausdrücklich die Verifizierung nach der Behebung.
git clone https://github.com/CerberusMrXi/phpMyAdmin-CVE-2020-5504-Exploit cd phpMyAdmin-CVE-2020-5504-Exploit
python3 -m venv .venv source .venv/bin/activate python -m pip install --upgrade pip python -m pip install -r requirements-dev.txt
On Windows, aktivieren Sie die Umgebung mit:```
.\.venv\Scripts\Activate.ps1
python -m pytest tests/
### Erwartungen an die Codequalität
Beiträge sollten PEP 8 befolgen, wo sinnvoll Typannotationen verwenden, beschreibende Docstrings enthalten, eine klare Fehlerbehandlung bewahren und vermeiden, Anmeldedaten, Cookies, Tokens oder unnötige extrahierte Daten zu protokollieren. Änderungen, die den Bewertungsumfang, das Anfrageverhalten, die Authentifizierung oder die Berichterstattung betreffen, sollten Tests und Dokumentationsaktualisierungen umfassen.
### Vorgeschlagene Repository-Struktur```
.
├── exploit.py
├── requirements.txt
├── requirements-dev.txt
├── config.yaml.example
├── start.sh
├── start.bat
├── start.ps1
├── tests/
├── docs/
│ └── images/
└── reports/
Übertrage keine generierten Berichte, Anmeldedaten, Sitzungsartefakte oder zielspezifische Daten. Füge sie bei Bedarf zur .gitignore hinzu.
Beiträge sind willkommen, wenn sie die Zuverlässigkeit, Dokumentation, Testabdeckung, Barrierefreiheit oder sichere Bewertungsabläufe verbessern.
Forke das Repository.
Erstelle einen fokussierten Branch, z. B. feature/improved-fingerprint-parser.
Nimm die kleinste kohärente Änderung vor, die das Problem löst.
Füge Tests und Dokumentation hinzu oder aktualisiere sie.
Führe die Testsuite lokal aus.
Committe mit einer klaren Nachricht.
Pushe den Branch und öffne einen Pull Request, der die Änderung, die durchgeführten Tests sowie alle Sicherheits- oder Kompatibilitätsauswirkungen beschreibt.```bash git checkout -b feature/improved-fingerprint-parser git add . git commit -m "Improve fingerprint result handling" git push origin feature/improved-fingerprint-parser
Bitte reichen Sie keine Änderungen ein, die nicht autorisierte Ziele hinzufügen, Schutzmaßnahmen schwächen, echte Anmeldedaten offenlegen, Live-Systemdaten enthalten oder Tests außerhalb eines dokumentierten Umfangs fördern.
---
## Änderungsprotokoll
### Version 1.2
- Fehler im `FingerprintResult`-Detailattribut behoben.
- Fallback-Pfad hinzugefügt, wenn die Rich-Terminalformatierung nicht verfügbar ist.
- Muster zur Versionserkennung verbessert.
- Fehlerbehandlung im gesamten Workflow gestärkt.
- TLS-Verifizierungssteuerung für kontrollierte Tests hinzugefügt.
- Plattformübergreifende Kompatibilität verbessert.
### Version 1.1
- Dediziertes Fingerprinting-Modul hinzugefügt.
- Sicheren Verifizierungsmodus implementiert.
- Multi-Signal-Authentifizierungsvalidierung hinzugefügt.
- Umfassende Berichtserstellung hinzugefügt.
- Rich-Terminaloberfläche integriert.
### Version 1.0
- Erstveröffentlichung.
- Grundlegende SQL-Injection-Bewertungsfunktion hinzugefügt.
- Datenbank-Enumeration hinzugefügt.
- JSON-Ausgabe hinzugefügt.
---
## Lizenz
Dieses Projekt ist unter der MIT-Lizenz lizenziert. Den vollständigen Text finden Sie in der Datei [LICENSE](https://github.com/cerberusmrxi/phpmyadmin-cve-2020-5504-exploit/blob/HEAD/LICENSE).```
MIT License
Copyright (c) 2024 Sudeepa Wanigarathna
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
Die Software wird ohne Gewährleistung bereitgestellt. Lesen Sie die vollständige LICENSE-Datei, bevor Sie das Projekt weiterverteilen.
Dieses Projekt dankt dem phpMyAdmin-Team für seinen Sicherheitshinweis und die Patches, den Forschern, die die Schwachstelle gemeldet haben, sowie den Open-Source-Maintainern hinter den Bibliotheken, die vom Framework verwendet werden.
| Kanal | Link |
|---|---|
| Autor | Sudeepa Wanigarathna |
| GitHub-Profil | @sudeepawanigarathna |
Für Schwachstellenmeldungen zu diesem Projekt vermeiden Sie es, vertrauliche Details öffentlich zu posten. Nutzen Sie einen privaten Sicherheitskontakt oder den dokumentierten Sicherheitsmelde-Prozess des Repositorys, sobald dieser eingerichtet ist.
https://www.phpmyadmin.net/security/PMASA-2020-1/ "phpMyAdmin PMASA-2020-1 Sicherheitshinweis"
https://nvd.nist.gov/vuln/detail/CVE-2020-5504 "NIST National Vulnerability Database: CVE-2020-5504"
Sicherheit durch verantwortungsvolle Offenlegung.
| Bereich | Fähigkeit | Beschreibung |
|---|
| Erkennung | Automatisches Fingerprinting | Identifiziert wahrscheinliche phpMyAdmin-Bereitstellungen und sammelt Versionsindikatoren. |
| Validierung | Schwachstellenverifizierung | Führt kontrollierte Prüfungen mit konfidenzorientierter Ergebnisbehandlung durch. |
| Arbeitsablauf | Mehrere Betriebsmodi | Unterstützt Erkennungs-, Verifizierungs-, Forschungs- und Trockenlauf-Workflows. |
| Sitzungsverwaltung | CSRF-Token-Verwaltung | Extrahiert und verwaltet CSRF-bezogene Werte, die für den Anwendungsablauf erforderlich sind. |
| Authentifizierung | Multi-Signal-Validierung | Verwendet mehrere Indikatoren, um falsche Authentifizierungsergebnisse zu reduzieren. |
| Bewertung | Datenbank-Enumeration | Unterstützt autorisierte Enumeration von Datenbanken, Tabellen, Spalten und ausgewählten Daten. |
| Injection-Forschung | Blind-Techniken | Unterstützt boolesche und zeitbasierte Forschungsabläufe, wo durch die Implementierung aktiviert. |
| Berichterstattung | JSON, HTML und TXT | Erzeugt strukturierte, gestaltete und Klartext-Ausgaben für verschiedene Zielgruppen. |
| Zuverlässigkeit | Wiederholungen und Backoff | Wiederholt vorübergehende Anfragen mit konfigurierbarem Verhalten. |
| Integrationen | Proxy-Unterstützung | Kann mit Burp Suite oder einem anderen HTTP-Interception-Proxy verwendet werden. |
| Benutzerfreundlichkeit | Reiche Terminaloberfläche | Bietet farbcodierte Ausgaben, Fortschrittsanzeigen und lesbare Statusmeldungen. |
| Diagnose | Ausführliche Protokollierung | Stellt zusätzliche Diagnoseinformationen für autorisierte Fehlerbehebung bereit. |
| Modus | Zweck | Erwartete Auswirkung | Empfohlene Verwendung |
|---|
detect | Die Anwendung identifizieren und Versionsindikatoren ermitteln. | Keine oder minimal | Erste Aufklärung im genehmigten Umfang. |
verify | Testen, ob das Ziel mit kontrollierten Prüfungen verwundbar erscheint. | Gering | Bestätigung während einer autorisierten Bewertung. |
research | Breitere Bewertung und autorisierte Enumeration durchführen. | Hoch | Dedizierte Labore oder Engagements mit ausdrücklicher Genehmigung. |
dry-run | Workflow-Verhalten simulieren, ohne invasive Aktionen durchzuführen. | Keine | Konfigurations- und Befehlsvalidierung. |
| Option | Beschreibung | Beispiel |
|---|
-u, --url | Autorisierte phpMyAdmin-Basis-URL. | --url https://authorized.example/phpmyadmin |
-m, --mode | Wählt detect, verify oder research. | --mode verify |
--dry-run | Simuliert den Workflow ohne invasive Aktionen. | --dry-run |
--username | Benutzername für ein genehmigtes Testkonto. | --username "$PMADB_USERNAME" |
--password | Passwort für ein genehmigtes Testkonto. | --password "$PMADB_PASSWORD" |
-p, --proxy | HTTP-Proxy-URL. | --proxy http://127.0.0.1:8080 |
-f, --format | Berichtsformat wie json, html oder txt. | --format html |
-o, --output | Pfad der Ausgabedatei. | --output report.html |
-d, --database | Begrenzt die Aktivität auf eine benannte Datenbank, wo unterstützt. | --database target_database |
-t, --timeout | Request-Timeout in Sekunden. | --timeout 30 |
--max-databases | Maximale Anzahl zu enumerierender Datenbanken. | --max-databases 20 |
--max-tables | Maximale Anzahl zu enumerierender Tabellen. | --max-tables 50 |
--max-columns | Maximale Anzahl zu enumerierender Spalten. | --max-columns 50 |
--max-rows | Maximale Anzahl anzufordernder Zeilen, wo unterstützt. | --max-rows 100 |
-v, --verbose | Aktiviert Diagnoseausgabe. | --verbose |
--no-verify-ssl | Deaktiviert die TLS-Zertifikatsprüfung nur für kontrollierte Tests. | --no-verify-ssl |
--no-rich | Deaktiviert die Rich-Terminalformatierung. | --no-rich |
| Issue-Tracker | Repository-Issues |
| [email protected] |