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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-44848-PoC — CVE-2026-44848용 PoC: Portainer의 Docker 플러그인 엔드포인트에서의 인가 누락 -> 호스트 RCE (GHSA-rrmm-9v76-h3p4). 표준 라이브러리만 사용하는 Python. | Kitploit
도구/GitHubGitHub/boreas37/cve-2026-44848-poc
Authentication & AuthorizationContainer SecurityVulnerability AnalysisExploitationWeb Application ExploitationAPI Security Testing
GitHubboreas37/cve-2026-44848-poc

CVE-2026-44848-PoC

CVE-2026-44848용 PoC: Portainer의 Docker 플러그인 엔드포인트에서의 인가 누락 -> 호스트 RCE (GHSA-rrmm-9v76-h3p4). 표준 라이브러리만 사용하는 Python.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-44848 — Portainer: Docker 플러그인 엔드포인트에 대한 인가 누락 → 호스트 RCE

CVE-2026-44848에 대한 개념 증명(PoC)입니다. Portainer의 인증 누락(CWE-862) 취약점으로, Docker 엔드포인트 접근 권한이 있는 비관리자(non-admin) 사용자가 권한 있는 Docker 플러그인 작업을 수행하여 완전한 호스트 RCE에 도달할 수 있게 합니다.

GitHub Security Advisory: GHSA-rrmm-9v76-h3p4 · CVSS 9.4 (치명적).

근본 원인

Portainer는 Docker API 위에서 역할 기반 접근 제어(RBAC)를 적용하며, 요청을 리소스별 핸들러를 통해 프록시하여 인가 검사를 수행합니다. 그러나 Docker 플러그인 관리 엔드포인트(/plugins/*)는 핸들러로 등록되지 않았기 때문에 인가 계층이 해당 엔드포인트에 대해 실행되지 않습니다. 그 결과, Standard User(역할 2) — 또는 엔드포인트 수준 접근 권한이 부여된 모든 역할 — 는 기본 Docker 데몬에 대해 직접 권한 있는 플러그인 작업을 호출할 수 있습니다:

  • POST /plugins/pull — 임의의 레지스트리에서 임의의 플러그인을 가져옵니다(pull)
  • 플러그인은 CAP_SYS_ADMIN 및 호스트 경로 마운트를 포함한 권한을 요청합니다
  • POST /plugins/{name}/enable — Docker가 해당 기능을 가진 플러그인을 호스트에서 root로 실행 → 호스트 파일시스템에 대한 완전한 접근 권한을 얻으며 Docker 호스트의 root와 동등해짐

영향을 받는 버전

  • >= 2.33.0, < 2.33.8
  • >= 2.39.0, < 2.39.2
  • >= 2.40.0, < 2.41.0

PoC가 입증하는 내용

이 버그의 핵심이자 안전하게 재현 가능한 원시 동작(primitive)은 다음과 같습니다: 표준(비관리자) 사용자가 인가 없이 Portainer 프록시를 통해 권한 있는 /plugins/* Docker API에 도달할 수 있습니다. 이 PoC는 실제 취약한 Portainer 인스턴스를 대상으로 엔드투엔드로 이를 수행합니다:

  1. POST /api/users/admin/init를 통해 관리자를 부트스트랩합니다(409를 허용하며 로그인으로 폴백).
  2. Standard User(bob, 역할 2)를 생성하고, 비밀번호를 재설정하여 409를 허용합니다.
  3. Docker 엔드포인트를 나열하고(없으면 multipart POST /api/endpoints를 통해 로컬 소켓 엔드포인트를 자동 생성) PUT /api/endpoints/{id} UserAccessPolicies를 통해 bob에게 접근 권한을 부여합니다.
  4. bob(비관리자 사용자)으로 로그인하고 bob의 토큰으로 GET /api/endpoints/1/docker/plugins를 호출합니다.
  5. HTTP 200 → 표준 사용자가 권한 있는 엔드포인트에 도달 → 인증 우회(auth-bypass) 확인.

사용법

root@kitploit:~
# Defaults: https://localhost:9444, random admin password
python3 portainer_plugin_poc.py

# Explicit target + admin password + command
python3 portainer_plugin_poc.py --url https://localhost:9444 --admin-pass 'P@ssw0rd!' --command "id; hostname"

# Write a JSON summary
python3 portainer_plugin_poc.py --url https://localhost:9444 --output out.json

python3 portainer_plugin_poc.py --help

Python 3 표준 라이브러리만 필요합니다. TLS 검증은 비활성화되어 있습니다(자체 서명된 랩 인증서).

랩 환경 (재현)

root@kitploit:~
docker run -d --name portainer-lab-cve44848 \
  -p 127.0.0.1:9444:9443 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  portainer/portainer-ce:2.39.1   # vulnerable

확인된 출력

root@kitploit:~
AUTH-BYPASS CONFIRMED: standard user reached /plugins (HTTP 200)
=> PASS (missing auth / host-RCE primitive confirmed)

참고 자료

  • GHSA-rrmm-9v76-h3p4
  • CVE-2026-44848 (NVD/cvefeed)

면책 조항

승인된 보안 연구 및 테스트 목적으로만 사용하십시오. 활성화 단계(POST /plugins/*)는 호스트에서 root 권한을 부여할 수 있습니다. 이 PoC는 인가 우회를 입증하는 데서 멈추며, 파괴적이거나 악의적인 플러그인을 활성화하지 않습니다. 소유한 시스템 또는 테스트가 승인된 시스템에 대해서만 사용하십시오.

도구 다운로드