Share
## https://sploitus.com/exploit?id=8303BE55-E44B-5E3D-872A-70D5A2015497
# MLflow CVE-2023-1177 - PoC & Reproduce

Repo này chứa mã khai thác Proof-of-Concept (PoC) và hướng dẫn tái tạo lỗ hổng Local File Inclusion (LFI) trong MLflow, được định danh là [CVE-2023-1177](https://nvd.nist.gov/vuln/detail/CVE-2023-1177).

**Thông tin lỗ hổng:**

* **CVE ID:** CVE-2023-1177
* **Loại lỗ hổng:** Local File Inclusion (LFI) / Path Traversal
* **Phiên bản ảnh hưởng:** MLflow <= 2.1.1
* **Phiên bản đã vá:** MLflow >= 2.2.1 (2.2.1 là trong NVD nói nhưng theo mình thấy là từ 2.3.1)
* **Mô tả:** Lỗ hổng tồn tại trong cách endpoint `GET /model-versions/get-artifact` xử lý đường dẫn. Kẻ tấn công có thể tạo một phiên bản model (model version) với trường `source` được sửa đổi thành một đường dẫn cục bộ trên máy chủ (sử dụng `file:///`). Sau đó, bằng cách gọi endpoint `get-artifact` với tham số `path` trỏ đến một tệp mong muốn (tương đối so với `source` đã sửa đổi), kẻ tấn công có thể đọc nội dung của các tệp tùy ý trên hệ thống tệp của máy chủ với quyền của người dùng chạy MLflow server.

**Thiết lập môi trường:**

1.  **Cài đặt Conda:** Đảm bảo bạn đã cài đặt [Miniconda](https://docs.conda.io/en/latest/miniconda.html) hoặc [Anaconda](https://www.anaconda.com/products/distribution).
2.  **Tạo môi trường Conda:** Sử dụng tệp `environment.yml` được cung cấp trong repo này để tạo lại chính xác môi trường đã được sử dụng để thử nghiệm:
    ```bash
    conda env create -f environment.yml
    ```
    Thao tác này sẽ tạo một môi trường tên là `attack` (hoặc tên được định nghĩa trong file yml) với Python và tất cả các gói cần thiết (bao gồm `mlflow==2.1.1`, `requests`, `pandas`, `databricks-cli` và phiên bản `setuptools` tương thích).
3.  **Kích hoạt môi trường:**
    ```bash
    conda activate attack
    ```

**Các bước tái tạo lỗ hổng và PoC cùng một challenge nếu lười reproduce bạn có thể tham khảo qua đây**: [https://hackmd.io/@paultheal1en/SymHyk10kg](https://hackmd.io/@paultheal1en/SymHyk10kg)