Directory Traversal, File Inclusion

From OnnoWiki
Revision as of 10:19, 15 September 2024 by Onnowpurbo (talk | contribs) (→‎Mencegah Directory Traversal dan File Inclusion)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Directory Traversal dan File Inclusion: Menjelajahi Sistem File secara Tak Terduga

Apa itu Directory Traversal?

Directory traversal adalah sebuah kerentanan pada aplikasi web di mana penyerang dapat memanipulasi input pengguna untuk mengakses file atau direktori di luar direktori yang seharusnya dapat diakses. Bayangkan seperti Anda sedang berjalan-jalan di sebuah mall, namun Anda bisa keluar dari jalur yang ditentukan dan masuk ke area-area terbatas seperti gudang atau ruang kontrol.

Contoh Sederhana:

Misalkan sebuah aplikasi web memiliki fitur untuk menampilkan profil pengguna berdasarkan ID. URL-nya mungkin seperti ini:

http://contoh.com/profil?user=123

Jika aplikasi tidak memvalidasi input user dengan benar, penyerang bisa mengganti nilai user menjadi

../../../../etc/passwd

Dengan cara ini, penyerang bisa membaca file passwd yang berisi informasi sensitif tentang pengguna sistem operasi.

Apa itu File Inclusion?

File inclusion adalah kerentanan di mana penyerang dapat memaksa server untuk mengeksekusi file yang tidak seharusnya dijalankan. Ini seringkali terjadi ketika aplikasi web memungkinkan pengguna untuk menentukan file mana yang akan di-include atau di-require.

Jenis File Inclusion:

  • Local File Inclusion (LFI): Penyerang memaksa server untuk membaca dan mengeksekusi file yang berada di server yang sama.
  • Remote File Inclusion (RFI): Penyerang memaksa server untuk membaca dan mengeksekusi file dari server lain.

Contoh Sederhana:

Misalkan sebuah aplikasi web memiliki fitur untuk menampilkan konten halaman berdasarkan nama file. URL-nya mungkin seperti ini:

http://contoh.com/halaman?file=home

Jika aplikasi tidak memvalidasi input file dengan benar, penyerang bisa mengganti nilai file menjadi

../../../../etc/passwd

Jika aplikasi menggunakan fungsi include atau require untuk memasukkan file, maka file `passwd` akan dibaca dan ditampilkan di halaman web.

Kombinasi Directory Traversal dan File Inclusion

Serangan directory traversal seringkali digunakan sebagai langkah awal untuk melakukan serangan file inclusion. Setelah penyerang berhasil menemukan lokasi file yang berisi kode, mereka dapat memasukkan file tersebut untuk mengeksekusi kode mereka sendiri.

Contoh Skenario Serangan:

  • Menemukan Lokasi File: Penyerang menggunakan directory traversal untuk menemukan lokasi file konfigurasi PHP (php.ini) atau file log yang berisi informasi sensitif.
  • Membaca File: Penyerang membaca isi file konfigurasi PHP untuk mencari tahu direktori tempat file PHP yang dapat dieksekusi disimpan.
  • Mengeksekusi Kode: Penyerang menggunakan file inclusion untuk memasukkan file PHP yang berisi kode jahat yang mereka buat.

Mencegah Directory Traversal dan File Inclusion

  • Validasi Input: Selalu validasi semua input pengguna untuk memastikan bahwa input tersebut sesuai dengan yang diharapkan.
  • Whitelist: Buat whitelist untuk file dan direktori yang diperbolehkan untuk diakses.
  • Relativize Path: Gunakan fungsi-fungsi yang disediakan oleh bahasa pemrograman untuk membuat path yang relatif terhadap direktori aplikasi.
  • Disable Functions: Nonaktifkan fungsi-fungsi yang berisiko seperti include, require, dan eval jika tidak diperlukan.
  • Chroot Jail: Batasi akses aplikasi ke sistem file dengan menggunakan chroot jail.

Kesimpulan

Directory traversal dan file inclusion adalah dua kerentanan yang sangat umum dan berbahaya. Dengan memahami bagaimana serangan ini bekerja, Anda dapat mengambil langkah-langkah yang diperlukan untuk mencegah serangan ini terjadi pada aplikasi web Anda.

Pranala Menarik