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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-35616-check — FortiClient EMS의 사전 인증 API 우회인 CVE-2026-35616용 비파괴 스캐너입니다. 스푸핑된 SSL 헤더 유무에 따른 HTTP 응답을 비교하여 취약점을 탐지하며 Python 표준 라이브러리만 사용합니다. | Kitploit
도구/GitHubGitHub/bishopfox/cve-2026-35616-check
Vulnerability AnalysisExploitationWeb Application ExploitationAPI Security TestingPenetration TestingAuthentication
GitHubbishopfox/cve-2026-35616-check

CVE-2026-35616-check

FortiClient EMS의 사전 인증 API 우회인 CVE-2026-35616용 비파괴 스캐너입니다. 스푸핑된 SSL 헤더 유무에 따른 HTTP 응답을 비교하여 취약점을 탐지하며 Python 표준 라이브러리만 사용합니다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-35616 취약점 평가 도구

FortiClient EMS 서버가 CVE-2026-35616에 취약한지 중단 없이 안전하게 탐지합니다. Bishop Fox 블로그의 전체 분석 문서를 참조하세요.

설명

CVE-2026-35616은 FortiClient EMS 7.4.5 및 7.4.6의 사전 인증(pre-authentication) API 우회 취약점으로, 원격의 인증되지 않은 공격자가 HTTP 헤더 스푸핑을 통해 인증서 기반 인증을 우회할 수 있게 합니다. Django 애플리케이션은 사용자가 제어할 수 있는 HTTP 헤더(X-SSL-CLIENT-VERIFY, X-SSL-CLIENT-CERT)를 Apache mod_ssl WSGI 환경 변수와 동등한 것으로 신뢰하며, Apache 구성은 이를 결코 제거하지 않습니다. Distinguished Name 문자열 일치만 수행하는(암호화 서명 검증이 없는) 인증서 체인 검증과 결합하면, 공격자는 인증서를 위조하고 인증된 API 액세스 권한을 얻을 수 있습니다. Fortinet은 실제 환경에서의 악용을 확인했습니다.

이 도구는 비파괴적 취약점 테스트를 다음과 같이 수행합니다:

  1. 스푸핑된 헤더 없이 /api/v1/fabric_device_auth/fortigate/init에 기준(baseline) POST 전송
  2. 인증서 데이터 없이 X-SSL-CLIENT-VERIFY: SUCCESS 헤더를 포함한 동일한 POST 전송
  3. 헤더가 Django에 도달했는지 확인하기 위해 두 응답 비교

인증서 PEM 데이터 없이 verify 헤더를 전송하면 탐지 경로가 트리거되지만 인증서 체인이 제공되지 않으므로 인증은 불가능합니다. 서버는 안정적인 상태를 유지하며 연결 처리를 계속할 수 있습니다.

  • 취약한 서버는 서로 다른 응답을 반환합니다: 기준 요청은 HTTP 401("Certificate not found in request header")을 반환하는 반면, 스푸핑된 요청은 HTTP 500(서버 오류)을 반환합니다. 는 게이트를 통과하지만 이 누락된 PEM 데이터로 인해 충돌하기 때문입니다.
contains_certificate()
validate_cert_chain()
  • 패치된 서버는 두 요청 모두에 대해 동일한 HTTP 401 응답을 반환합니다. 핫픽스가 Apache RequestHeader unset 지시문을 추가하여 스푸핑된 헤더가 Django에 도달하기 전에 제거하기 때문입니다.
  • EMS가 아닌 서버는 엔드포인트에 도달하지 못하며, 이 경우 도구는 INCONCLUSIVE 결과를 보고합니다.
  • 설치

    root@kitploit:~
    git clone https://github.com/BishopFox/CVE-2026-35616-check
    cd CVE-2026-35616-check
    

    외부 종속성이 없습니다. 스캐너는 Python 표준 라이브러리 모듈만 사용합니다.

    사용법

    <TARGET>:<PORT>에 있는 FortiClient EMS 서버를 테스트합니다. 기본 포트는 443/TCP입니다.

    root@kitploit:~
    python3 CVE-2026-35616-check.py <TARGET> [PORT]
    

    예시: 취약한 서버

    root@kitploit:~
    $ python3 CVE-2026-35616-check.py 192.168.1.1
    ======================================================================
    FortiClient EMS CVE-2026-35616 Vulnerability Scanner
    Non-Destructive Detection
    ======================================================================
    
    [*] Target: 192.168.1.1:443
    [*] Testing for CVE-2026-35616 (non-destructive)
    
    [1] Sending baseline POST (no spoof headers)... HTTP 401
    [2] Sending POST with X-SSL-CLIENT-VERIFY: SUCCESS... HTTP 500
    
    [*] Analyzing responses...
    [+] Baseline: 401 — Certificate not found in request header.
    [+] Spoofed:  500 — Server encountered an error, please try again later.
    [!] Spoofed header changed server behavior
    [!] X-SSL-CLIENT-VERIFY is reaching Django (hotfix not applied)
    
    ======================================================================
    RESULT: VULNERABLE to CVE-2026-35616
    Affected versions: FortiClient EMS 7.4.5 - 7.4.6
    Recommendation: Apply Fortinet hotfix or upgrade to 7.4.7+
    ======================================================================
    

    예시: 패치된 서버

    root@kitploit:~
    $ python3 CVE-2026-35616-check.py 192.168.1.1
    ======================================================================
    FortiClient EMS CVE-2026-35616 Vulnerability Scanner
    Non-Destructive Detection
    ======================================================================
    
    [*] Target: 192.168.1.1:443
    [*] Testing for CVE-2026-35616 (non-destructive)
    
    [1] Sending baseline POST (no spoof headers)... HTTP 401
    [2] Sending POST with X-SSL-CLIENT-VERIFY: SUCCESS... HTTP 401
    
    [*] Analyzing responses...
    [+] Baseline: 401 — Certificate not found in request header.
    [+] Spoofed:  401 — Certificate not found in request header.
    [-] Responses identical (header stripped by Apache)
    
    ======================================================================
    RESULT: NOT VULNERABLE (hotfix applied)
    Apache is stripping X-SSL-CLIENT-VERIFY before it reaches Django
    ======================================================================
    

    사전 조건

    이 도구는 다음 조건이 충족되는 경우에만 취약점을 탐지할 수 있습니다:

    • 대상이 FortiClient EMS 7.4.5 또는 7.4.6을 실행 중
    • EMS 웹 인터페이스에 접근 가능
    • /api/v1/fabric_device_auth/fortigate/init 엔드포인트가 존재하고 cert_chain_approved 인증을 사용

    조건이 충족되지 않으면 도구는 INCONCLUSIVE 결과를 보고합니다.

    라이선스

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

    법적 고지

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

    관련 자료

    • Fortinet 권고 FG-IR-26-099
    • Bishop Fox 블로그: 전체 기술 분석
    • NVD — CVE-2026-35616
    도구 다운로드