
This repository provides production-ready detection engineering content for **CVE-2025-25257**, a pre-authentication SQL Injection vulnerability in Fortinet FortiWeb Fabric Connector versions 7.0 through 7.6.x. Successful exploitation can lead to Remote Code Execution without any prior authentication.
이 저장소는 Fortinet FortiWeb Fabric Connector 버전 7.0부터 7.6.x까지의 사전 인증 SQL 인젝션 취약점인 CVE-2025-25257에 대한 프로덕션 준비 탐지 엔지니어링 콘텐츠를 제공합니다. 성공적인 익스플로잇은 사전 인증 없이 원격 코드 실행으로 이어질 수 있습니다.
이 콘텐츠는 방어 목적으로만 사용됩니다. 이는 보안 운영 센터(SOC) 팀, 탐지 엔지니어, 위협 헌터를 대상으로 합니다. 무기화된 익스플로잇 코드는 포함되어 있지 않습니다.
CVE-2025-25257은 FortiWeb의 Fabric Connector API 엔드포인트 /api/fabric/device/status에 영향을 미칩니다. Authorization 헤더가 SQL 쿼리에 직접 전달되어 삭제(sanitisation)되지 않습니다. 인증되지 않은 공격자는 Bearer 토큰 값에 SQL 구문을 주입하여 기본 쿼리를 조작하고, 인증을 우회하며, 특정 구성에서 SQL 기반 명령 스태킹 또는 파일 쓰기 프리미티브를 통해 원격 코드 실행을 달성할 수 있습니다.
이 취약점은 네트워크를 통해 자격 증명 없이 익스플로잇 가능합니다. 로그 수집이 되어 있으면 HTTP 액세스 로그에서 쉽게 탐지할 수 있습니다.
공격자는 조작된 HTTP GET 요청을 Fabric Connector API로 전송합니다. Authorization 헤더의 Bearer 토큰에 주입된 SQL이 포함되어 있습니다. 예시 패턴:
Authorization: Bearer aaa' OR '1'='1
이로 인해 백엔드 SQL 쿼리가 true로 평가되어 토큰 검증을 우회합니다. 추가 익스플로잇은 데이터를 읽기 위한 UNION 기반 주입 또는 데이터베이스 구성 및 권한에 따라 파일을 쓰거나 OS 명령을 실행하기 위한 스택 쿼리를 포함할 수 있습니다.
다음은 탐지 규칙 검증 목적으로만 문서화되었습니다.
GET /api/fabric/device/status HTTP/1.1
Host: <fortiweb-ip>
Authorization: Bearer aaa' OR '1'='1
이 저장소의 탐지 규칙은 HTTP 로그 및 네트워크 트래픽에서 이 패턴 및 유사한 주입 패턴을 식별하도록 조정되었습니다.
YARA 규칙은 rules/yara/에 있습니다.
cve_2025_25257_http.yar - HTTP 로그 파일 및 캡처된 트래픽에서 익스플로잇 패턴 탐지cve_2025_25257_webshell.yar - 익스플로잇 후 잠재적으로 드롭된 웹 셸 탐지cve_2025_25257_payload.yar - 디스크의 원시 페이로드 아티팩트 탐지HTTP 액세스 로그 스캔:
yara -r rules/yara/cve_2025_25257_http.yar /var/log/fortiweb/
웹 루트에서 드롭된 파일 스캔:
yara -r rules/yara/cve_2025_25257_webshell.yar /var/www/html/
캡처된 PCAP 스캔:
yara rules/yara/cve_2025_25257_http.yar capture.pcap
디렉토리에 대해 모든 규칙을 재귀적으로 실행:
yara -r rules/yara/ /path/to/scan/
KQL 쿼리는 rules/kql/에 있습니다. 각 파일은 특정 탐지 카테고리를 대상으로 합니다.
Sigma 규칙은 rules/sigma/에 있습니다. sigma-cli 또는 pySigma를 사용하여 모든 SIEM 형식으로 변환할 수 있습니다.
Splunk SPL로 변환:
sigma convert -t splunk rules/sigma/cve_2025_25257_sqli.yml
Elastic EQL로 변환:
sigma convert -t elasticsearch rules/sigma/cve_2025_25257_sqli.yml
FortiWeb 어플라이언스 CLI에서:
get system status | grep Version
영향받는 버전: 7.0.x ~ 7.6.0
패치됨: 7.6.1 이상
취약한 엔드포인트를 시뮬레이션하는 기본 Nginx 리버스 프록시를 탐지 테스트에 사용할 수 있습니다. 로그 기반 탐지 검증에는 실제 FortiWeb 이미지가 필요하지 않습니다.
# Pull the test lab container
docker run -d \
--name fortiweb-sim \
-p 8443:443 \
-v $(pwd)/src/lab/nginx.conf:/etc/nginx/nginx.conf:ro \
nginx:alpine
# Send a simulated exploitation request
curl -k -H "Authorization: Bearer aaa' OR '1'='1" \
https://localhost:8443/api/fabric/device/status
이렇게 하면 D-01의 탐지 패턴과 일치하는 액세스 로그 항목이 생성됩니다.
테스트 요청을 보낸 후 시뮬레이션된 로그 출력을 확인하십시오:
docker logs fortiweb-sim | grep "fabric/device/status"
예상 로그 항목 패턴:
"GET /api/fabric/device/status HTTP/1.1" 401 - "Bearer aaa' OR '1'='1"
로그에 대해 YARA 규칙 실행:
yara rules/yara/cve_2025_25257_http.yar /var/log/nginx/access.log
예상 출력:
CVE_2025_25257_SQLi_AuthHeader /var/log/nginx/access.log
cve-2025-25257-detection/
├── README.md
├── LICENSE
├── .gitignore
├── rules/
│ ├── yara/
│ │ ├── cve_2025_25257_http.yar
│ │ ├── cve_2025_25257_webshell.yar
│ │ └── cve_2025_25257_payload.yar
│ ├── kql/
│ │ ├── 01_web_exploitation.kql
│ │ ├── 02_process_spawn.kql
│ │ ├── 03_command_execution.kql
│ │ ├── 04_file_creation.kql
│ │ ├── 05_persistence.kql
│ │ ├── 06_config_modification.kql
│ │ └── 07_threat_hunting.kql
│ ├── sigma/
│ │ ├── cve_2025_25257_sqli.yml
│ │ └── cve_2025_25257_process_spawn.yml
│ └── splunk/
│ ├── web_exploitation.spl
│ └── process_anomaly.spl
├── docs/
│ ├── iocs.md
│ ├── mitre_attack.md
│ └── false_positive_analysis.md
├── src/
│ ├── poc.py
│ └── lab/
│ └── nginx.conf
└── sysmon/
└── sysmon_config_snippet.xml
이 저장소는 방어 및 교육 목적으로만 제공됩니다. 모든 탐지 콘텐츠는 보안 팀이 익스플로잇 시도를 식별하고 대응하는 데 도움이 되도록 설계되었습니다. 이 저장소의 어떤 콘텐츠도 소유하지 않거나 테스트에 대한 명시적 서면 허가를 받지 않은 시스템에 사용하지 마십시오.
이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 LICENSE를 참조하십시오.
| 필드 | 세부 정보 |
|---|
| CVE | CVE-2025-25257 |
| EDB-ID | 52473 |
| Product | Fortinet FortiWeb |
| 영향받는 버전 | 7.0.x ~ 7.6.x |
| 취약점 유형 | 사전 인증 SQL 인젝션으로 인한 RCE |
| 공격 벡터 | HTTP API 엔드포인트 (인증 없음) |
| 인증 필요 | 없음 |
| CVSS Score | 9.8 (Critical) |
| 패치 가능 | 예, 7.6.1 이상으로 업그레이드 |
| 발표일 | 2026-02-04 |
| 연구자 | Milad Karimi (Ex3ptionaL) |
| ID | 카테고리 | 탐지 방법 | 소스 | 적용 범위 수준 |
|---|
| D-01 | 웹 요청 익스플로잇 | Authorization 헤더의 SQLi 패턴 | 웹/프록시 로그, WAF | 높음 |
| D-02 | 웹 요청 익스플로잇 | 유효한 토큰 없이 /api/fabric/device/status에 요청 | 웹 로그 | 높음 |
| D-03 | 프로세스 실행 이상 | 웹 서버 프로세스에 의해 생성된 셸 프로세스 | EDR / Sysmon | 높음 |
| D-04 | 프로세스 실행 이상 | nginx 또는 httpd의 sh, bash, python 자식 프로세스 | EDR | 높음 |
| D-05 | 의심스러운 파일 생성 | FortiWeb 웹 루트에 기록된 웹 셸 | EDR / 파일 무결성 | 중간 |
| D-06 | 의심스러운 파일 생성 | 웹 디렉토리의 예상치 못한 .php, .jsp, .py | 파일 모니터링 | 중간 |
| D-07 | 지속성 메커니즘 | 익스플로잇 후 Cron 작업 수정 | EDR / Auditd | 중간 |
| D-08 | 지속성 메커니즘 | SQLi 후 API를 통해 생성된 새 관리자 계정 | API / 인증 로그 | 높음 |
| D-09 | 컨테이너 활동 | FortiWeb 컨테이너 네임스페이스의 비정상적인 프로세스 | 컨테이너 런타임 | 중간 |
| D-10 | 위협 헌팅 | Fabric Connector API 호출 속도의 기준선 편차 | SIEM / 분석 | 중간 |
| D-11 | 위협 헌팅 | /api/fabric/에 반복적인 200/403 패턴을 보내는 소스 IP | 웹 로그 | 높음 |
| D-12 | 설정 변조 | 웹 요청 후 FortiWeb 구성 파일 변경 | 파일 무결성 / EDR | 높음 |
| D-13 | 설정 변조 | 어플라이언스의 /data/ 또는 /etc/에 예상치 못한 쓰기 | Auditd / EDR | 중간 |
| 파일 | 설명 |
|---|
01_web_exploitation.kql | Authorization 헤더의 SQL 인젝션 패턴 |
02_process_spawn.kql | 웹 서버의 비정상적인 자식 프로세스 |
03_command_execution.kql | 의심스러운 명령 실행 체인 |
04_file_creation.kql | 웹 디렉토리의 예상치 못한 파일 쓰기 |
05_persistence.kql | 지속성 메커니즘 지표 |
06_config_modification.kql | 설정 파일 변조 |
07_threat_hunting.kql | 고급 위협 헌팅 쿼리 |