CARA KERJA LOCAL FILE INCLUSION

LFI berasal dari input pengguna yang tidak bersih. LFI sangat umum di situs web yang menjalankan php.

Berikut adalah contoh kode-php yang rentan terhadap LFI. Seperti yang bisa dilihat, kita hanya memasukkan parameter-url ke fungsi-kebutuhan tanpa filter. Jadi pengguna bisa menambahkan path ke file apa pun.

Dalam contoh ini pengguna bisa memasukkan karakter apapun dan mengambil file C:/xampp/apache/conf/extra/httpd-vhosts.conf.

http://example.com/page=C:/xampp/apache/conf/extra/httpd-vhosts.conf

Local File Inclusion

BYPASS FILE BER-EKSTENSI PHP

Pada beberapa kasus, kita tidak bisa menampilkan beberapa file karena penulisan script pada servernya. Berikut ini contoh tampilannya:

$file = $_GET[‘page’];
require($file . “.php”);

PHP ditambahkan ke nama file, ini berarti kita tidak akan dapat menemukan file yang kita cari. Semisal kita ingin melihat file .htaccess, tidak akan bisa karena file /dir/dir/.htaccess.php tidak ada.

Local File Inclusion

Namun, jika kita menambahkan nullbyte ke akhir string-serangan, .php tidak akan terbaca. Jadi saya menambahkan %00 ke akhir string serangan.

http://example.com/page=../../../../../../etc/passwd%00

Teknik ini biasanya disebut teknik nullbyte karena %00 adalah nullbyte. Teknik ini hanya berfungsi dalam versi PHP di bawah 5.3.

Cara lain untuk mengatasi masalah ini adalah dengan menambahkan tanda tanya pada string serangan. Dengan cara ini, barang-barang setelah ditafsirkan sebagai parameter dan karenanya dikecualikan. Berikut ini sebuah contoh:

http://example.com/page=../../../../../../etc/passwd?

BYPASS PHP-EXECUTION

Jadi, jika kita menemukan LFI, kita dapat dengan mudah membaca file .txt tetapi tidak dengan .php. Itu karena file tersebut dieksekusi oleh server web, karena akhir file mereka mengatakan bahwa itu berisi kode PHP. Kita dapat mem-bypass dengan menggunakan filter-php bawaan.

http://example.com/index.php?page=php://filter/convert.base64-encode/resource=index

Local File Inclusion

Di sini saya menggunakan filter-php untuk mengonversikan isi dari sebuah file PHP menjadi base64. Sekarang kita hanya perlu men-decode-nya. Simpan teks base64 ke dalam file dan kemudian jalankan: base64 -d namafile.php

TRICKS & CHEATSHEET

Ada juga beberapa trik dan hal lain yang membantu saya saat melakukan LFI.

LINUX

Jika kita membaca file langsung di browser, maka output file akan sulit dibaca. Cara mengatasinya adalah dengan men-download file tersebut dari terminal. Tetapi itu tidak akan berhasil jika ada login yang memblokirnya. Jadi solusinya adalah:

Ini adalah tata letak default dari file-file penting.
https://wiki.apache.org/httpd/DistrosDefaultLayout

“Di Linux, /proc menyertakan direktori untuk setiap proses yang berjalan, termasuk proses kernel, di direktori bernama / proc / PID, di mana PID adalah nomor proses. Setiap direktori berisi informasi tentang satu proses, termasuk: /proc/PID/cmdline, perintah yang awalnya memulai proses. “

https://en.wikipedia.org/wiki/Procfs
https://blog.netspi.com/directory-traversal-file-inclusion-proc-file-system/

/proc/sched_debug
/proc/mounts
/proc/net/arp
/proc/net/route
/proc/net/tcp
/proc/net/udp
/proc/net/fib_trie
/proc/version
/proc/self/environ

 

WINDOWS

File yang saya gunakan pada screenshot diatas bisa didapatkan di github.com/abaykan/Labs.

REFERENSI

sumber https://abaykan.com;

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s