Fortinet FortiWeb tiếp tục đối mặt với lỗ hổng tấn công từ xa mà không cần xác thực - CVE‑2025‑25257

Lưu Tuấn AnhLưu Tuấn Anh
4 min read

Tổng quan

Gần đây một lỗ hổng cực kỳ nghiêm trọng đã được Fortinet cảnh báo với mã định danh: CVE‑2025‑25257 và đã có PoC được công khai trên mạng gây ra rất nhiều rủi ro cho các sản phẩm Fortinet. Lỗ hổng này cho phép tin tặc thực thi mã từ xa mà không cần xác thực (pre‑auth RCE).

Một khi có quyền ghi file hệ thống thì tin tặc sẽ có thể:

  • Triển khai backdoor vĩnh viễn

  • Thay đổi cấu hình WAF

  • Phá hoại hoặc chuyển hướng lưu lượng của ứng dụng được bảo vệ

CVE-2025-25257 PoC FortiWeb, SQL Injection

Mô tả lỗ hổng

  • Mã lỗ hổng: CVE‑2025‑25257

  • Điểm CVSS: 9.6/10, cho thấy mức độ cực kỳ nghiêm trọng

  • Phạm vi ảnh hưởng: Lỗ hổng này ảnh hưởng đến hầu hết các phiên bản 7.x.x

    • FortiWeb 7.0.0 đến 7.0.10

    • FortiWeb 7.2.0 đến 7.2.10

    • FortiWeb 7.4.0 đến 7.4.7

    • FortiWeb 7.6.0 đến 7.6.3

  • Cơ chế tấn công: Kẻ tấn công có thể thực hiện Remote Code Executionkhông cần xác thực (pre-auth), thông qua API /api/fabric/device/status và điều này là cực kỳ nguy hiểm nếu thiết bị public Internet.

  • Hậu quả: Khi thực thi thành công lỗ hổng có thể cho phép kẻ tấn công kiểm soát hoàn toàn WAF.

Chi tiết lỗ hổng

Như đã đề cập bên trên thì lỗ hổng này liên quan tới SQL Injection không cần xác thực (CWE‑89) trên endpoint Fabric Connector. Chính vì thế đầu tiên kẻ tấn công sẽ thực hiện khởi tạo class SQLInjection và tiến hành gửi các payload SQL trong header Bearer

Trong trường hợp nếu các Payload trên trả về 200 hoặc server trả về HTTP 401 (lỗi xác thực nhưng không báo lỗi cú pháp SQL) thì tức là có thể tiếp tục khai thác các bước sau đó để leo thang.

Sau khi đã kiểm tra có thể thực hiện được các Payload Sql Injection, kẻ tấn công tiếp tục khai thác RCE – đây là một phần RCE kế thừa từ SQLInjection. Tại đây kẻ tấn công sẽ thực hiện tạo bảng fabric_user.a để chứa các dữ liệu webshell và ghi từng thành phần shell vào bảng

Sau đó kẻ tấn công sẽ ghi tất cả và xuất thành một file thực thi shell x.cgi

Sau đó một đoạn mã script Python sẽ được chạy bởi FortiWeb khi CGI trigger. Đây là một “gadget” để làm chmod +x + xoá dấu vết khi thực thi nhằm khó phát hiện bởi các nhà điều tra, đoạn mã đó sẽ được đặt trong thư mục FortiWeb sẽ auto chạy nó.

Cuối cùng kẻ tấn công sẽ thực hiện gửi lệnh tới shell bằng HTTP qua header User-Agent. Chính vì MySQL chạy dưới quyền root cho nên dẫn đến exploit có thể ghi file ở bất cứ đâu. Và đương nhiên nếu web shell hoặc script được chạy dưới root, kẻ tấn công sẽ chiếm quyền hệ thống hoàn toàn.

Kết luận

CVE‑2025‑25257 là một lỗ hổng rất nghiêm trọng trong đó kẻ tấn công sẽ thực hiện remote code execution trước khi xác thực, cho phép kiểm soát hoàn toàn hệ thống WAF. Nguy hiểm hơn là hiện tại POC đã có trên mạng chính vì thế mà nguy cơ cá nhân hoặc các tổ chức bị khai thác tích cực đang ở mức cao.

Các admin phải ưu tiên vá hệ thống ngay lập tức và triển khai các biện pháp giảm thiểu nếu chưa thể vá kịp. Việc bảo vệ WAF không chỉ bảo vệ ứng dụng mà còn bảo vệ cả mạng cơ sở hạ tầng của bạn.

Khuyến nghị

  1. Cập nhật phần mềm (Patching) – BẮT BUỘC
  1. Biện pháp tạm thời nếu chưa thể vá ngay
  • Vô hiệu hóa giao diện HTTP/HTTPS quản trị để chặn truy cập “pre-auth” đến endpoint /api/fabric/device/status.

  • Sử dụng tường lửa để chặn IP công cộng truy cập API Fabric.

Tham khảo

  1. Fortinet Releases Patch for Critical SQL Injection Flaw in FortiWeb (CVE-2025-25257)

  2. FortiWeb Pre-Auth RCE (CVE-2025-25257)

  3. Fortinet Releases Patch for Critical SQL Injection Flaw in FortiWeb (CVE-2025-25257)

0
Subscribe to my newsletter

Read articles from Lưu Tuấn Anh directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Lưu Tuấn Anh
Lưu Tuấn Anh