Anda di halaman 1dari 13

LABORATORIUM PEMBELAJARAN ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER


UNIVERSITAS BRAWIJAYA

BAB : WEB ― FILE UPLOAD


NAMA : EURICO KRISNA WIJAYA
NIM : 195150207111053
TANGGAL : 02/11/2021
ASISTEN : MUHAMMAD FIKRI ASHARI

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

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

2. Uncompress file yang telah didownload tadi dan bukalah file


uploader.php. Jelaskan bagaimana cara file uploader.php itu bekerja:

Tampilan ada uploader.php.


Pada kode program, terdapat kode program yang memiliki fungsi untuk
menerima input berupa file yang nantinya akan diupload oleh pengguna
yang kemudian file tersebut akan dilakukan pengecekan terlebih dahulu
dan selanjutnya akan menghasilkan sebuah output mengenai tipe file
yang diunggah oleh pengguna.

3. Cobalah masukkan gambar pada web upload tersebut, apakah gambar


ditampilkan?
Tampilan pada saat memasukkan jpeg.

Tampilan pada saat menekan tombol “Upload image”.

Tampilan pada saat dibuka.


Pada saat file diunggah dan dalam bentuk jpeg maka akan muncul
keluaran output yaitu “File is an image -image.jpeg” yang menandakan
bahwa file merupakan dalam bentuk jpeg.

4. Coba masukkan file .txt pada web upload tersebut, apakah dapat
dilakukan?
Tampilan pada saat memasukkan txt.

Tampilan pada saat menekan tombol “Upload image”.

Tampilan pada saat dibuka.


Pada saat file diunggah dan dalam bentuk txt dan tidak menunjukkan
apapun karena file bukan merupakan dalam bentuk jpeg maupun png.

5. Sekarang, buatlah script php dan tanamkan script melalui fungsionalitas


upload dengan cara mengubah ‘Image Files’ menjadi ‘All Files’ saat
memilih file yang ingin diupload:
<?php
echo shell_exec($_GET['cmd']);
?>

Tampilan pada saat memasukkan script.php.

Tampilan pada saat menekan tombol “Upload image”.

6. Dicoba buka
Tampilan pada saat dibuka.
Pada saat file diunggah dan dalam bentuk php dan tidak menunjukkan
apapun karena file bukan merupakan dalam bentuk jpeg maupun png,
namun masih dapat diakses dan didapatkan sebuah alamat yaitu
/var/www/html/file_upload/upload.

7. Buka kembali uploader.php, tambahkan whitelist content type seperti


berikut:
a. Setelah <?php

$whitelist = array('image/jpeg', 'image/png');

b. Sebelum // Upload

if(!in_array($_FILES["fileToUpload"]["type"], $whitelist)){
die("file must be an image");
}

Coba kembali mengupload file bukan image dan lihat apa yang terjadi
Tampilan pada saat memasukkan txt.

Tampilan pada saat menekan tombol “Upload image”.


Pada saat memasukkan file yang bukan merupakan sebuah jenis file
png maupun jpeg maka tidak terjadi apapun karena telah terdapat
whitelist yang telah ditentukan sebelumnya dan file yang selain berjenis
png maupun jpeg tidak dapat diupload.

8. Buka burp suite. Dan klik pada tab Proxy, Intercept:

9. Sebelum melakukan intercept data, atur manual proxy pada browser.


Sebagai contoh, jika menggunakan browser Mozilla Firefox 68.9.0esr,
proxy dapat diatur dengan langkah berikut:
a. Buka Preferences pada firefox (bisa diketik di url dengan
about:preferences)
b. Pada tab general, scroll kebawah hingga menemukan network
settings.
c. Klik tombol settings, klik radio button Manual configuration dan isi
data sebagai berikut:
d. Klik ok dan proxy siap digunakan

e. Catatan, jangan lupa menonaktifkan local proxy jika sudah


digunakan supaya tidak ada gangguan saat berinternet

10. Kirimkan kembali script php yang telah kita buat dengan kondisi intercept
menyala.
11. Ubahlah Content-Type menjadi kategori gambar sesuai dengan whitelist
yang kita buat tadi untuk membypass nya. Setelah itu klik tombol
Forward. Jelaskan mengapa hal itu dapat terjadi

Tampilan saat mengubah Content Type.


Pada burp suite, dilakukan intercept kepada website, pada whitelist
yang hanya mengijinkan file berbentuk jpeg maupun png, maka
melakukan pengecohan jenis file menjadi image/jpeg atau image/png
untuk dapat melakukan upload file tersebut.

12. Buka kembali uploader.php dan tambahkan blacklist diatas //Upload file.

$ext = pathinfo($target_file, PATHINFO_EXTENSION);


if ($ext == 'php'){
die("You such a hacker!");
}
Upload kembali script php yang kita miliki dengan bantuan burp suite
dengan metode bypass sebelumnya. Apa yang terjadi?

Tampilan pada saat menekan tombol “Upload image”.


Pada saat kembali melakukan cara yang sebelumnya, sekarang sudah
tidak dapat karena file yang berjenis php telah masuk ke dalam
blacklist sehingga tidak dapat melakukan upload file.

13. Bukalah php[nomor versi].conf pada web server yang digunakan. Jika
kalian menggunakan apache2 pada sistem operasi linux, maka
tempatnya ada di /etc/apache2/mods-available.

Tampilan pada /etc/apache2/mods-available.


Perhatikan baris pertama pada file tersebut. Baris tersebut merupakan
aturan dengan skema regular expression sederhana yang menjelaskan
tentang file file dengan ekstensi apa yang akan ditangani oleh php.

Jenis ekstensi file yang dapat ditangani oleh apache2 adalah phtml,
phar, dan php.

14. Bypass kembali whitelist dan juga blacklist yang telah kita bangun.
Blacklist bisa dilewati (bypass) dengan mengganti ekstensi dengan
ekstensi yang belum diblacklist pada file uploader.php (bisa langsung dan
bisa diubah di burp suite proxy)

Tampilan pada saat mengubah jenis file php menjadi phtml.

Tampilan pada saat menekan tombol “Upload image”.


Pada saat jenis file yang dimasukkan adalah phtml maka dapat
melakukan upload file, hal tersebut disebabkan karena yang masuk ke
dalam daftar blacklist hanyalah php, sedangkan jenis yang lain masih
dapat memungkinkan untuk mengakses.
15. Sekarang, tambahkan file .htaccess pada direktori upload. copy-paste
teks dibawah ini dan cobalah untuk menjalankan exploit yang telah ada:

Tampilan pada .htasccess.


php_flag engine off.

Tampilan pada saat dibuka.


Pada saat dicoba untuk dibuka maka yang muncul ada adalah kode
program dari script.php, hal tersebut dikarenakan terdapat php_flag
engine off yang memiliki fungsi untuk menghentikan berjalannya
script.php.
*Catatan: Pastikan file konfigurasi apache2 pada lokasi
/etc/apache2/apache2.conf (Untuk yang memakai xampp/lampp bisa
menyesuaikan) telah diatur menjadi AllowOverride all (Jangan lupa
untuk restart apache2 setelah mengubahnya).
16. Hapus .htaccess dan tambahkan ekstensi gambar atau yang terdefinisi
pada file php.conf sebelumnya secara manual di uploader.php. Cobalah
kembali mengupload exploit dan menjalankannya.

Tampilan pada saat menekan tombol “Upload image”.

Tugas
1. Carilah metode pencegahan file upload lainnya di internet dan jelaskan
secara singkat.

Metode untuk mencegah terjadinya file yang tidak diizinkan untuk


diupload adalah hanya mengizinkan ekstensi file tertentu dengan
melakukan pembuatan daftar whitelist ekstensi yang diperbolehkan
untuk diupload, berikutnya dengan melakukan sebuah pembatasan
ukuran maupun panjang karakter nama dari suatu file untuk terhindar
dari penyusupan script, kemudian melakukan autentikasi pengguna
website sebelum mengakses, berikutnya dapat dilakukan pengacakan
nama file yang diunggah agar tidak mudah untuk didapatkan akses
server, dan yang terakhir menyimpan file hasil upload pada folder yang
tidak mudah untuk diakses atau pemberian akses yang terbatas.

2. Apakah penggunaan framework akan melindungi kita dari unrestricted file


upload? Jelaskan pendapatmu.
Penggunaan framework dapat membuat pengguna dan pengembang
menjadi lebih aman dan terlindungi terhadap file yang tidak diizinkan
untuk diupload atau unrestricted file upload, akan tetapi pengembang
diminta untuk memastikan framework tersebut mampu untuk digunakan
dalam mencegah adanya upaya penyerangan seperti unrestricted file
upload.

Anda mungkin juga menyukai