Difference between revisions of "Directory Traversal, File Inclusion"
Onnowpurbo (talk | contribs) |
Onnowpurbo (talk | contribs) |
||
(2 intermediate revisions by the same user not shown) | |||
Line 28: | Line 28: | ||
'''Contoh Sederhana:''' | '''Contoh Sederhana:''' | ||
− | Misalkan sebuah aplikasi web memiliki fitur untuk menampilkan konten halaman berdasarkan nama file. URL-nya mungkin seperti ini: | + | Misalkan sebuah aplikasi web memiliki fitur untuk menampilkan konten halaman berdasarkan nama file. URL-nya mungkin seperti ini: |
+ | |||
http://contoh.com/halaman?file=home | http://contoh.com/halaman?file=home | ||
− | Jika aplikasi tidak memvalidasi input ''file'' dengan benar, penyerang bisa mengganti nilai ''file'' menjadi | + | 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== | ==Kombinasi Directory Traversal dan File Inclusion== | ||
Line 37: | Line 42: | ||
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. | 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== | ==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== | ==Kesimpulan== |
Latest revision as of 10:19, 15 September 2024
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.