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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-33032 — 라우트 등록 과정에서 함수 호출 하나가 누락된 것만으로 MCP 인터페이스가 인증 없는 RCE 게이트웨이로 변하기에 충분했다. | Kitploit
도구/GitHubGitHub/keraattin/cve-2026-33032
ReconnaissanceVulnerability ScannersExploitationWeb SecurityNetwork SecurityPenetration TestingAPI Security
GitHubkeraattin/cve-2026-33032

CVE-2026-33032

라우트 등록 과정에서 함수 호출 하나가 누락된 것만으로 MCP 인터페이스가 인증 없는 RCE 게이트웨이로 변하기에 충분했다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-33032 / MCPwn

CVE CVSS Status Affected License Python

nginx-ui MCP 인증 우회 취약점으로 공개적으로 알려진 MCPwn에 대한 비파괴적 탐지 도구입니다. 취약한 버전을 실행 중인 모든 nginx-ui 인스턴스에 대해 두 개의 HTTP 요청만으로 인증 없이 완전한 장악이 가능합니다.

목차

  1. 빠른 요약
  2. 취약점 개요
  3. 기술 심층 분석
  4. 탐지 전략
  5. 설치
  6. 사용법
  7. 출력 예시
  8. CVE-2026-27944 연계
  9. 조치 방안
  10. 책임 있는 사용
  11. 참고 자료
  12. 라이선스

빠른 요약

취약점 개요

nginx-ui는 인증된 운영자가 JSON-RPC를 통해 nginx 설정 편집, 재시작 명령, 백업 작업과 같은 파괴적인 도구를 구동할 수 있게 해주는 Model Context Protocol(MCP) 인터페이스를 노출합니다.

/mcp 엔드포인트는 AuthRequired() 미들웨어로 보호되지만, 실제로 도구 호출을 수신하는 짝 엔드포인트인 /mcp_message는 미들웨어 없이 배포되었습니다. 네트워크를 통해 UI에 접근할 수 있는 모든 클라이언트는 다음을 수행할 수 있습니다:

  1. /mcp에 Server Sent Events(SSE) 스트림을 열고 자격 증명을 제시하지 않고 새 sessionID를 수신합니다.
  2. 해당 sessionID를 사용하여 여전히 인증 없이 /mcp_message에 POST하여 등록된 모든 MCP 도구를 호출합니다.

공격자는 nginx 프로세스에 대한 완전한 제어권을 얻습니다: 트래픽을 리디렉션하기 위해 server 블록을 편집하고, 경로 읽기를 통해 TLS 개인 키를 추출하고, nginx를 리로드하거나 중지하고, 영구 백도어를 심을 수 있습니다.

기술 심층 분석

코드 수준 근본 원인

root@kitploit:~
// 취약 (2.3.4 이전)
r.GET("/mcp",          AuthRequired(), mcpHandler)
r.POST("/mcp_message", mcpMessageHandler)    // 미들웨어 누락

// 2.3.4에서 수정됨
r.GET("/mcp",          AuthRequired(), mcpHandler)
r.POST("/mcp_message", AuthRequired(), mcpMessageHandler)

라우트 등록에서 함수 호출 하나가 누락된 것만으로 MCP 인터페이스가 인증 없는 RCE 게이트웨이로 변했습니다.

종단 간 공격 개요

root@kitploit:~
  공격자                              nginx-ui (<2.3.4)
     |   1) GET /mcp  (인증 없음)                |
     | -------------------------------------->  |
     |   2) event: endpoint data: /mcp_message?sessionID=XYZ
     | <--------------------------------------  |
     |   3) POST /mcp_message?sessionID=XYZ     |
     |      body: JSON-RPC call_tool "nginx_reload" 또는
     |             "edit_config {...}"          |
     | -------------------------------------->  |
     |   4) 200 OK; 전체 권한으로 도구 실행
     | <--------------------------------------  |

영향 매트릭스

탐지 전략

이 저장소는 의도적으로 파괴적인 작업을 피합니다. 탐지기는 읽기 전용 MCP 메서드(tools/list)만 사용합니다. 로직:

root@kitploit:~
> 단계 1  nginx-ui 핑거프린팅
>         GET /               (HTML 제목, JS 번들)
>         GET /api/settings   (nginx-ui 키를 참조하는 JSON)
>         헤더/본문 정규식을 통해 버전 추출
> 단계 2  /mcp에 SSE 스트림 열기
>         "endpoint" 이벤트에서 첫 번째 sessionID 파싱
> 단계 3  POST /mcp_message?sessionID=<id>
>         Body: {"jsonrpc":"2.0","method":"tools/list","params":{}}
>         Authorization 헤더 없음
> 단계 4  상태 200이고 본문에 도구 매니페스트가 포함되면 취약
>         상태 401 / 403 / 404이면 패치됨
>         그 외에는 판정 불가

안전한 이유

tools/list JSON-RPC 메서드는 읽기 전용입니다. MCP 서버가 알고 있는 도구를 열거할 뿐 어떤 도구도 호출하지 않습니다. 스크립트는 다른 메서드로 POST를 거부하며 파괴적인 도구에 대한 페이로드를 절대 구성하지 않습니다.

설치

root@kitploit:~
git clone https://github.com/your-org/CVE-2026-33032-detector.git
cd CVE-2026-33032-detector
python3 --version      # 3.9 이상
# 타사 패키지 필요 없음.

Nmap NSE 구성 요소의 경우 nginx-ui-mcpwn.nse를 로컬 스크립트 디렉토리에 복사하고 스크립트 데이터베이스를 새로 고칩니다:

root@kitploit:~
cp nginx-ui-mcpwn.nse /usr/share/nmap/scripts/
sudo nmap --script-updatedb

사용법

Python 탐지기

root@kitploit:~
# 단일 대상
python3 detect_nginx_ui_mcpwn.py --target https://nginx-ui.internal

# 파일에서 대량 스캔
python3 detect_nginx_ui_mcpwn.py --targets targets.txt --workers 20

# jq로 파이프하기에 적합한 JSON (NDJSON) 출력
python3 detect_nginx_ui_mcpwn.py --target 10.0.0.5:9000 --json | jq .

명령줄 참조:

Nmap NSE

root@kitploit:~
nmap -p 80,443,9000 --script nginx-ui-mcpwn 10.0.0.0/24
nmap -p 443 --script nginx-ui-mcpwn --script-args "nginx-ui-mcpwn.timeout=8" host.example.com

출력 예시

사람이 읽을 수 있는 형식

root@kitploit:~
 _   _       _                  _    _  ___   __  __  ____ ____
| \ | | __ _(_)_ __ __  __     | |  | ||_ _| |  \/  |/ ___|  _ \__      ___ __
|  \| |/ _` | | '_ \\ \/ /_____| |  | | | |  | |\/| | |   | |_) \ \ /\ / / '_ \
| |\  | (_| | | | | |>  <|_____| |__| | | |  | |  | | |___|  __/ \ V  V /| | | |
|_| \_|\__, |_|_| |_/_/\_\     |_____|_||___| |_|  |_|\____|_|     \_/\_/ |_| |_|
       |___/

  CVE-2026-33032 nginx-ui MCPwn 탐지기 > 비파괴적

[!] 취약 https://nginx-ui.internal version=2.3.2 evidence=status=200; body_preview={"jsonrpc":"2.0","id":"...","result":{"tools":[{"name":"edit_config",...
[+] 패치됨 https://nginx-ui-patched:9000 version=2.3.4 evidence=status=401; body_preview={"error":"unauthorized"}
[.] nginx-ui 아님 https://example.com evidence=fingerprint negative

요약: 3개 대상 중 1개가 취약으로 플래그됨

NDJSON

root@kitploit:~
{"target":"https://nginx-ui.internal","reachable":true,"is_nginx_ui":true,"mcp_endpoint_present":true,"session_id_obtained":true,"mcp_message_unauthenticated":true,"vulnerable":true,"nginx_ui_version":"2.3.2","evidence":"status=200; body_preview=...","error":null}

Nmap

root@kitploit:~
PORT     STATE SERVICE
9000/tcp open  http
| nginx-ui-mcpwn:
|   status: VULNERABLE
|   version: 2.3.2
|   session_id: abc123
|_  evidence: tools/list accepted without credentials

CVE-2026-27944 연계

CVE-2026-27944(X-Backup-Security 헤더에서 AES 키를 유출하는 인증 없는 /api/backup 다운로드)는 MCPwn과 깔끔하게 연계됩니다: 백업 아카이브는 node_secret을 노출하며, 이는 운영자가 시크릿을 교체할 때까지 33032 수정이 적용된 후에도 /mcp에 인증하는 데 사용될 수 있습니다.

27944용 동반 탐지기는 이 연구 프로젝트의 형제 디렉토리에 있습니다.

조치 방안

  1. nginx-ui를 2.3.4 이상으로 업그레이드합니다.
  2. node_secret, 관리자 비밀번호 해시 및 nginx-ui 프로세스에 접근 가능했던 모든 TLS 개인 키를 교체합니다.
  3. nginx-ui 노출을 관리 VLAN, VPN 또는 /mcp_message 라우트에 도달하기 전에 인증을 강제하는 리버스 프록시로 제한합니다.
  4. 노출 기간 동안 도입된 예상치 못한 upstream / proxy_pass / ssl_certificate 지시문이 있는지 nginx 설정 기록(Git 또는 백업)을 검토합니다.

책임 있는 사용

이 도구는 방어자가 테스트 권한이 있는 환경 내부의 패치되지 않은 인스턴스를 식별하도록 돕기 위해 게시되었습니다. 소유하지 않았거나 평가에 대한 명시적 권한이 없는 시스템에 사용하지 마십시오. 저자는 오용에 대한 모든 책임을 부인합니다.

참고 자료

  • NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-33032
  • Picus Security (MCPwn 분석): https://www.picussecurity.com/resource/blog/cve-2026-33032-mcpwn-how-a-missing-middleware-call-in-nginx-ui-hands-attackers-full-web-server-takeover
  • Security Affairs: https://securityaffairs.com/190841/hacking/cve-2026-33032-severe-nginx-ui-bug-grants-unauthenticated-server-access.html
  • BleepingComputer: https://www.bleepingcomputer.com/news/security/critical-nginx-ui-auth-bypass-flaw-now-actively-exploited-in-the-wild/
  • 업스트림 프로젝트: https://github.com/0xjacky/nginx-ui

라이선스

MIT 라이선스로 배포됩니다. 파일별 고지는 각 스크립트 헤더를 참조하십시오.

도구 다운로드
필드값
CVE IDCVE-2026-33032
별칭MCPwn
CVSS 3.19.8 / Critical (AV:N / AC:L / PR:N / UI:N / S:U / C:H/I:H/A:H)
CWECWE-306 Missing Authentication for Critical Function
영향 제품nginx-ui (github.com/0xjacky/nginx-ui)
영향 버전2.3.4 이전의 모든 버전
수정 버전2.3.4
악용 상태실제 환경에서 활발히 악용 중 (Picus Security, Recorded Future)
Shodan 노출~2,689개의 인터넷 노출 인스턴스
공개 날짜2026-04-15
MCP 도구nginx 서버에 미치는 영향
edit_config임의의 server 블록 재작성, 공격자 upstream 삽입
reload_nginx수동 작업 없이 공격자 설정 적용
stop_nginx서비스 거부
read_file마운트된 경로에서 TLS 개인 키, 자격 증명 유출
create_cert공격자 통제 하에 TLS 인증서 재발급
list_backups / downloadnode_secret 및 해시를 포함한 전체 nginx-ui 백업 다운로드
플래그용도
--target단일 URL 또는 host[:port]
--targets줄바꿈으로 구분된 대상 파일
--timeoutHTTP 타임아웃, 기본값 10초
--workers대량 스캔용 동시 작업자 수, 기본값 10
--verify-tlsTLS 인증서 검증 강제 (기본적으로 꺼짐)
--json대상당 하나의 레코드로 NDJSON 출력
--no-bannerASCII 배너 표시 억제