Sploitus

Exploit for Improper Input Validation in Ui Unifi Os Server

githubexploit · 2026-08-22

Exploit Code

README173 lines
## https://sploitus.com/exploit?id=7DE61A96-49A3-5639-89C4-BE8191552CB3
# UniFi OS CVE Proof of Concept

Proof of concept untuk pengujian terotorisasi terhadap dua jalur yang diidentifikasi sebagai:

- `CVE-2026-34910`: auth bypass yang dapat berujung pada command injection dan remote code execution melalui handler pembaruan paket.
- `CVE-2026-34909`: path traversal yang dapat berujung pada pembacaan file secara arbitrer melalui alias `app-assets`.

Skrip ini ditujukan untuk validasi keamanan pada perangkat dan jaringan yang Anda miliki atau yang secara eksplisit Anda berwenang untuk uji. Jangan menggunakannya terhadap sistem pihak lain.

## Status

- Versi skrip: `1.0.0`
- Bahasa: Python 3
- Dependensi pihak ketiga: tidak ada
- Protokol: HTTP atau HTTPS
- TLS certificate verification: dinonaktifkan oleh skrip untuk mendukung perangkat dengan sertifikat self-signed

Nilai CVSS dan status kerentanan harus diverifikasi terhadap advisory vendor dan versi firmware yang relevan sebelum digunakan untuk laporan.

## Peringatan Keamanan

Skrip ini dapat mengirim perintah ke target dan membaca isi file dari target. Dampaknya dapat mencakup perubahan sistem, pengungkapan informasi sensitif, gangguan layanan, atau kerusakan data.

Sebelum menjalankan pengujian:

1. Dapatkan izin tertulis dan tentukan ruang lingkup pengujian.
2. Gunakan perangkat lab atau jadwal pemeliharaan yang disetujui.
3. Hindari perintah yang mengubah konfigurasi, menghapus data, atau mengganggu layanan.
4. Jangan membaca file sensitif kecuali hal tersebut secara eksplisit termasuk dalam ruang lingkup.
5. Simpan hasil pengujian secara aman dan hapus artefak proof setelah selesai.
6. Terapkan firmware atau mitigasi vendor yang sesuai setelah pengujian.

## Persyaratan

- Python 3.10 atau lebih baru
- Akses jaringan ke endpoint UniFi OS yang menjadi target
- Otorisasi untuk melakukan pengujian

Skrip hanya menggunakan standard library Python, sehingga tidak ada langkah instalasi paket tambahan.

## Instalasi

Klon repositori atau salin skrip ke mesin pengujian, kemudian masuk ke direktori proyek:

```bash
git clone 
cd CVE-2026-34910
```

Tidak diperlukan `pip install`. Pastikan interpreter yang digunakan sesuai:

```bash
python3 --version
```

## Penggunaan

Format umum:

```bash
python3 CVE-2026-34910.py  [command] [options]
```

`target` harus berupa URL dengan skema `http://` atau `https://`, misalnya `https://192.0.2.10:11443`.

### Probe bypass

Menjalankan probe tanpa mengirim perintah tambahan:

```bash
python3 CVE-2026-34910.py https://192.0.2.10:11443 --check
```

### Pengujian RCE

Argumen posisi kedua diperlakukan sebagai perintah yang dikirim ke target. Gunakan hanya perintah non-destruktif yang telah disetujui:

```bash
python3 CVE-2026-34910.py https://192.0.2.10:11443 "id"
```

Opsi `--proof` meminta target membuat file proof di `/tmp/PWNED_34910`:

```bash
python3 CVE-2026-34910.py https://192.0.2.10:11443 --proof
```

Verifikasi dan hapus file proof melalui prosedur akses yang telah disetujui. Jangan menganggap respons HTTP `200` sebagai bukti tunggal bahwa perintah berhasil.

### Pengujian pembacaan file

```bash
python3 CVE-2026-34910.py https://192.0.2.10:11443 --read /etc/hostname
```

Skrip mencetak paling banyak 800 karakter dari respons file.

### Mode verbose

Tambahkan `--verbose` atau `-v` untuk melihat detail permintaan dan respons:

```bash
python3 CVE-2026-34910.py https://192.0.2.10:11443 --check --verbose
```

Perhatikan bahwa output verbose dapat memuat URL, parameter, atau data respons yang sensitif.

## Opsi Command-Line

| Opsi | Keterangan |
| --- | --- |
| `target` | URL target dengan skema HTTP atau HTTPS |
| `command` | Perintah yang diuji melalui jalur CVE-2026-34910 |
| `--check` | Menjalankan probe auth bypass saja |
| `--proof` | Meminta pembuatan file proof di target |
| `--read PATH` | Menguji pembacaan file melalui path traversal |
| `-v`, `--verbose` | Menampilkan informasi debug tambahan |
| `-h`, `--help` | Menampilkan bantuan penggunaan |

Gunakan hanya satu mode operasi pada setiap eksekusi. Program mengembalikan kode keluar `0` jika operasi dianggap berhasil, `1` jika target tidak terindikasi rentan atau argumen tidak lengkap, dan `2` jika terjadi kesalahan tak terduga. Interupsi pengguna mengembalikan `130`.

## Cara Kerja Tingkat Tinggi

1. Skrip memvalidasi bahwa target memiliki skema dan hostname.
2. Skrip mengirim permintaan ke jalur traversal auth yang dikodekan.
3. Mode `--check` memeriksa respons untuk marker yang menunjukkan handler tercapai.
4. Mode perintah membentuk nilai `pkg_name` dan mengirimkannya ke endpoint pembaruan paket.
5. Mode `--read` membentuk path traversal menuju alias `app-assets` dan menampilkan respons secara terbatas.

Implementasi berada seluruhnya di [CVE-2026-34910.py](CVE-2026-34910.py).

## Keterbatasan dan Interpretasi Hasil

- Probe berbasis marker bukan verifikasi komprehensif dan dapat menghasilkan false positive atau false negative.
- Respons HTTP dipengaruhi firmware, reverse proxy, konfigurasi jaringan, dan implementasi endpoint.
- Status HTTP `200` pada mode RCE menunjukkan permintaan diterima oleh handler, bukan jaminan bahwa perintah selesai sesuai harapan.
- Skrip menonaktifkan verifikasi sertifikat TLS. Jalankan hanya pada jaringan pengujian dan jangan menganggap koneksi tersebut memberikan autentikasi server.
- Timeout HTTP tetap pada 15 detik dan tidak dapat diubah melalui CLI.
- Skrip tidak menyediakan remediation otomatis.

## Remediasi

Untuk perangkat yang berada dalam ruang lingkup pengujian:

1. Identifikasi versi UniFi OS dan model perangkat.
2. Periksa advisory keamanan resmi Ubiquiti untuk status perbaikan dan versi firmware yang disarankan.
3. Perbarui perangkat melalui prosedur change management yang disetujui.
4. Batasi akses jaringan ke antarmuka administrasi dan pantau log untuk permintaan yang mencurigakan.
5. Ulangi validasi hanya setelah ada izin dan rencana pengujian pascaperbaikan.

## Pelaporan

Laporan pengujian sebaiknya mencatat:

- Model perangkat, versi UniFi OS, dan waktu pengujian.
- Alamat target yang disamarkan bila laporan dibagikan di luar tim.
- Mode dan argumen yang digunakan.
- Kode respons dan ringkasan hasil tanpa menyebarkan data sensitif.
- Bukti minimum yang diperlukan untuk reproduksi.
- Dampak, tingkat keyakinan, dan rekomendasi remediasi.

Untuk pelaporan kerentanan yang bertanggung jawab, gunakan kanal keamanan resmi vendor dan koordinasikan pengungkapan sesuai kebijakan yang berlaku.

## Lisensi

Belum ada lisensi yang ditentukan untuk proyek ini. Tambahkan file lisensi sebelum mendistribusikan atau menggunakan kode ini dalam proyek lain.

## Penulis

Gagaltotal666 - GhostGTR666

Repositori terkait: [github.com/gagaltotal](https://github.com/gagaltotal)