
특정 Fortinet 장치에서 치명적인 인증 우회 취약점(CVE-2024-55591)을 발견하고 악용하기 위한 포괄적인 올인원 Python 기반 개념 증명(PoC) 스크립트입니다.
특정 Fortinet 장치의 치명적인 인증 우회 취약점(CVE-2024-55591)을 발견하고 악용하기 위한 포괄적인 올인원 Python 기반 Proof of Concept 스크립트입니다. 이 스크립트는 다음과 같은 기능을 제공합니다:
nmap을 사용하여 대상 호스트의 열린 포트 스캔CVE-2024-55591은 특정 Fortinet 제품(FortiOS 및 FortiProxy)의 치명적인 인증 우회 취약점입니다. WebSocket/Telnet 관리 인터페이스의 결함을 악용하면 공격자는 유효한 자격 증명 없이 권한 있는 CLI 액세스를 얻을 수 있습니다.
Fortinet PSIRT 권고(FG-IR-24-535)에 따르면 다음 버전이 영향을 받는 것으로 알려져 있습니다:
git clone https://github.com/exfil0/CVE-2024-55591-POC.git
cd CVE-2024-55591-POC
python3 attack.py
실행하면 스크립트는 누락된 Python 종속성(requests, urllib3)을 자동으로 확인하고 설치를 시도합니다.
다음 항목을 입력하라는 메시지가 표시됩니다:
확인하면 스크립트는 연결을 테스트하고, 취약점을 확인하고, 연결을 WebSocket으로 업그레이드한 후 인증 우회를 시도합니다.
시작 시 이 스크립트는 requests와 urllib3를 확인합니다. 누락된 경우 pip를 통해 설치를 시도합니다.
원하는 경우 스크립트는 nmap -sS -p- --min-rate 500 <host>를 실행하여 열린 TCP 포트를 찾은 후 다음 중 하나를 수행합니다:
여러 포트가 열려 있는 것으로 발견되면 스크립트에 모두 테스트하도록 지시할 수 있습니다. 이는 Fortinet 서비스가 비표준 포트에서 수신 대기 중인 경우 유용합니다.
익스플로잇이 성공하면 동일한 Telnet 세션에서 다음 명령과 같은 추가 명령을 선택적으로 실행할 수 있습니다:
diag sys topdiag debug crashlog readexecute shell더 고급 데이터를 수집하기 위해 스크립트에서 이러한 익스플로잇 후 명령을 수정할 수 있습니다.
스크립트는 get system status 또는 get system info의 출력에서 장치 버전을 파싱하려고 시도합니다. 알려진 취약 범위와 일치하면 알려줍니다.
192.168.1.50y (예) - 열린 포트 발견yget system statusy 또는 nNmap이 여러 개의 열린 포트를 발견하면 모든 포트를 자동으로 테스트하거나 특정 포트를 선택할 수 있습니다.
/login?redir=/ng가 Fortinet의 관리 인터페이스를 반환하는지 확인합니다service-worker.js?local_access_token=ScaryBYte에 api/v2/static 하위 문자열이 포함되어 있는지 확인합니다get system status와 같은 명령을 실행할 수 있습니다익스플로잇 후 모드가 활성화되면 스크립트는 추가 디버그 또는 시스템 명령을 전송합니다. 출력은 수집되어 콘솔에 표시됩니다.
이 Proof of Concept 스크립트는 교육 및 테스트 목적으로만 제공됩니다. 명시적 허가 없이 시스템을 무단으로 악용하는 것은 불법입니다. 시스템을 스캔하거나 테스트하기 전에 항상 적절한 승인을 받았는지 확인하고, 패치 정보는 Fortinet 권고(FG-IR-24-535)를 참조하십시오.