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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-34908-check — UniFi OS Server가 CVE-2026-34908에 취약한지 안전하게 탐지 | Kitploit
도구/GitHubGitHub/bishopfox/cve-2026-34908-check
ReconnaissanceVulnerability ScannersExploitationWeb Application ExploitationInformation GatheringPenetration Testing
GitHubbishopfox/cve-2026-34908-check

CVE-2026-34908-check

UniFi OS Server가 CVE-2026-34908에 취약한지 안전하게 탐지

저장소 보기
6642개월 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

UniFi OS Server 인증 없는 RCE 체인 탐지 스크립트

UniFi OS Server ≤ 5.0.6의 인증되지 않은 원격 코드 실행 체인을 위한 안전한 탐지기입니다. Ubiquiti 보안 권고 게시판 064에서 공개되었습니다.

CVE클래스체인에서의 역할
CVE-2026-34908 / CVE-2026-34909부적절한 접근 제어 / 경로 탐색인증 게이트웨이 우회 (발판)
CVE-2026-34910부적절한 입력 검증 → 명령 주입우회를 통해 도달하는 인증되지 않은 RCE

UniFi OS Server 5.0.8에서 수정됨.

실행해도 안전한가요?

예. 이 탐지기는 프로덕션 및 평가 용도로 설계되었습니다:

  • 명령어가 실행되지 않습니다. 프로브가 필수 매개변수 없이 취약한 엔드포인트에 도달하므로 핸들러가 누락된 입력을 거부하고, 그 검증 오류를 통해 버그를 확인합니다.
  • 대상 상태가 변경되지 않습니다. 모든 요청은 단순 GET입니다.
  • 오탐 방지. 취약함 판정은 인증 우회가 취약한 핸들러에 도달했고, 기준 요청(동일 엔드포인트, 우회 없음)이 올바르게 401로 거부된 경우에만 발생합니다.

작동 방식

UniFi OS는 서비스를 nginx로 프론트하며, nginx는 하위 요청을 통해 인증을 강제합니다. 이 인증 검사는 원시 URI가 /api/auth/validate-sso/로 시작하는 모든 요청을 공개로 처리하지만, nginx는 정규화된 URI(퍼센트 디코딩 %2f→/ 및 ../ 축소)를 사용하여 백엔드로 라우팅합니다. 다음과 같은 요청:

root@kitploit:~
GET /api/auth/validate-sso/..%2f..%2f..%2fproxy/users/api/v2/ucs/update/latest_package

따라서 공개(원시 접두사)로 처리되지만 인증된 내부 패키지 업데이트 엔드포인트(정규화된 경로)로 라우팅됩니다. pkg_name이 없으면 해당 엔드포인트는 query param pkg_name required로 응답합니다. 이는 우회가 작동하고 취약한 핸들러에 접근 가능함을 증명합니다.

탐지기는 또한 우회 없이 동일한 엔드포인트로 기준 요청을 보내고, 호스트를 취약하다고 선언하기 전에 401을 반환해야 합니다. 이 검사는 취약한 동작을 직접 테스트합니다. 취약함 판정은 우회가 실제로 싱크에 도달했음을 의미합니다.

취약하지 않음 판정 전에 대상이 UniFi OS인지 확인

프로브가 취약함 또는 패치됨을 긍정적으로 확인하지 못할 때마다 탐지기는 루트 페이지를 가져와 UniFi OS 관리 포털 지문(<title>UniFi OS</title>, window.UNIFI_OS_MANIFEST, id="portal-root", id="site-manager_portal-container")을 찾습니다. 이는 401에도 적용됩니다: 우회에 인증을 강제하는 UniFi OS 호스트는 결론 없음이지만, 단순히 모든 것을 401로 응답하는 비UniFi 프록시는 지문이 없으므로 영향 없음으로 보고됩니다. 따라서 모든 "취약하지 않음" 결과는 지문에 근거합니다: 표시 존재 → 결론 없음; 표시 없음 → 영향 없음 (CVE가 적용되지 않음).

요구 사항

  • Python 3.7+, 표준 라이브러리만 — 서드파티 패키지 없음.

사용법

root@kitploit:~
# single host (default port 11443)
./cve_2026_34908_check.py 192.168.1.10

# explicit port / URL forms
./cve_2026_34908_check.py host-a:11443 https://host-b

# scan a list, one target per line ('#' comments allowed), compact output
./cve_2026_34908_check.py -f targets.txt --brief

# machine-readable output for pipelines
./cve_2026_34908_check.py -f targets.txt --json > results.json

옵션

예제

취약한 콘솔 (자세한 출력, 기본값). 두 번째 줄은 판정 세부 정보입니다. [!] 마커와 취약함은 TTY에서 빨간색으로 표시됩니다:

root@kitploit:~
$ ./cve_2026_34908_check.py 192.168.1.10
[!] 192.168.1.10:11443: VULNERABLE
      auth bypass reached the vulnerable handler (no command executed); baseline correctly 401

패치된 콘솔 (5.0.8+):

root@kitploit:~
$ ./cve_2026_34908_check.py 192.168.1.11
[+] 192.168.1.11:11443: PATCHED
      nginx rejected the normalized-path divergence (HTTP 400) — 5.0.8+ behavior

탐지기가 분류할 수 없는 확인된 UniFi OS 호스트 → 결론 없음. 세부 정보 줄이 두 가지 경우(인증 강제 vs. 예상치 못한 응답)를 구분합니다:

root@kitploit:~
$ ./cve_2026_34908_check.py 192.168.1.12 192.168.1.13
[?] 192.168.1.12:11443: INCONCLUSIVE
      bypass blocked / auth enforced (HTTP 401) on a confirmed UniFi OS host — not confirmed vulnerable
[?] 192.168.1.13:11443: INCONCLUSIVE
      UniFi OS detected, but probe returned an unexpected response: HTTP 302 text/html

전혀 UniFi OS가 아닌 호스트 → 영향 없음 (권고가 적용되지 않음):

root@kitploit:~
$ ./cve_2026_34908_check.py 203.0.113.9:443
[-] 203.0.113.9:443: UNAFFECTED
      no UniFi OS web fingerprint on / (probe HTTP 404) — target is not a UniFi OS Server

목록 스캔, 호스트당 정렬된 한 줄 (--brief). 종료 상태는 취약함 호스트가 있으면 1, 없으면 0입니다 — 스크립트에 편리:

root@kitploit:~
$ ./cve_2026_34908_check.py -f targets.txt --brief; echo "exit: $?"
VULNERABLE    192.168.1.10:11443
PATCHED       192.168.1.11:11443
INCONCLUSIVE  192.168.1.12:11443
UNAFFECTED    203.0.113.9:443
ERROR         10.0.0.1:11443  timeout
exit: 1

파이프라인용 기계 판독 가능 출력 (--json). 각 결과는 verdict와 그 뒤의 bypass.state/bypass.detail을 포함합니다. ERROR 결과는 bypass 대신 error 필드를 포함합니다:

root@kitploit:~
$ ./cve_2026_34908_check.py 192.168.1.10 192.168.1.11 10.0.0.1 --json
[
  {
    "target": "192.168.1.10:11443",
    "bypass": {
      "state": "vulnerable",
      "detail": "auth bypass reached the vulnerable handler (no command executed); baseline correctly 401"
    },
    "verdict": "VULNERABLE"
  },
  {
    "target": "192.168.1.11:11443",
    "bypass": {
      "state": "patched",
      "detail": "nginx rejected the normalized-path divergence (HTTP 400) — 5.0.8+ behavior"
    },
    "verdict": "PATCHED"
  },
  {
    "target": "10.0.0.1:11443",
    "verdict": "ERROR",
    "error": "timeout"
  }
]

판정

종료 코드

코드의미
0취약함을 반환한 대상 없음
1최소 하나의 대상이 취약함
2사용법 오류 (잘못된 인수 / 읽을 수 없는 대상 파일)

제한 사항

  • 결론 없음은 안전을 보장하지 않습니다 — UniFi OS 호스트를 확인했지만 분류할 수 없습니다(우회에 인증 강제 또는 예상치 못한 응답). 필터링이 심하거나 예상치 못한 프록시가 앞에 있는 호스트는 네트워크만으로 분류할 수 없을 수 있습니다. 가능한 경우 실행 중인 버전을 확인하십시오.
  • 영향 없음은 루트 페이지에 UniFi OS 포털 지문이 없음을 의미합니다(지문 없이 401을 반환하는 호스트 포함). 포털 HTML을 제거하거나 다시 작성하는 리버스 프록시 뒤에 숨겨진 UniFi OS 콘솔은 잘못 보고될 수 있습니다. 대상이 UniFi OS로 예상되는 경우 직접 확인하십시오.
  • 탐지기는 취약한 동작의 접근 가능 여부를 보고합니다.

해결 방법

UniFi OS Server를 버전 5.0.8 이상으로 업데이트하십시오. 수정 사항은 nginx 원시 대 정규화 URI 비교(인증 우회 차단) 및 패키지 업데이트 경로의 입력 검증(명령 주입 차단)을 추가합니다.

라이선스

이 코드는 MIT 라이선스 하에 배포됩니다.

법적 고지

사전 상호 동의 없이 대상을 공격하기 위해 이 도구를 사용하는 것은 불법입니다. 모든 해당 지역, 주 및 연방 법률을 준수하는 것은 최종 사용자의 책임입니다. 개발자는 어떠한 책임도 지지 않으며 이 프로그램으로 인한 오용 또는 손해에 대해 책임을 지지 않습니다.

참고 자료

  • Ubiquiti Security Advisory Bulletin 064
  • Bishop Fox 블로그: 전체 기술 분석
도구 다운로드
프로브 응답판정
200 + 핸들러 오류 표시취약함
400 (nginx가 차이를 거부)패치됨 (5.0.8+)
401, UniFi OS 지문 존재결론 없음 (인증 강제 / 우회 차단됨)
401, UniFi OS 지문 없음영향 없음 (UniFi OS Server가 아님)
기타, UniFi OS 지문 없음영향 없음 (UniFi OS Server가 아님)
기타, UniFi OS 지문 있음결론 없음 (예상치 못한 응답)
플래그설명
targets하나 이상의 host, host:port 또는 https://host:port
-f, --targets-file FILE파일에서 대상 읽기 (한 줄에 하나; # 주석)
--brief대상당 정렬된 한 줄 — 많은 호스트 스캔에 이상적
--json구조화된 JSON 결과 출력
--timeout SECS요청당 제한 시간 (기본값: 10)
--no-color색상 출력 비활성화 (NO_COLOR 및 비-TTY도 인식)
판정의미
취약함인증 우회가 인증 없이 취약한 핸들러에 도달했습니다. 5.0.8+로 패치하세요.
패치됨nginx가 정규화된 경로 차이를 거부했습니다 (5.0.8+ 동작).
영향 없음루트 페이지에 UniFi OS 포털 지문이 없음 — 대상이 UniFi OS Server가 아니므로 권고가 적용되지 않습니다. 지문 없이 401을 반환하는 호스트(예: 모든 것을 거부하는 관련 없는 프록시)를 포함합니다.
결론 없음분류할 수 없는 확인된 UniFi OS 호스트 — 버전을 수동으로 확인하십시오. 판정 세부 정보 줄이 어떤 경우인지 알려줍니다: (a) 우회가 차단됨 / 인증 강제 (401), 또는 (b) 프로브가 예상치 못한 응답을 반환함.
오류연결/시간 초과/TLS 실패.