Hallo, Apa kabar?
Dari tulisan saya kali ini, saya ingin sharing tentang bagaimana cara exploitasi celah keamanan Local File Disclosure pada suatu website.
Apa itu Local File Disclosure?
Vulnerability Local File Disclosure (LFD) ini sebenarnya konsepnya hampir mirip dengan LFI/RFI, akan tetapi yang membedakannya disini adalah kalau celah LFD ini file tidak dapat ditampilkan pada browser melainkan file hanya bisa kita download lalu baru kita bisa membaca.
Tapi ya intinya, setiap vulnerability tersebut memiliki perbedaan masing-masing.
Bagaimana bisa, Celah ini terjadi?
Biasanya fungsi yang memiliki resiko vulnerability LFD adalah semua fungsi yang dapat membaca suatu file. Kalau dalam bahasa pemrograman PHP itu sendiri diantaranya adalah seperti fungsi readfile(), File(), Fgets(), dan lain sebagainya.
Bahaya dari adanya LFD?
LFD ini termasuk celah yang memiliki severity high-critical, jadi bahayanya? Attacker dapat melihat source code dari website tersebut, sehingga dapat melihat file atau data sensitif.
Oke sekarang lanjut, time for pratice.
Cara Eksploitasi Local File Disclosure
Target: aHR0cHM6Ly9wYXN0ZWJpbi5jb20vcmF3L3lBMzBWZTJh==
DISCLAIMER: Mohon live target yang saya berikan untuk jadikan bahan belajar bersama jangan sampai dirusak ya boss, kalau ada apa-apa diluar itu semua bukan tanggung jawab saya.
Hal pertama yang saya lakukan adalah mencari endpoint celah tersebut. Setelah mencari dan akhirnya ketemu bug tersebut, kira-kira seperti ini.
URL/download.php?filename=christ-market.pdf
Pikir saya, Apakah web tersebut vuln lfd? Kita coba saja.
Gimana kalau kita sekarang coba untuk menginput file index.php lewat parameter yang tertera di url tersebut apakah file tersebut akan ke download atau tidak, jadi caranya seperti ini.
URL/download.php?filename=index.php
Kemudian jalankan, dan hasil output yang saya dapatkan tersebut seperti pada gambar bawah ini,
Why? Dari pesan tersebut menyatakan file tidak ditemukan atau tidak bisa diakses hahahahaha.
Not problem.
Untuk mengatasi masalah tersebut, kita juga bisa mengkombinasikan celah lfd ini dengan directory traversal atau bisa disebut dengan dot dot slash ../. Maksud Directory Traversal ini digunakan untuk melihat isi suatu file pada parent directory dimana kita sekarang atau singkatnya gini buat naik directory ke lebih atas.
Sudah paham?
Sekarang mari kita coba dengan naikan directory tersebut dengan menambahkan dot dot slash ../
URL/download.php?filename=../index.php
Setelah saya jalankan hasilnya sama saja file index.php belum ke download, sekarang coba naikan lagi dari semula ../index.php menjadi naik ke ../../index.php
URL/download.php?filename=../../index.php
Setelah itu jalankan dan boom saya berhasil, file tersebut ke download.
Sekarang buka file index.php tersebut menggunakan aplikasi editor, dari isi source code tersebut seperti ini.
Nah langkah selanjutnya tinggal mencari directory dimana kira-kira file database tersebut, singkat cerita disini saya berhasil mendownload file config dari website tersebut.
Dan disini saya dapat membaca isi file config yang berisi data sensitif seperti username, password dari database website tersebut.
Kalau sudah begini ya kita tinggal login pada database website tersebut wkwkwk.
Gimana menurutmu? Mudah kan.
Kalau celah ini sebenarnya gampang kita eksploitasi terlebih jika tidak ada web application firewall yang digunakan pada server tersebut.
Kalau celah ini sebenarnya gampang kita eksploitasi terlebih jika tidak ada web application firewall yang digunakan pada server tersebut.
Tapi sekarang jarang sekali menemukan bug yang seperti ini, coba deh kamu main ke exploit-db dll barang kali disitu ada.
Patch
Lakukan filter input, sehingga input yang dimasukan hanya dapat mengakses direktori yang telah kita tentukan saja.
Kode patch:
https://pastebin.com/raw/4eTeS20S
https://pastebin.com/raw/4eTeS20S
Sekian dari saya, semoga artikel pada kali mengenai Local File Disclosure sangat bermanfaat buat kalian semua. Maaf kalau ada penjelasan atau tulisan yang dapat kurang dimengerti.
Terimakasih, Matursuwun. Have Fun!